- Eine experimentelle Distribution, die die Verzeichnis-Konventionen klassischer Linux-Distributionen stark verändert und es ermöglicht, die Systemstruktur anhand von programmbezogenen Verzeichnissen zu verstehen
- Anstelle einer separaten Paketdatenbank dient das Dateisystem selbst als Datenbank; Programme werden versionsbezogen in Pfaden wie
/Programs/Nano/8.3abgelegt - Das aktuelle Release 017.01 ist ein Bugfix-Update, das rund fünf Jahre nach dem vorherigen ISO-Release erscheint und einige wichtige Probleme aus dieser Zeit behebt
- Gründer Hisham Muhammad zieht sich nach 25 Jahren aus dem Betrieb zurück, und das Projekt wird von GitHub-Nutzer
@fyrak1sweitergeführt - Das System lässt sich direkt als Live-Umgebung ausführen oder auf einer Festplatte installieren, sodass sich die von üblichen Distributionen abweichende Dateisystemstruktur praktisch ausprobieren lässt
Pakete über das Dateisystem organisieren
- GoboLinux ist eine experimentelle Linux-Distribution, die die gesamte Dateisystem-Hierarchie neu definiert
- Der Kern ist eine Struktur, die das Dateisystem als Datenbank verwendet, statt eine separate Paketdatenbank zu führen
- Jedes Programm befindet sich in seinem eigenen Verzeichnis
- Beispiele sind
/Programs/Nano/8.3und/Programs/GCC/14.2.0
- Da sich die Struktur von typischen Linux-Distributionen unterscheidet, sollten neue Nutzer am besten zuerst die Dokumentation lesen
Release 017.01 und Wechsel der Projektleitung
- Die aktuelle Version ist 017.01
- Eine Live-Umgebung, die von USB-Laufwerken und DVDs gestartet werden kann
- Kann auch auf einer Festplatte installiert werden
- Das ISO ist unter Downloads verfügbar
- v017.01 ist ein Bugfix-Update, das nach einer Pause von rund fünf Jahren erschienen ist
- Es behebt einige wichtige Probleme, die seit dem vorherigen ISO-Release aufgetreten sind
- Detaillierte Änderungen finden sich in den release notes
- Auch die Projektorganisation hat sich verändert
- Gründer und langjähriger Leiter von GoboLinux, Hisham Muhammad, ist offiziell zurückgetreten
- Das Projekt wird unter der Leitung von
@fyrak1sfortgeführt - Lucas Correia Villa Real, alias
paranoidd, hat GoboLinux bis Juni 2021 gemeinsam mit Hisham gepflegt
- Die Community ist auf Chat, Forum und Wiki verteilt
- Zulip Chat und der IRC-Kanal
#gobolinuxaufirc.libera.chat - GoboLinux forum
- GoboLinux wiki
- Zulip Chat und der IRC-Kanal
1 Kommentare
Hacker-News-Meinungen
Wenn man beim Design von GoboLinux eine starke spontane Abwehrreaktion verspürt, enthält das 20 Jahre alte Dokument „I am not clueless“¹ ziemlich viel Hintergrund und Logik dazu.
Ganz verschwunden ist diese Abwehr bei mir noch nicht, aber sie ist nicht mehr so stark wie früher ;)
¹ https://gobolinux.org/doc/articles/clueless.html
Zusammengefasst etwa: „Wir wissen, dass wir anders sind. Es ist sehr einfach. Es mag ungewohnt sein, ist aber leicht zu verstehen und zu handhaben. Man muss es nicht nutzen. Uns gefällt es so und wir sind zufrieden.“
make all programs relocatable, man müsse alle Apps mitlibprefixneu schreiben; ich frage mich, was hier mitlibprefixgemeint ist.Über die Websuche finde ich dazu keine brauchbaren Ergebnisse.
Zum Beispiel rührt ein großer Teil der ersten Reaktion von der Großschreibung her:
Programsmit großem P erinnert an Windows’Program Filesund löst emotional Ablehnung aus.Wenn man statt
libx11LibX11eingeben müsste, wäre das wohl auch etwas nervig.Linux-Dateisysteme unterscheiden normalerweise Groß- und Kleinschreibung, aber Paketnamen werden wohl Duplikate vermeiden, die sich nur dadurch unterscheiden, und bei einer Distribution, die eine benutzerfreundliche Hierarchie anstrebt, scheint es auch unwahrscheinlich, dass sie im Root Verzeichnisse anlegt, die sich nur in der Groß-/Kleinschreibung unterscheiden.
Trotzdem: Wenn die Beispiele
/packages/libx11/1.6.9und/packages/gcc/9.2.0gewesen wären, wäre die erste Reaktion wohl deutlich schwächer ausgefallen, und die Vorteile wären mit solchen Namen überhaupt nicht geringer gewesen.Es ist wirklich schade, dass sich die Ideen von GoboLinux in der Mainstream-Linux-Community nicht durchgesetzt haben.
Die Dateisystemstruktur von Linux ist ein komplettes Durcheinander.
Es korrekt zum Laufen zu bringen ist nie trivial, und es effizient zu machen ist noch schwieriger.
Erst in den letzten Jahren habe ich das Gefühl, dass dieses Modell für die Verteilung der meisten Software tatsächlich in die Nähe eines wartbaren Zustands gekommen ist.
Beim GoboLinux-Modell muss man Versionsverzeichnisse wie
/Programs/Xorg/7.0manuell verwalten; Nix beseitigt dieses Problem, indem es den Installationspfad eines Pakets aus dem Hash des Build-Rezepts ableitet./homeund/tmpSinn.Der Rest ist eher eine Rumpelkammer, in die man alles irgendwo hineinlegt.
GoboLinux war das erste Projekt, das mir gezeigt hat, dass man unter Linux wirklich machen kann, was man will.
/optund/srvsowie je nach Geschmack/usr/local/optbieten durchaus einige der Vorteile, Komponenten wie bei GoboLinux einzeln zu verwalten.Aus Sicht einer Distribution ergibt das alles auf seine Weise Sinn.
Wenn man
dpkg -S this-fileeingibt, sieht man schnell, warum eine Datei unter/usrexistiert, und die Distribution übernimmt die Rolle, das Gesamtbild zu zeichnen.Ich frage mich, welchen Teil du für das größte Durcheinander hältst.
Interessant ist, dass die Kompatibilität mit dem Unix-Erbe transparent erhalten bleibt, indem traditionelle Pfade auf die entsprechenden GoboLinux-Pfade abgebildet werden.
Es gibt keine besondere Magie:
/binist ein Link auf/System/Index/bin, und/usr/binsowie/usr/sbinebenso, sodass alle „Binary“-Verzeichnisse auf denselben Ort zeigen.Dadurch funktioniert eine Datei unabhängig davon, über welchen Standardpfad man darauf zugreift; damit kann es sogar kompatibler sein als eine normale Distribution, bei der eine Datei tatsächlich unter
/usr/local/bin/fooliegt, ein Skript aber/usr/bin/fooreferenziert und dadurch bricht.Aus Unwissen gefragt: Funktioniert macOS bis zu einem gewissen Grad so?
Ich fand es wirklich gut, dass Anwendungen immer wie eine einzelne „Datei“ wirken, die man per Drag-and-drop verwaltet.
Wenn ich unter Ubuntu herausfinden will, wo etwas liegt und wohin es installiert wird, fühle ich mich wie ein Idiot.
Ich verstehe, warum sie das tun.
Die Verzeichnisstruktur einer durchschnittlichen Linux-Installation ist selbst für technisch versierte Leute ein verwirrendes Labyrinth, und für die normalen Nutzer, auf die große Distributionen zielen, erst recht.
Am Ende behandelt das aber Symptome statt Ursachen, und ich denke, mehr Linux-Distributionen sollten ernsthaft darüber nachdenken, die Dateisystemstruktur so zu modernisieren wie Gobo.
Ich hätte auch Lust, das selbst auszuprobieren.
Ziel wäre eine Struktur, die vernünftig selbsterklärend ist, Anfänger von gefährlichen Bereichen fernhält und bei der es kein Problem ist, wenn der Dateimanager fast nichts versteckt.
~/Library.Interessant wird es bei Fällen wie dem Minecraft-Launcher, bei dem alles inklusive Welten und Spielständen im Bundle steckt.
~/Libraryund/Libraryab.Auch unter macOS ist es nicht selten, dass man zum Entfernen mancher Apps mehrstufigen Anleitungen zum manuellen Löschen folgen muss.
Besonders relevant ist das bei Apps, die Login-Items hinzufügen.
„Programme hinzufügen/entfernen“ unter Windows bietet immerhin eine zentrale Stelle, um die Deinstallation auszuführen, und die meisten Apps halten sich ordentlich daran.
Kann man mit
dpkgnicht dasselbe tun?Dass der erste Verzeichnisname mit einem Großbuchstaben beginnt, gefällt mir nicht besonders.
Beim Navigieren durch Pfade fühlt es sich wie zusätzlicher Aufwand an, und jedes Mal zusammen mit einem Buchstaben oder einer Zahl die Umschalttaste drücken zu müssen, ist im alltäglichen Kommandozeilengebrauch ziemlich lästig.
/Programsin einer richtig konfigurierten Shell, wie der Standard-Shell von GoboLinux, exakt genauso viele Tastenanschläge wie/usr.Slash, kleines p, Tab reicht.
Sie zwingt einen nicht, Usability zu opfern, um die kostbaren Ticks und den Speicher eines PDP-11 zu sparen.
Ich finde es immer wieder amüsant, dass die Fans von „Groß-/Kleinschreibung ist das Beste!“ übersehen, dass das ursprünglich nur aus den Beschränkungen des Systems entstanden ist.
Das ist kein Feature.
Außerdem wird dieser Punkt ausdrücklich behandelt.
Schon
set completion-ignore-case Onmacht das Leben deutlich angenehmer.Denn dann muss man auch ohne GoboLinux bei jedem Dateinamen, der mit einem Großbuchstaben beginnt, einmal weniger Shift drücken.
Oder man lebt eben weiter wie 1977.
Dein VT100, deine Regeln.
Später habe ich dann die Aussage gesehen: „Warum installiert man eine andere Shell, statt für normales Navigieren einfach bash zu verwenden?“ — das heißt im Grunde, dass man nicht einmal die eigene Shell richtig kennt.
Außerdem kann jede Shell eine Auto-Vervollständigung ohne Beachtung der Groß-/Kleinschreibung anbieten, und Fish macht das standardmäßig.
Wirkt nach Windows.
Dieses Projekt hat das Potenzial, unsere kognitive Last deutlich zu senken.
Ich hoffe, es hat Erfolg.
Edit: Wie ich jetzt sehe, ist das ein 20 Jahre altes Projekt.
https://github.com/gobolinux/Recipes/commits/master/
So vernünftig, dass einem fast die Tränen kommen.
Das Deduplizieren mehrerer Kopien von Bibliotheken sollte, wenn es wirklich nötig ist, vom Dateisystem erledigt werden.
Am Ende ist es Duplikation auf Dateiebene, also sollte sie auf dieser Ebene gelöst werden.
Wirklich schlechte Closed-Source-Anwendungen stellen viel zu viele Erwartungen an das System des Nutzers.
Der Steam-Client ist so ein Beispiel: Er liefert kein
sh-Skript, sondern einbash-Skript, setzt wegen der Anforderungen an Linux-Mount-User-Space-Container stark ein Debian/Ubuntu-artiges Datei-Layout voraus und verlangt sogar GNU-spezifische Sonderoptionen für mehrere Befehle.Dazu kommen viele 32-Bit-Bibliotheken.
Immerhin scheint die ABI noch unter Kontrolle zu sein, vermutlich verwenden sie die
.symver-Direktive von binutils gas.Zumindest wird das aktuelle Chaos gerade von Steam in unseren Rachen gedrückt, und wenn eine Distribution nicht gerade ohne Spiele auskommt, ist es schwer zu vermeiden.
Selbst innerhalb der Gamer-Gruppe dürfte ein erheblicher Teil einen separaten, dedizierten Gaming-PC haben.
Ich wünschte, jemand, der viel klüger ist als ich, würde erklären, warum das besser ist als snap/Flatpak oder Distributionen wie NixOS, oder ob es das überhaupt ist.
Ohne es tief verstanden zu haben, wirkt dieser Ansatz äußerlich am einfachsten.
Natürlich sage ich das unter der Annahme meiner eigenen Wissenslücken.
Dass Flatpak und NixOS komplexer sind, hat gute Gründe.
Zum Beispiel speichern sie exakt dieselbe Version von Abhängigkeiten nicht mehrfach auf der Festplatte.
Die Anführungszeichen setze ich wegen der Sicherheitsprobleme.
NixOS bricht die Kompatibilität mit bestehenden Programmen, Gobo dagegen nicht.
Allerdings ist das Paket-Repository von NixOS überwältigend viel besser gepflegt als das von Gobo; bei Gobo ist es unvollständig und hinkt um Jahre hinterher.
Trotzdem liegen alle hier erwähnten Ansätze hinter der Art zurück, wie Android Apps speichert.
Unter Android kann jede Anwendung als einfach zu verteilende Einzeldatei ausgeliefert werden, ist ordentlich sandboxed und hat ihr eigenes Verzeichnis.
Ein weiterer Punkt, den die anderen Ansätze übersehen: Jede App hat unter ihrem App-Verzeichnis ein Unterverzeichnis zum Speichern ihres eigenen Zustands, und das ist zudem pro Nutzer getrennt.
Die GoboLinux-Entwickler haben ein für Menschen verständliches Dateisystem-Layout wirklich „intelligent“ umgesetzt
Die heute noch verwendeten alten UNIX-Konventionen wirken ziemlich schwer durchschaubar in einer Zeit, in der es Einschränkungen wie 8.3-Namenslimits, knappen Speicherplatz oder Probleme mit Dateien über 1 GB nicht mehr gibt
Früher lief auf einem Server, auf dem Versionsverwaltungssoftware gehostet wurde, einige Jahre lang GoboLinux 012 bis 015, und insgesamt war das sehr gut
Der Haken war, dass man ein Rezept erstellen musste, wenn ein benötigtes Paket fehlte
Die Rezept-Sprache von GoboLinux selbst war leicht zu verstehen, aber ein einzelnes Paket hing oft von einem guten Dutzend oder mehreren Dutzend Bibliotheken ab, sodass viel Zeit dafür draufging, diese nachzuverfolgen, Versionen abzugleichen, URLs für Bibliotheken und Pakete zu finden und daraus wieder Rezepte zu bauen
Am Ende bin ich zu Debian gewechselt, zucke aber immer noch zusammen, wenn ich sehe, dass Konfigurationsdateien in
/etcliegen und Binärdateien in/usr/binoder/usr/local/binlandensystemd sehe ich eher als lästig und krakenartig an
Es kommt häufig vor, dass man
findbenutzt, um die zugehörige.service-Datei zu finden; man kann sich nicht darauf verlassen, dass sie an einer Stelle liegt, und auch die Kommandozeile ist nicht intuitivIm Gegensatz dazu war Gobos Bündel von Skripten zur Verwaltung von Diensten sehr schlicht und leicht zu handhaben
Trotzdem schlägt die Bequemlichkeit, Benötigtes einfach per
apt getoderdpkg -iinstallieren zu können, das deutlich vernünftigere, intelligente Design von GoboLinuxHeute ist die Zahl der unterstützten Linux-Distributionen von der früher riesigen Auswahl geschrumpft; fast immer sind Debian oder Ubuntu standardmäßig enthalten, sodass es unwahrscheinlich ist, dass man ein Paket oder Programm nicht installieren kann, selbst wenn es außerhalb der Repositories liegt
Auch macOS nutzt eindeutig bis zu einem gewissen Grad einen ähnlichen Ansatz wie GoboLinux, und deshalb ließ sich macOS vor den jüngsten, ziemlich nutzerfeindlichen Versionen auf der Kommandozeile recht gut bedienen
Zum Beispiel liegen USB-Laufwerke unter
/Volumes, und Konfigurationsdateien von Programmen unter~/Librarysystemctl status foo, um ab der zweiten Zeile genau zu erfahren, welche Dateien beteiligt sindZum Beispiel steht in der Ausgabe von
systemctl status getty@tty1.serviceetwas wieLoaded: loaded (/lib/systemd/system/getty@.service; enabled; preset: enabled), sodass man/lib/systemd/system/getty@.servicedirekt kennt