Wer von DOS / Windows / OS/2 kommt, ist es vielleicht gewohnt, daß Programme sich in seperate Verzeichnisse installieren, die auch aussagekräftige Namen (naja ...) haben - und daß man sich als Benutzer selbst entscheiden kann, wo man bestimmte Programme hin haben will. Allerdings hat das, nicht nur für den Benutzer, nach einiger Zeit ein ziemliches Chaos zur Folge - mal ganz abgesehen von dem immer noch vorhandenen (mich extrem nervenden!) Prinzip der Laufwerksbuchstaben. (Mein Rekord war bisher etwas ueber 800 Verzeichnisse unterhalb von `C:\Programme' -- den Rechner durfte ich aufräumen. :)
Unter UNIX allgemein hat sich mit der Zeit ein *Standard* entwickelt, der mehrere Vorteile bietet:
Hier gibt es eine kleine Übersicht, was wohin gehört. Wers genauer wissen will, besorge sich den FHS (Filesystem Hierarchy Standard,
http://www.google.com/search?q=fhs).
`bin' Programme/Tools zum Starten, Mounten und zur "maintenance"
`boot' Bootsektor-Images, Kerneldateien und Zubehör
`cdrom' Standard-Mountpoint für CDROM-Laufwerke
`dev' Device-Files: Hier sitzt Deine Hardware :)
`etc' Konfigurationsdateien für Rechner und Programme
`home' Persönliche Verzeichnisse der User
`lib' Systemweite Libraries und Kernelmodule
`lost+found' Gibts auf jeder Partition: Dort kommen nach einem
Dateisystemfehler gefundene Dateien hin. Unter DOS wären das
`FILE0000.CHK' und so weiter. Wenn er fehlt, sollte man ihn mit
"mklost+found" wiederherstellen.
`opt' Verzeichnis für zusätzlich installierte Binary-Pakete und
größere Programmpakete, die ihre eigene Hierarchie haben (z.B.
`Netscape' oder `?StarOffice'). Dieses Verzeichnis ist entgegen
einigen Besserwissern wirklich im neuen FHS (Filesystem
Hierarchy Standard) von Linux enthalten und genau für diesen
Zweck gedacht.
`proc' Virtueller Verzeichnisbaum für Prozeß-Infos. Jedes Programm, das
irgendwelche Infos über dein Sytem braucht, liest aus einer
dieser Dateien bzw. benutzt dieselben Informationen. Sehr gut
zur Problemdiagnose!
`root' Heimatverzeichnis des "Superusers". Sollte auch nur von ihm
lesbar sein! (drwx------, höchstens drwx--x--x) Hier gehoeren
KEINE Userdaten rein, sondern nur Sachen, die mit dem System zu
tun haben (z.B. Userlisten, Konfigurationsdateien-Kopien etc.)
`sbin' Programme zum Booten, die nur für `root' sind (wie fdisk)
`shlib' Shared Libraries (ggf.)
`tmp' Temporäre Dateien (sollte periodisch gelöscht werden)
`usr' "Anwender-"Programme (entfernt verwandt mit `C:\Programme')
Dieses Verzeichnis sollte komplett readonly benutzbar sein, d.h.
auch übers Netz auf mehrere Rechner verteilbar -- wenn sich die
benutzte Distribution daran hält. Hier gehört weder
Konfiguration noch ständig sich ändernde Daten hin.(4)
`var' Daten (Spool-Verzeichnisse, News/Mail-Daten, Logfiles)
`var/log' z.B. Logfiles vom Systemprotokoll (syslog)
Selbst kompilierte Programme gehören unterhalb von /usr/local/:
`bin:' Ausführbares (binaries) `doc:' Dokumentation `man:' Manual pages `etc:' Konfiguration `lib:' libraries/Bibliotheken (dann in `/etc/ld.so.conf' aufnehmen!) `var:' Binärdaten (z.B. Messagebase für FIDO oder so) `sbin:' Tools für den Systemverwalter (sollte u.U. nur für ihn lesbar sein)
Notfalls (falls das Programm sonst nicht will) kann man auch ein Verzeichnis `/usr/local/xyz' anlegen und es dahin packen, und ggf. einen Link des Binaries in `../bin' legen. (Oder das gleiche in `/opt'.) Dafür scheint das Programm STOW ganz gut geeignet, es schafft ein wenig Organisation (und bietet eine sauber Deinstalliationsmöglichkeit) in der `/usr/local' Verzeichnisstruktur.
Das war jetzt ein Extrem-Schnellkurs, der eigentlich nur zeigen sollte, daß es nicht egal ist, wohin man seinen Kram packt. Wenn man sich an die Standards hält, ist vieles viel einfacher. Auch Hilfestellungen von anderen Usern. :)
Vor allem ist es wichtig, daß Dokumentation, Binaries und Konfiguration getrennt gehalten werden. Somit kann man z.B. ganze Verzeichnisbäume übers Netzwerk teilen, aber jedes Programm hat, obwohl nur einmal vorhanden, seine eigene maschinenspezifische Konfiguration (in `/etc'), benutzerspezifische Konfiguration im Homeverzeichnis des Users, und normalerweise Standardkonfigurationen, die sich nicht ändern, in `/usr/lib' oder `/usr/share'.
Wenn man dagegen mal WINDOWS NT anguckt mit seinen roaming Profiles, wo dann beim Logon mehrere Megabytes übers Netz wandern, damit die User überall ihre eigenen Systemeinstellungen wiederfinden, dann wundert man sich schon irgendwie, wieso MS nicht begreift, daß das alles auch viel einfacher und doch flexibler schon seit -zig Jahren unter UNIX funktioniert: Homeverzeichnis übers Netzwerk freigeben, alle userbezogenen Einstellungen einfach ins Homeverzeichnis schieben, fertig. Keine Registry-Probleme oder ähnliches.