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.

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.

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.

NTFS unter macOS

macOS unterstützt eine Reihe von Dateisystemen, unter anderem FAT16, FAT32, HFS, sowie das neue Apple Filesystem (APFS). Problematisch wird es bei der Unterstützung für das NTFS-Dateisystem von Microsoft, welches seit vielen Versionen das Standarddateisystem aller Windows-Versionen ist. Nun ist es nicht so das unter macOS keine Unterstützung für NTFS vorhanden ist, allerdings beschränkt diese sich auf den reinen Lesezugriff – so ist es ohne weitere Probleme möglich entsprechend formatierte Datenträger einzulesen, das Erzeugen oder Beschreiben von solchen Datenträgern bleibt dem normalen Nutzern allerdings verwehrt.

Die Produktseite von NTFS für Mac

Abhilfe schafft hier NTFS für Mac von Paragon. Mit Hilfe der Software ist es möglich NTFS-Volumes zu beschreiben. Bezogen werden kann das Produkt über die Webseite des Herstellers. Bevor man zum Kauf schreitet, kann NTFS für Mac mit Hilfe der Trial-Version dreißig Tage lang getestet werden.

Dateien auf dem Nextcloud-Server hinzufügen

Wenn man eine Nextcloud-Installation neu aufsetzt und die Dateien der Nutzer wieder in jeweiligen Order packt, wird man feststellen das sie nicht automatisch in der Dateien-App von Nextcloud auftauchen. Stattdessen muss über das Wartungstool occ ein Scan der Nutzerordner stattfinden. Hierzu dient der Befehl:

sudo -u www-data php occ files:scan --all

Je nach Anzahl der Nutzer kann dieser Vorgang mehrere Minuten bis zu einigen Stunden dauern. Nach Abschluss des Vorgangs erhält man ein Protokoll über den Scan:

Scanning files for 3 users
Starting scan for user 1 out of 3 (Example1)
Starting scan for user 2 out of 3 (Example2)
Starting scan for user 3 out of 3 (Example3)

+---------+-------+--------------+
| Folders | Files | Elapsed time |
+---------+-------+--------------+
| 3152    | 52241 | 00:12:40     |
+---------+-------+--------------+

Anschließend sind die Dateien in der Dateien-App von Nextcloud wieder sichtbar und werden wieder mit dem Desktop-Client synchronisiert.