Dateisystemhierarchie-Standard
Die Distribution bekommt /usr
, Sie bekommen /usr/local
, ISVs bekommen /opt
.
Wo ist der beste Pfad zum Installieren aller Paketdateien beim Kompilieren?
Zum Beispiel - Ich möchte ProFTPd installieren, es gibt also eine Option
--prefix=/usr/local/proftpd
Dies bedeutet, dass alle Dateien nach dem Übersetzen (einschließlich Binär- und Konfigurationsdateien) hier gespeichert werden. Wie Sie wissen, speichern alle Pakete, die über das Paketsystem installiert werden (wie zypper unter SuSE oder apt unter Ubuntu), normalerweise ihre Konfigurationsdateien in / etc / und die Binärdateien in / sbin / und auch einen Link in meinem $ PATH Ich kann einfach per proftpd (ohne / sbin) eintippen.
Der große Vorteil von Paketen, die über das Paketsystem installiert werden, ist der einfache Deinstallationsprozess. Ich möchte kompilierte Pakete auch einfach deinstallieren können.
Ich denke, ich könnte eine Batch-Datei erstellen, die ich so verwenden kann:
uninstall --package=proftpd
Und mein Skript findet alle proftpd-Dateien in üblichen Pfaden (/ etc, / sbin) und entfernt sie mit rm.
Gibt es Best Practices, wo all diese Dateien gespeichert werden sollen, oder gibt es (un) Vorteile meines ersten Beispiels (--prefix = / usr / local / proftpd)?
Ich glaube wirklich nicht, dass es schön ist, zwei Pfade mit Konfigurationsdateien und Binärdateien zu haben, aber vielleicht missverstehe ich die grundlegenden Prinzipien von Linux ... :-)
Dateisystemhierarchie-Standard
Die Distribution bekommt /usr
, Sie bekommen /usr/local
, ISVs bekommen /opt
.
Die besten Orte, um Pakete auf Ihrem Computer zu installieren, sind, /usr/local
wenn Sie über Administratorrechte verfügen und möchten, dass alle Ihr Programm verwenden, oder $HOME
wenn Sie nur eine Kopie für sich selbst erstellen möchten.
Normalerweise würden Sie das Präfix --prefix=/usr/local
so einstellen, dass die Anwendungsdateien in den /usr/local/bin
Einstellungen in /usr/local/etc
usw. gespeichert werden .
Die Verwendung dieser Standardplätze hat den Vorteil, dass sie im Grunde Standard sind. Die Leute wissen, wo sie nach den Dateien suchen müssen. Zum Beispiel /usr/local/bin
ist es fast immer bei allen $PATH
, also müssen Sie sich nicht mit der $PATH
Variablen beschäftigen, damit die Leute sie ausführen. In ähnlicher Weise werden Bibliotheken durch Prüfen gefunden, sie werden $LD_LIBRARY_PATH
jedoch /usr/local/lib
standardmäßig standardmäßig aktiviert, sodass Sie sie nicht manuell hinzufügen müssen.
Deinstallation: Nachdem Sie configure ausgeführt und das Programm erstellt haben, make install
wird es für Sie installiert und make uninstall
die Dateien werden automatisch entfernt.
In der Tat ist es am besten, ein Paket zu erstellen, das Sie installieren können.
Viele Anwendungen enthalten die erforderlichen Dateien zum Erstellen von RPM- oder DEB-Paketen. Wenn dies nicht der Fall ist, gibt es Tools zum automatischen Erstellen von Paketen, z. B. checkinstall .
checkinstall
überwacht die Vorgänge make install
und leitet die installierten Dateien um, um daraus ein DEB- oder RPM-Paket zu erstellen. Auf diese Weise erhalten Sie ein reguläres Paket, das in Ihre anderen Pakete integriert ist.
Es gibt einige Vorbehalte (Sie werden keine Abhängigkeiten erhalten und einige sehr komplizierte Installationsskripts können fehlschlagen), aber normalerweise funktioniert es sehr gut.
Es empfiehlt sich, die Linux Standard Base zu befolgen, insbesondere den Hierarchiestandard der Dateisysteme .