Es gibt ja keine Redistry wie in Windows, inder sich dann massenhafte leere Schlüssel ansammeln, die nicht mehr benötigt werden und das System langsamer machen. Liege ich da richtig?
Soweit ja: Es gibt unter *nix keine Registry.
Erstens wäre das unnötiger Ballast (wie Du gleich feststellen wirst) und zweitens ist der große Nachteil an der Registry, daß sie so ohne weiteres nicht menschenlesbar ist wie beispielsweise eine .ini oder ein xml-File.
Da in der Registry sowohl Informationen zur konfiguration wie auch zur Installation liegen, und quasi jedes Programm (zumindest bis unter Windows XP) Einstellungen daran vornehmen darf, ist es schwer nachvollziehbar welches Programm was wo verändert hat und Einstellungen können nicht immer so ohne weiteres von Windows A nach Windows B protiert werden.
Warum benötigt man nun unter *nix keine Registry?
Es ist Dir sicher schon aufgefallen, daß Du bei der Installation noch nie nach einem Installationspfad gefragt worden bist.
Das hängt damit zusammen, daß es den sog. Filesystem Hierarchy Standard gibt, wo -zu unser aller Leidwesen in etwa- geregelt ist, was wo hinkommt. Fremdsoftware beispielsweise findet man in aller Regel -wie Du auch schon bemerkt hast- in dem Verzeichnis /opt. Und Konfigurationseinstellungen, die das gesamte System als solches betreffen beispielsweise in /etc. Konfigurationen für Benutzerprogramme sollte man im /home des jeweiligen Benutzers finden. D.h. ein Programm wäre gelöscht, wenn es keine Dateien mehr dazu in /opt- und/oder in /home gibt.
Allerdings wäre es eine Heidenarbeit für den Benutzer, stets darüber buchzuführen, was wo hingekommen ist.
Das macht unser nettes Paketsystem selbständig.
http://packages.ubuntu.com/hardy/i386/nano/filelist
Hier als Beispiel die Filelist für den Konsolen-Editor nano.
Wie verhält es sich mit den von Hand kompilierten?
Da sieht es im wesentlichen kaum anders aus:
install:
$(INSTALL) -d -o root -m 0755 $(INSTALLDIR)
$(INSTALL) -s -o root -m 0750 $(TARGET) $(INSTALLDIR)/$(TARGET)
uninstall:
rm -f $(INSTALLDIR)/$(TARGET)
Sowas könnte dann in einem Makefile drinstehen. Das heißt wer den Dreck macht, muß ihn auch zusammenfegen oder so ähnlich; also der Programmierer ist dafür verantwortlich, daß alles korrekt installiert und deinstalliert wird.
Für einige Systeme u.a. Debian(-und darauf basierende wie Ubuntu) gibt es das nette Tool checkinstall was den Makefile überwacht und mit der Paketverwaltung zusammenarbeitet.
Die Verantwortung für die korrekte Implementierung liegt ebenso wie beim Installer unter Windows beim Programmierer;
allerdings hat die *nix Variante den Vorteil, daß der Benutzer sämtliche Routinen kontrollieren und -bei Bedarf- selbständig anpassen kann.