Case-sensitives Startvolume unter macOS

Vor einigen Tagen schrieb ich darüber das Steam unter macOS nicht mit einem Dateisystem funktioniert, wenn dieses case-sensitiv ist. Dass bedeutet das die Dateien test.txt und Test.txt zwei unterschiedliche Dateien aus Sicht des Betriebssystems sind. Bei case-insensitiven Systemen hingegen, wären dies die gleichen Dateien. Wird die case-sensitive Variante als Startvolume unter macOS betrieben so führt dies mittelfristig nur zu Problemen.

Das Startvolume unter macOS sollte im case-insensitiven Modus formatiert werden

Hintergrund ist das besagte Apps wie Steam oder die Adobe Suite mit einem case-sensitiven Dateisystem nicht zurechtkommen. Dies führt im einfachsten Fall dazu das die Applikation nicht startet, kann aber wie z.B. bei Nextcloud zu seltsamen Abstürzen führen. Als Lösung für dieses Problem bietet sich leider nur die Neuinstallation mit der case-insensitiven Variante von APFS an.

Batterie einer mobilen Apple-Rechners kalibrieren

Bei der Nutzung eines mobilen Apple-Rechners, wie z.B. einem MacBook Air, ist es ratsam den Akku bzw. die Batterie desselbigen ab und an zu kalibrieren. Damit ist sichergestellt das die Anzeige der noch verbleibenden Energie korrekt dargestellt wird. Zur Kalibrierung müssen bestimmte Schritte in einer definierten Reihenfolge ausgeführt werden. Im ersten Schritt muss das Gerät auf 100 Prozent geladen werden. Danach muss das Gerät mindestens zwei weitere Stunden geladen werden. Anschließend kann der Ladestecker entfernt werden.

Die Akku-Zellen bei einem MacBook Air

Nun kann das Gerät normal genutzt werden, bis die Warnung erscheint die davor warnt, dass die Batterie bald leer ist. Das Gerät muss nun solange genutzt werden, bis es sich von Selbst abschaltet. Nachdem das Gerät sich abgeschaltet hat, muss es für mindestens 5 Stunden in diesem Zustand belassen werden. Anschließend muss das Gerät in einem Rutsch auf 100 Prozent geladen werden. Das Gerät sollte anschließend weitere zwei Stunden am Netzteil betrieben werden. Danach ist die Kalibrierung abgeschlossen. Wird einer dieser Schritte unterbrochen, muss die Kalibrierung erneut, von Beginn an, durchgeführt werden.

Steam startet unter macOS nicht

Auf einem MacBook Air habe ich ein neues System aufgesetzt. Neben anderer Software, wollte ich unter anderem Steam installieren. Nach der Installation startete Steam und lud die entsprechenden Daten herunter. Danach beendete sich Steam selber. Auch der mehrmalige Versuch Steam zu Starten führte zum gleichen Fehlerbild. Das Löschen des Ordners mit den Applikationsdaten:

~/Library/Application Support/Steam

half leider ebenfalls nicht. Für die Fehlersuche startete ich Steam im Terminal:

cd /Applications/Steam.app/Contents/MacOS/
./steam_osx

Dort erschient folgende Ausgabe:

[2019-01-13 18:33:37] Startup - updater built Aug 22 2016 17:36:46
/BuildRoot/Library/Caches/com.apple.xbs/Sources/AppleFSCompression/AppleFSCompression-96.200.3/Common/ChunkCompression.cpp:49: Error: unsupported compressor 8
/BuildRoot/Library/Caches/com.apple.xbs/Sources/AppleFSCompression/AppleFSCompression-96.200.3/Libraries/CompressData/CompressData.c:353: Error: Unknown compression scheme encountered for file '/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/Exceptions.plist'
/BuildRoot/Library/Caches/com.apple.xbs/Sources/AppleFSCompression/AppleFSCompression-96.200.3/Common/ChunkCompression.cpp:49: Error: unsupported compressor 8
/BuildRoot/Library/Caches/com.apple.xbs/Sources/AppleFSCompression/AppleFSCompression-96.200.3/Libraries/CompressData/CompressData.c:353: Error: Unknown compression scheme encountered for file '/System/Library/CoreServices/CoreTypes.bundle/Contents/Library/AppExceptions.bundle/Exceptions.plist'
[2019-01-13 18:33:38] Startup - updater built Jan  4 2019 15:25:44
found breakpad via in process memory: '/Users/seeseekey/Library/Application Support/Steam/Steam.AppBundle/Steam/Contents/MacOS/Frameworks/Breakpad.framework/Versions/A/Resources'
Installing breakpad crash handler
[2019-01-13 18:33:38] Steam requires that '/Users/seeseekey/Library/Application Support/Steam/Steam.AppBundle/Steam/Contents/MacOS' be on a case-insensitive filesystem.
SteamID:  0, universe Public
[2019-01-13 18:33:38] Steam requires that '/Users/seeseekey/Library/Application Support/Steam/Steam.AppBundle/Steam/Contents/MacOS' be on a case-insensitive filesystem.
[2019-01-13 18:33:38] Verifying installation...
[2019-01-13 18:33:38] Shutdown
[2019-01-13 18:33:38] Unable to read and verify install manifest /Users/seeseekey/Library/Application Support/Steam/Steam.AppBundle/Steam/Contents/MacOS/package/steam_client_osx.installed
[2019-01-13 18:33:38] Verification complete
[2019-01-13 18:33:38] Downloading update...
[2019-01-13 18:33:38] Checking for available updates...
[2019-01-13 18:33:38] Downloading manifest: client-download.steampowered.com/client/steam_client_osx
[2019-01-13 18:33:38] Error: Download failed: http error 0

Nach der Auswertung der Ausgabe ergab sich das es sich hier ebenfalls um ein Problem mit dem case-sensitiven Dateisystem auf dem macOS-Rechner handelte.

Steam verträgt case-sensitive Dateisysteme unter macOS nicht

Für dieses Problem bieten sich zwei Lösungen an. Bei der radikalen Lösung wird der Rechner bzw. die Partition neu aufgesetzt. Die andere Möglichkeit wäre es eine Partition zu erstellen, welche mit einem case-insensitiven Dateisystem betrieben wird und der entsprechende Application Support-Ordner per Hardlink zu dieser neuen Partition zeigen zu lassen. Schön ist keine der Lösungen, vor allem da sich jenes Problem durch die Anwendung (in diesem Fall Steam) lösen ließe. Meine pragmatische Lösung war es in diesem Fall Steam nicht zu installieren und stattdessen den Rechner produktiv zu nutzen.

Applikationsdaten unter macOS

Wenn eine Applikation unter macOS genutzt wird, speichert diese ihre Daten in einem Verzeichnis mit dem Namen Application Support. Je nachdem ob die App ohne oder mit einer Sandbox läuft, befindet sich dieser Ordner an einer unterschiedlichen Stelle. Bei Apps ohne Sandbox ist dies:

~/Library/Application Support/com.example.application/

Apps, welche in einer Sandbox laufen, haben ihren Quellpunkt im Dateisystem allerdings im Pfad:

~/Library/Containers/com.example.application/

Damit befindet sich das Application Support-Verzeichnis bei Apps, welche in einer Sandbox laufen, im Pfad:

~/Library/Containers/com.example.application/Data/Library/Application Support/

Nützlich ist z.B. wenn Daten einer Applikation von einer macOS-Installation zu einer anderen Installation verschoben werden sollen.

IntelliJ IDEA in den case-sensitiven Modus schalten

Bei einer normalen macOS-Installation ist das Dateisystem, egal ob HFS+ oder APFS case-insensitiv. Allerdings besteht bei beiden Dateisystemen die Möglichkeit sie case-sensitive zu betreiben. Das bedeutet das eine Datei mit dem Namen test.txt und eine Datei Test.txt zwei unterschiedliche Dateien sind. Bei case-insensitiven Dateisystemen wäre dies nicht der Fall. Bei einem Start der Java-IDE IntelliJ IDEA auf einem solchen case-sensitiven Dateisystem kommt es zu folgender Meldung:

Filesystem Case-Sensitivity Mismatch
The project seems to be located on a case-sensitive file system.
This does not match the IDE setting (controlled by property "idea.case.sensitive.fs")

Hintergrund ist das IntelliJ IDEA für die Betriebssysteme Windows und macOS annimmt das diese mit einem case-insensitiven Dateisystem betrieben werden.

Der entsprechende Eintrag befindet sich im Help-Menü

Über den Menüpunkt Help -> Edit Custom Properties… kann diese Verhalten korrigiert werden. Wenn dieser Punkt zum ersten Mal auswählt wird, erscheint eine Nachfrage ob die entsprechende Datei angelegt werden soll. Anschließend wird die Datei in IntelliJ IDEA geöffnet. Dort muss der Wert:

idea.case.sensitive.fs=true

hinzugefügt werden. Nach einem Neustart der IDE wird das neue Verhalten übernommen.