Ich habe Steam für mich entdeckt

Daher heißt es ab jetzt endgültig: Tschüß Windows!

Seitdem meine Windows-Festplatte letztes Jahr den Geist aufgegeben hat, hatte ich mit Divine Divinity ein paar Sachen unter Ubuntu ausprobiert, und war beim Wine stehen geblieben. Nachteil: Ich konnte das Spiel nicht im Vollbildmodus spielen, weil es recht instabil war. Das Spiel ist häufig abgestürzt, bis ich beschlossen habe, lieber in dem kleinen Fenster zu spielen.

Ich hatte lange gedacht, ich sollte dann weiter mit der Installation von anderen Spielen in Wine vorgehen, wie Baldur’s Gate. Eine Anleitung hatte ich mir sogar ausgesucht, aber dazu bin ich doch nie gekommen. Zu aufwendig.

In letzter Zeit dachte ich, ich sollte mir vielleicht einen neuen Rechner mit Windows 10 kaufen. Um zu schauen, ob ich meine alte Spiele noch drauf installieren kann. Wenn die CDs noch heil sind. Das ist auch etwas, was mir ein bisschen Sorgen macht. CD-Laufwerke wird es nicht immer geben. Und wenn die CDs unlesbar werden, was mache ich aus meinen Spielen?

Und eigentlich, die ganze Zeit gab’s schon Steam! Wo ich meine Lieblingsspiele auch für Linux herunterladen kann!!! Gut, der Nachteil ist, dass man die Spiele neu kaufen muss. Obwohl ich die schon habe. Aber sie auf CDs für Windows zu haben, und deswegen nicht mehr spielen zu können, ist, wie wenn ich die CDs nicht mehr hätte. Bei Steam sind die Spiele immer verfügbar, selbst wenn ich Ubuntu neu installieren muss. Die Spiele bleiben in meinem Konto (so lange es Steam gibt).

Ich habe Baldur’s Gate Enhanced Edition getestet. Die Installation lief in Steam unglaublich schnell und unkompliziert. Als angenehme Überraschung: Das Spiel wurde noch verbessert! Ja, klar, Enhanced Edition halt, der Name sagt es schon. Das Spielen ist komfortabler geworden, zum Beispiel löst jetzt das Öffnen vom Inventar die Pause aus (vorher konnte man währenddessen angegriffen werden)… Und es gibt neue Charaktere.

Es kann also gut sein, dass ich mich hier rar mache. Wenn ich nicht fleißig mein MVV-Tagebuch pflege, beseitige ich das Chaos in Faerûn. Es ist eh zu warm, um etwas anderes zu unternehmen.


Dieser Beitrag ist ursprünglich auf Meckereien & Co. erschienen.

Werbeanzeigen

USB-Stick plötzlich nur noch lesbar

Ich habe seit Anfang des Jahres viele Fotos mit meiner Kamera gemacht. Meistens ging es mir darum, meiner weit entfernten Familie über Facebook meine neue Umgebung zu zeigen. Bevor ich die Fotos hochlade, bearbeite ich sie kurz mit Gimp. Ich habe noch kein Bild aufgenommen, bei dem das Nachschärfen keine Verbesserung gebracht hat.

Gimp kann man auf allen gängigen Betriebssystemen installieren. Seitdem meine Windows-Festplatte den Geist aufgegeben hat, bearbeite ich jedoch alle meine Bilder unter Ubuntu. Ich habe einen MacBook, aber das Bearbeiten von Bildern ist damit ein Graus. Den MacBook habe ich von meiner alten Arbeitsstelle übergangsweise geliehen bekommen, um Nachfragen über Programm #1 zu beantworten, bis ein Nachfolger gefunden wird. Ich hasse ja Mac. Der MacBook kommt jedoch häufig zum Einsatz, weil mein Ubuntu-Rechner nicht WLAN-fähig ist. Ich benutze immer noch mein Handy als Hotspot.

Was ich also mit meinen Fotos mache:

  1. sie aus der Kamera-Karte zum Ubuntu-Rechner kopieren,
  2. sie dort mit GIMP bearbeiten,
  3. sie nach Bearbeitung auf einem USB-Stick kopieren,
  4. sie vom Stick zum MacBook kopieren, und anschließend
  5. sie auf sozialen Medien hochladen.

Nun der Hacken: Plötzlich hat Ubuntu behauptet, ich könnte nichts auf USB-Sticks kopieren, weil alle schreibgeschützt wären. Das stimmt gar nicht, auf dem Mac kann ich alles drauf schreiben, was ich will. Warum es plötzlich alle meine USB-Sticks betrifft, weiß ich nicht. Vielleicht mag es Ubuntu nicht, wenn die Sticks auf so vielen Betriebssystemen benutzt werden. Mac hinterlässt auf Sticks jede Menge Müll in Form versteckter Dateien. Formattieren konnte das Problem nicht beheben: Weil die Sticks angeblich schreibgeschützt sind, kann Ubuntu sie nicht formattieren. Auf dem MacBook formattieren habe ich nicht probiert. Ich habe zuerst nach einer nicht so radikalen Lösung gesucht. Die habe ich hier gefunden.

Mit dem befehl lsblk kann man sich im Terminal alle verbundenen Laufwerke anzeigen lassen. Das Ergebnis sah bei mir so aus (der Nutzername wurde durch user ersetzt):

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931,5G 0 disk
├─sda1 8:1 0 100M 0 part
├─sda2 8:2 0 292,9G 0 part
├─sda3 8:3 0 345,6G 0 part
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 97,7G 0 part
sdb 8:16 0 1,8T 0 disk
├─sdb1 8:17 0 15,9G 0 part
│ └─cryptswap1 252:0 0 15,9G 0 crypt [SWAP]
├─sdb2 8:18 0 1K 0 part
├─sdb5 8:21 0 77,7G 0 part /
└─sdb6 8:22 0 1,7T 0 part /home
sdc 8:32 1 3,8G 0 disk
└─sdc1 8:33 1 3,8G 0 part /media/user/kamera_karte
sdd 8:48 1 57,7G 0 disk
└─sdd1 8:49 1 57,7G 0 part /media/user/usb_stick
sr0 11:0 1 649,5M 0 rom /media/user/LARIAN_DIV3
sr1 11:1 1 1024M 0 rom

wodurch ich erfahren habe, dass mein Stick, mit dem Pfad /media/user/usb_stick, den internen Namen sdd1 trägt. Das kann sich immer ändern, daher ist dieser erster Schritt wichtig.

Als zweiter Schritt hebt man mit dem Befehl sudo hdparm -r0 /dev/sdd1 den Schreibschutz auf. Was dieser Befehl raus spuckt:

/dev/sdd1:
setting readonly to 0 (off)
readonly = 0 (off)

Es scheint also ohne Problem zu klappen, aber das Kopieren von Dateien lief bei mir in Nautilus mit der Maus immer noch nicht.

Es könnte sein, dass einige Sektoren auf dem Stick beschädigt sind. Das prüft man mit dem Befehl sudo fsck /dev/sdd1 und repariert es wenn nötig mit dem interaktiven Output:

fsck from util-linux 2.27.1
fsck.fat 3.0.28 (2015-05-16)
0x41: Dirty bit is set. Fs was not properly unmounted and some data may be corrupt.
1) Remove dirty bit
2) No action
? 1
There are differences between boot sector and its backup.
This is mostly harmless. Differences: (offset:original/backup)
3:53/4d, 4:59/53, 5:53/57, 6:4c/49, 7:49/4e, 8:4e/34, 9:55/2e, 10:58/31
, 91:fc/33, 92:31/c9, 93:c9/8e, 94:8e/d1, 95:d1/bc, 96:bc/f8, 97:76/7b

[Geschnitten weil es sonst zu lang wird]

, 501:00/4f, 502:00/4f, 503:00/54, 504:fe/20, 505:02/53, 506:b2/59
, 507:3e/53, 508:18/00, 509:37/00
1) Copy original to backup
2) Copy backup to original
3) No action
? 3
/System Volume Information
Has a large number of bad entries. (85/93)
Drop directory ? (y/n) y
Reclaimed 2 unused clusters (65536 bytes).
Free cluster summary wrong (1810971 vs. really 1810973)
1) Correct
2) Don't correct
? 1
Perform changes ? (y/n) y
/dev/sdd1: 998 files, 78197/1889170 clusters

Es waren also ganz schön viele Fehler, die ich entfernt habe. Das Kopieren von Dateien auf dem Stick klappte danach im Nautilus immer noch nicht und erfolgte nur durch den Terminal:

cp -r ~/Pictures/20180408 /media/user/usb_stick/

zum Beispiel, wo ich das ganze Verzeichnis 20180408 mit vielen Bildern drin rekursiv auf dem Stick kopiere.

Damit ist das Problem leider nicht für immer gelöst, weil Ubuntu bei der nächsten Benutzung vom Stick wieder behauptet, der Schreibschutz wäre aktiv. Vermutlich ist es ein Zeichen, dass die Sticks alt werden und irgendwann gar nicht mehr zu benutzen sind.


Dieser Beitrag ist ursprünglich auf Meckereien & Co. erschienen.

Divine Divinity unter Ubuntu spielen

Es geht! Ohne vorher Windows aus der VirtualBox zu starten! Und wenn es mit den anderen Spielen auch so einfach geht, sage ich Tschüß Windows, die Festplatte wird für Ubuntu neu formatiert, Tschüß VirtualBox, Hallo Wine! Ich habe gerade Wine komplett entfernt und reinstalliert, um mir die nötigen Schritte festzuhalten und um eine Einweisung zu haben, damit ich die andere Spiele installieren kann. Die Einleitung basiert zum größten Teil auf diese.

Wine ist ein Programm, mit dem man andere Programme, die für Windows geschrieben wurden, auch unter Linux zum Laufen bringen kann. Und begeistert bin ich auch, weil Programme, die mit Wine laufen, von weitem nicht so langsam sind wie unter Windows in der VirtualBox. Ich merke einen leichten Unterschied zu Divine Divinity unter nativem Windows, aber man kann damit leben.

Wie man Wine unter Ubuntu installiert, ist super einfach: sudo apt-get install wine im Terminal eingeben. Dabei wird ein neues verstecktes Verzeichnis .wine im Home-Verzeichnis angelegt. Ich habe nach der Wine-Installation den Rechner neu gestartet, weil ich die Empfehlung dazu von Ubuntu selbst bekommen habe. Gemäß dieser Anleitung habe ich noch Änderungen an den Einstellungen von Wine vorgenommen, mit dem Befehl winecfg:

Der nächste Schritt ist, den Inhalt der drei CDs vom Spiel in einem Verzeichnis zu kopieren. In Prinzip könnte man dieses Verzeichnis egal wo erstellen, aber es hat bei mir während der Installation vom Spiel nicht geklappt, wenn es nicht als Unterverzeichnisse von .wine angelegt wurde. Also habe ich unter .wine das Verzeichnis DD angelegt, und dort den Inhalt meiner CDs kopiert. Einfach durch „drag and drop“ von einem Fenster zum anderen. Die Spiel CD habe ich zuletzt kopiert, weil sie sich während der Installation explizit im CD-Laufwerk befinden muss.

Bevor man dann mit der Installation startet, sollte man noch unter Wine WinRAR installieren, weil es vom Installer von Divine Divinity benötigt wird. Auf der Download-Seite kann man die richtige Version für die Architektur vom Rechner und die gewünschte Sprache vom Programm wählen. Ich habe die Datei winrar-x64-550.exe unter meinem ~/Downloads/ Verzeichnis gespeichert. Dann im Terminal zu diesem Verzeichnis wechseln: cd ~/Downloads und WinRAR für Wine installieren: wine winrar-x64-550.exe. (Der letzte Punkt ist das Ende vom Satz und kein Teil vom Befehl.) Ich hatte selber dabei eine kryptische Fehlermeldung: err:winediag:SECUR32_initNTLMSP ntlm_auth was not found or is outdated. Die anderen (vielen) fixme Zeilen im Output von Wine kann man sonst ignorieren, aber eine Zeile die mit err anfängt mag ich gar nicht. Google hat mir verraten, dass ich vorher winbind hätte installieren sollen: sudo apt-get install winbind, und danach nochmal wine winrar-x64-550.exe ausgeführt, und alles war gut. Danach kann man winrar-x64-550.exe unter ~/Downloads/ löschen.

Jetzt kann es mit der Installation von Divine Divinity weiter gehen. Dafür, zuerst zum Verzeichnis DD wechseln: cd ~/.wine/DD, und den Befehl wine Setup.exe ausführen. Im Installationswizard sollten alle Standardeinstellungen behalten werden, außer zum Schluß, wo beide Häkchen für die Erstellung einer Verknüpfung und die Installation von DirectX weg genommen werden sollten. Das Spiel sollte nach der Installation noch nicht gestartet werden. Da meine Spielversion schon 1.0034A ist, brauchte ich den Patch nicht zusätzlich zu installieren. Es trifft sich gut, weil der Patch nicht mehr zu finden ist. Zum Schluß sollte man einige Zugriffsrechte richtig setzen. Zum Run-Verzeichnis von Divine Divinity wechseln: cd "~/.wine/drive_c/Program Files (x86)/Divine Divinity/Run" (die " Zeichen sind wichtig, weil unter Windows Leerzeichen Teil vom Pfad sein dürfen, was in Linux gar keine gute Idee ist). Dann: chmod +rw -R *. Als letzte Aktion habe ich, immer noch im Run-Verzeichnis, die Konfiguration vom Spiel gesetzt: wine configtool.exe. Dann erscheint das Fenster, das man sonst beim ersten Starten des Spieles sieht. Ich habe meine Auflösung auf 1024×768 mit Direct 3D gestellt. Es scheint damit gut zu funktionieren.

Zum Spielen habe ich mir ein Alias in meiner ~/.bashrc Datei gesetzt: alias play_divine_divinity='cd "~/.wine/drive_c/Program Files (x86)/Divine Divinity/Run"; wine div.exe'. Ich brauche nur noch im Terminal play_divine_divinity einzugeben, und das Programm startet. Es ist noch nicht perfekt, weil man dafür die Spiel-CD im Laufwerk braucht. Ist sie nicht da, wird man beim Starten vom Spiel danach gefragt, aber nach dem Einschieben der CD startet Divine Divinity immer noch nicht, und meine einzige Lösung war, aus einer anderen virtuellen Konsole (Ctrl+Alt+F1) das Spiel zu killen, zurück zu meiner Konsole (Ctrl+Alt+F7) zu gehen, festzustellen, dass ich mit einer unbrauchbaren Bildschirmauflösung nichts mehr machen konnte, und wieder in der anderen virtuellen Konsole den Rechner neu zu starten (shutdown -r now) — nicht wirklich optimal. (Das war bevor ich in den Einstellungen von Wine ein Häkchen bei Emulate a virtual desktop gesetzt habe.) Am besten ersetze ich bei Gelegenheit die Ausführung vom Alias durch ein kleines selbst-geschriebenes Skript, das vorher fragt, ob die Spiel-CD im Laufwerk ist, bevor das Spiel gestartet wird.

Wenn alles wie gewünscht läuft, kann man das Verzeichnis ~/.wine/DD löschen, es wird nicht mehr benötigt.


Dieser Beitrag ist ursprünglich auf Meckereien & Co. erschienen.

Windows aus der VirtualBox

Ich weiß nicht, was ich für einen Mist gebaut haben muss, aber gestern konnte ich plötzlich Windows 7 nicht mehr starten. Der Mainboard-Bildschirm erschien beim Hochfahren vom Rechner wie gewöhnt, danach hatte ich den schwarzen Bildschirm mit der Meldung, „Windows wird gestartet“, und dann wurde der Bildschirm ganz schwarz, mit dem Mauskursor in der Mitte, und dann passierte nichts. Gar nichts. Selbst nach zehn Minuten. Mir blieb nichts anderes übrig, als den Power-Knopf so lange zu drücken, bis der Rechner aus ging.

Beim nächsten Hochfahren ging es genau so. Und beim Nächsten. Irgendwann bekam ich die Auswahl zwischen normalem Start oder Starthilfe. Der abgesicherte Modus war komischerweise nicht vorhanden. Die Starthilfe wurde gewählt, aber sie konnte das Problem nicht beheben und alles, was man danach machen konnte war, den Rechner ausschalten zu lassen. Toll. Die Systemwiederherstellung, die ich vor einem Monat gemacht hatte, konnte ich also nicht nochmal durchführen.

Was ich noch machen konnte war, bevor Windows tut, als ob es hochfahren würde, die F11-Taste so lange zu drücken, bis ich ins Bootmenü komme. Von dort aus kann ich die Festplatte, wo Ubuntu installiert ist, auswählen, und Ubuntu starten. Ich denke, es war damals eine geniale Überlegung von mir, Ubuntu grundsätzlich auf eine neue, getrennte Festplatte zu installieren, obwohl die Windows-Festplatte noch viel Platz hat. Ubuntu funktioniert immer noch einwandfrei, und ich kann problemlos auf die Windows-Partitionen zugreifen und die Dateien lesen — selbst die vom Ehemann, die unter seinem Konto liegen und auf die ich unter Windows keine Leseberechtigung habe. Also scheint die Festplatte noch in Ordnung zu sein. Vielleicht ist der Boot Master Record beschädigt, und ich könnte versuchen, ihn mit dieser Anleitung wieder in Ordnung zu bringen. Vorausgesetzt, ich schaffe es, eine minimale Windows-Version mit Terminal zum Laufen zu bringen. Es erschien mir als eher unwahrscheinlich.

„Brauche ich wirklich Windows?“ habe ich mich gefragt. Ich benutze es nur noch, weil meine Lieblingsspiele auf Linux-Systemen nicht laufen. Ich gebe zu, ab und zu spiele ich immer noch sehr gerne super altmodische Spiele wie Baldur’s Gate, Neverwinter Nights oder Divine Divinity zum Beispiel. Alle mindestens fünfzehn Jahre alt, aber heutzutage findet man keine Rollenspiele mit solchen vielfältigen Geschichten mehr — sagte vor kurzem noch selbst der junge HiWi, der in unserer Gruppe arbeitet. Und wenn Diablo I nicht so schlecht mit den heutigen Grafikkarten aussehen würde, würde ich es auch noch spielen. Nachdem ich eine Sicherheitskopie von Spielständen auf der Ubuntu-Festplatte gemacht habe, habe ich mich mit virtuellen Maschinen auseinandergesetzt. Fertig bin ich noch nicht. Was ich bis jetzt gemacht habe, mit Hilfe dieser tollen YouTube-Anleitung (auf Englisch):

  • VirtualBox auf Ubuntu installiert: sudo apt-get install virtualbox (Version 5.0.40, nicht so aktuell wie die aktuellste Version auf https://www.virtualbox.org/wiki/Downloads).
  • VirtualBox Extension Pack für die VirtualBox Version 5.0.40 installiert (wenn man die aktuellste Version aufs Versehen installiert, bekommt man eine Fehlermeldung).
  • Eine geeignete ISO Datei für meine Windows-Version heruntergeladen. Die Installations-CD hatte ich zwar immer noch, aber ich fand es bequemer so. Dafür braucht man auch einen Lizenz-Schlüssel, den man beim Kauf vom Windows bekommen hat. Es liegt bei mir schon fünf Jahre her, ein Wunder, dass ich den Schlüssel trotz zwei Umzüge noch finden konnte.
  • Windows 7 in der VirtualBox gemäß der YouTube-Anleitung installiert, mit der Ausnahme, dass ich meinen Lizenz-Schlüssel eingegeben habe. Windows habe ich auf Englisch installiert, also sollte man für deutsche Versionen eventuell die Begriffe unten übersetzen. Da ich acht Prozessoren habe, habe ich vier davon Windows gegeben (unter „Settings“). Ich habe ebenfalls die Hälfte vom Speicher für Windows frei gegeben, und den ganzen Video-Speicher erlaubt. Man muss aufpassen, dass dem Host-Betriebssystem (Ubuntu) genug Ressourcen zu Verfügung stehen, um weiter laufen zu können. Sonst habe ich die automatisch ausgewählten Einstellungen benutzt.
  • Den Extension-Pack braucht man, um das Windows-Fenster maximieren zu können, sonst hat man ein Minifenster, mit dem man unmöglich spielen kann. Dafür muss man Windows in der VirtualBox im abgesicherten Modus starten können, und es funktioniert beim Drücken der F8-Taste beim Hochfahren nicht. Was man dafür machen muss (die vorgeschlagene Vorgehensweise auf der YouTube-Anleitung ab 12:07 hat bei mir nicht geklappt):
    • sich in Windows einloggen,
    • „Start“ klicken, dann im Suchfeld „run“ eingeben und die Eingabetaste betätigen,
    • im dadurch neu geöffneten Fenster, „msconfig“ eingeben,
    • im dadurch neu geöffneten Fenster, zum „Boot“-Tab wechseln und das Häkchen bei „Safe Boot“ unter „Boot options“ setzen,
    • „Apply“ klicken und Neustart zulassen,
    • dann, weiter wie in der YouTube-Anleitung ab 12:39 machen.
  • Die wichtigen Windows-Updates installieren.

Damit habe ich den Großteil von meinem sonnigen Sonntagnachmittag verbracht. Was mir noch fehlt:

  • die Auflösung vom Bildschirm richtig einstellen, vermutlich fehlt mir der Treiber der Grafikkarte,
  • Zugriff zu den externen Laufwerken (DVD…) bekommen,
  • Spiele installieren und testen, ob ich damit zufrieden bin.

Wenn alles klappt, mache ich die Windows-Festplatte platt und benutze nur noch Ubuntu und Windows in der virtuellen Maschine.


Dieser Beitrag ist ursprünglich auf Meckereien & Co. erschienen.

Ubuntu

Endlich. Seit etwa zehn Tagen habe ich Ubuntu neben Windows auf meinem Rechner installiert.

Um keine Fehler zu machen, habe ich mir zuerst eine neue Festplatte bei Saturn besorgt. Eine 3,5“ interne Festplatte von (Intenso)®. Mit 2TB sollte ich mehr als genug Platz haben. Meine Windows Festplatte ist 1TB groß und ich benutze gerade die Hälfte davon.

Das erste Problem fing an, als ich zu Hause versucht habe, die neue Festplatte im Rechner einzubauen. Das SATA-Kabel war nicht vorhanden. Ich halte gerade die Verpackung in der Hand und drauf steht nirgendwo, dass das Kabel nicht mitgeliefert wird. Das erfährt man nur, wenn man im Gebrauchsanweisungsheft aus dem Inneren der Verpackung blättert. Ärgerlicher ist, dass ich mich bei Saturn an einen Verkäufer gewendet hatte, und er hatte es auch nicht erwähnt. Die Beratung dort lässt einiges übrig zu wünschen. Also noch mal raus, um ein Kabel zu kaufen… Da ich mich gerade über Saturn geärgert hatte, bin ich zu Conrad gefahren. Mit dem Bus kein großer Unterschied.

Zurück mit dem richtigen Kabel, konnte ich endlich die neue Festplatte einbauen. Da meine externe Kabel für Bildschirm, Drucker usw. nicht sehr lang sind, musste ich viele ausstecken, um den Rechner auf dem Tisch öffnen zu können. Die Gelegenheit zum Staubsaugen habe ich genutzt. Festplatte an der Hauptplatine gesteckt, fest geschraubt, Rechner zu geklappt, Kabel wieder eingesteckt, Rechner angemacht. Ich habe ihn wie normal hochfahren gehört, aber auf dem Bildschirm geschah nichts. Alles schwarz. Ich habe zwei Anschlüsse für den Bildschirm, VGA und DVI. Ich hatte bis jetzt immer den DVI benutzt, aber vielleicht sollte ich VGA probieren: Immer noch kein Signal, und mein Bildschirm sagte noch, ich sollte den Anschluss prüfen. DVI wieder rein. Festplatte von der Hauptplatine rausgesteckt, Rechner an: Weiterhin schwarzer Bildschirm. Nicht mal ins BIOS konnte ich gehen, da nichts angezeigt wurde. Panik. Ich habe doch darauf geachtet, mich elektrisch zu entladen, bevor ich im Inneren vom Rechner gefummelt habe. Habe ich vielleicht die Hauptplatine beschädigt? Martin zur Hilfe gerufen, schnelle Antwort: Ich hatte das Bildschirm-Kabel am Anschluss der Hauptplatine statt an dem von der Grafikkarte gesteckt. Nach dem Umstecken ging’s wieder. Erleichterung.

Ubuntu auf der neuen Platte zu installieren lief ganz glatt. Ich hatte mir das Ubuntu-Magazin aus dem Kiosk um die Ecke geholt, mit einer CD für die 15.04 Version. Danach noch einige Pakete installiert, um programmieren zu können, wissenschaftliche Software heruntergeladen, jetzt kann ich von zu Hause aus voll bequem arbeiten und mich zu unseren Servern am Institut verbinden. Viel besser als unter Windows, vor allem, um Dateien zu kopieren. Der einzige Nachteil ist, dass ich es unter Ubuntu nicht geschafft habe, mich bei WordPress einzuloggen. Obwohl ich mir das gespeicherte Passwort aus meinem Browser unter Windows sehr genau aufgeschrieben und angegeben habe. Na gut, weniger Ablenkung, um zu arbeiten.


Dieser Beitrag ist ursprünglich auf Meckereien & Co. erschienen.

Bad fd number

Ein Nerd-Beitrag, der hoffentlich weiter helfen könnte.

Das Bad fd number Problem ist aufgetaucht, als ich mein Python-basiertes Programm auf Ubuntu testen wollte. Im Code werden einige externe Befehle aufgerufen, mit Hilfe von os.system(command), wo command ein String ist. Auf Scientific Linux: Kein Problem. Das hatte mein Vorgänger selber so implementiert. Auf Ubuntu ist das Programm abgestürzt, mit der Meldung:

sh: 1: Syntax error: Bad fd number

Ich habe danach gegoogelt und herausgefunden, dass das Problem aus einem Shell-Link kam. Auf Ubuntu verlinkt /bin/sh zu dash, und nicht zu bash wie auf anderen Linux-Betriebssystemen. Die Lösung schlug vor, stattdessen /bin/sh zu bash zu verlinken:

sudo mv /bin/sh /bin/sh.orig

sudo ln -s /bin/bash /bin/sh

Ich habe es auf meinem Testrechner ausprobiert und kein Problem festgestellt. Seit über einem Monat steht diese Lösung auf der internen Webseite unserer Gruppe. Keiner hat etwas dagegen geäußert. Letzte Woche habe ich die Installationsanleitung für Ubuntu als Entwurf auf der Projekt-Webseite kopiert und Uschi gebeten, sich den Inhalt genau anzuschauen, bevor er die Webseite frei gibt. Die Webseite hat er veröffentlicht.

Diese Woche waren wir endlich so weit und mein Programm ist veröffentlicht worden. Rundmails zur Ankündigung geschickt, Anzahl der Downloads begeistert verfolgt, Rückmeldungen mit Wünschen für neue Funktionen oder (sehr wenig) Installationsproblemen bekommen. Gestern fragte mich Uschi auf einmal ganz überrascht, was die Änderung vom Shell-Link auf Ubuntu sollte. Es wäre nicht OK, dadurch könnte man das komplette System verschrotten, eine andere Lösung müsste her. Ich war irritiert, dass er das erst jetzt merkt.

Ich hatte vermutet, dass das Problem aus dem externen Befehl in command stammt und dachte, ich müsste mit dem Autor des Skriptes Kontakt nehmen, um nach einer Lösung zu fragen. Bestimmt hätten schon viele Ubuntu-Nutzer sein Skript benutzt und das gleiche Problem gehabt. Vorher wollte ich trotzdem sicher sein. Ich habe den ursprünglichen Shell-Link zu dash wieder erstellt. Ich habe das im Programm erzeugte command direkt vor seiner Ausführung und vor dem Programmabsturz ausdrucken lassen. Der Code sah so aus:

print(command)

os.system(command)

und im Terminal hatte ich das command ausgedruckt, gefolgt von der Bad fd number Meldung und den ganzen Tracebacks. Genau das gleiche auf Scientific Linux ging ohne Problem.

Zurück auf Ubuntu, habe ich mit copy/paste command im Terminal selber ausgeführt. Und Überraschung, auf einmal ging’s. Merkwürdig. Die ganze Zeit hatte ich das externe Skript für die Ursache des Problemes gehalten. Jetzt kam der Verdacht, dass os.system(command) auf Ubuntu anders als auf Scientific Linux funktioniert. Oder genauer ausgedrückt: os.system() ruft anscheinend /bin/sh, und /bin/sh -> bash auf allen Linux-Systemen, außer auf Ubuntu, wo das Ziel des Linkes dash ist. Daher die Fehlermeldung.

Ein Lösungsansatz war auf einmal klar. Alle externe Befehle mit os.system() sollten mit subprocess.Popen() ausgeführt werden. Und genau das hat funktioniert. Jetzt brauche ich nicht mehr die Fummelei mit dem Shell-Link.


Dieser Beitrag ist ursprünglich auf Meckereien & Co. erschienen.