Hallo,
Ich hab nicht behauptet, das man nicht auch Programme selber installieren kann. Dazu ist /usr/local und /opt ja da. Was ich kritisiert habe, das man das an apt vorbeimachen muss.
Naja, das liegt in der Natur der Dinge: Entweder du nutzt ein Paketverwaltungssystem oder du nutzt es eben nicht. Wenn du es (für ein Programm) nicht nutzt, dann weiß es auch nicht, was du tust...
Ich stell mir ne Methode vor, bei der man eine Metadatei an apt übergibt, das dann unter zuhilfenahme der in der Respo und der in der Metadatei enthaltenen Pakete das Programm samt allen Abhängigkeiten installiert.
Das ist möglich, indem du lokal ein Repository aufziehst, schließlich ist ein Repository nichts besonderes, sondern eben nur Metadaten plus Pakete. Andererseits müsstest du die Abhängigkeiten in jedem Programm im distributionsspezifischen Format wissen und damit im Buildsystem der Programme jede Distribution mit ihren Abhängigkeiten vermerken. Das wird nichts, deswegen werden die Repositories ja von den Distributionen gewartet und gerade nicht von den Entwicklern.
Zudem hängen die Abhängigkeiten offensichtlich von der Konfiguration ab (Qemu geht auch ohne SDL). Binärverteilung erzwingt dann bestimmte Abhängigkeiten.
Guck dir mal pkgsrc an (ist portabel, geht auch unter Linux) - das ist das Paketsystem von NetBSD. Das dürfte für ein Hobby-OS auch angenehmer sein, weil du keine Binaries warten musst. Das dürfte eher in deinem Sinne sein.
Ansonsten habe ich an deinem System zu bemängeln, dass die Suche nach z.B. einer Lib dazu führt, dass sämtliche Verzeichnisse unterhalb von /ear/lib/* vom Loader durchsucht werden müssen und dass es prinzipiell mehrere gleichnahmige Dateien geben kann.
Wieso ich hab doch deshalb extra diese <name>-<version> Form eingeführt. Der Libname sollte halt in den Include-Header Dateinen gescheit vermerkt werden.
Das ist eine gaaanz schlechte Idee.
Ich möchte in meinen Quelltexten ein "#include <SDL.h>" machen und dann die aktuelle SDL-Version benutzen und nicht bei jeder neuen (100% kompatiblen) SDL-Version meine Sourcen anpassen müssen. Das wäre Ärger zur Compilezeit. Zur Laufzeit würdest du also immer gegen eine fixe Lib-Version linken, was Library-Updates unmöglich macht. Wenn du stattdessen ein "nimm die aktuellste Version der Lib" möchtest, dann muss dein Runtime-Loader trotzdem /ear/lib/* traversieren und ziemlich viel Stringmatching machen.
Eine Möglichkeit wäre, in /ear/lib/* nur Symlinks auf die jeweils aktuellsten Versionen zu haben, die dann in /ear/lib/libs/libname-version/libname-version.so liegen. Aber dann kannst du die auch gleich das Unixprinzip "/ear/lib/libname.so -> /ear/lib/libname.so.version" benutzen...
Alles in Allem Danke ich dir aber für deine konstruktive Kritik. Ich versuche halt nur, das Ein-Programm = Ein-Ordner-System (welches ich persönlich bevorzuge) mit den Ansprüchen, die bei Linux vorherrschen (Gemeinsame Bibliotheken, Einfache Nutzung über's Shell, etc.) zu verbinden.
Das geht einfach nicht, weil es zwei völlig unterschiedliche Paradigmen sind. Der einzige Ansatz, den ich da habe wäre eine doppelte Verwaltung: Also Programme werden in ihren eigenen Ordner nach /apps/appname/* installiert, aber installieren Symlinks nach /usr/bin, Manpages nach /usr/share/man, Konfigurationen nach /etc, ...). Wenn man regelmäßig nach toten Symlinks sucht, wird man die Reste auch wieder zuverlässig los.
Deine letzte Bemerkung halte ich für nützlich. Vielleicht ist es besser /usr doch nicht abzuschaffen und dafür die zusätzlichen Ordner /app mit den Unterverzeichnissen. /app/proc für proc für Programme und /app/run für die Executivdeskriptoren einzuführen.
Schwierig. Ich bin dafür, /usr unter Linux abzuschaffen, weil es keine besondere Bedeutung mehr hat. Ursprünglich galt ja, dass / nicht von der Paketverwaltung verwaltet wird (Basissystem), /usr hingegen schon und /usr/local wieder nicht. Inzwischen werden / und /usr beide verwaltet, ein shared-usr ist mit heutigen Distributionen nur noch schwierig (Xorg legt die Standardkonfig unter /usr/share/X11 ab, noch geht aber /etc/X11!) und die Vorteile nutzt nahezu niemand mehr.
Ansonsten habe ich mir noch keine Gedanken zu einer optimalen Struktur gemacht, das hier sind alles nur Gedankensplitter (deswegen auch kein vollständiger Vorschlag).
Gruß,
Svenska