Best Practice: Wo werden Linux-Pakete installiert?

3310
Radek Simko

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 ... :-)

0

4 Antworten auf die Frage

9
Ignacio Vazquez-Abrams

Dateisystemhierarchie-Standard

Die Distribution bekommt /usr, Sie bekommen /usr/local, ISVs bekommen /opt.

Ja, ich habe deinen Standpunkt verstanden, aber gibt es (dis) Vorteile bei der Installation in / usr anstelle von / sbin? Wie Berechtigungen (Sicherheit) oder Links? Radek Simko vor 14 Jahren 1
Wenn Sie lokale Pakete lokal auf Ihrem Computer in / usr / local installieren, können Sie die lokalen Pakete sichern, die Sie möglicherweise nicht für / sbin verwenden. Und ja, Sie verstehen grundlegende Prinzipien von Dateisystemen nicht. Warum sollten Sie beispielsweise nicht jede Datei in einem Verzeichnis speichern? msw vor 14 Jahren 0
Ein Nachteil bei der Installation unter / sbin -some Linux-Distros erwartet, dass das absolute Minimum ein System in / bin, / sbin und / lib und dann alle anderen Befehle unter / usr / bin, / usr / sbin und / usr startet / lib. Einige Distributionen erstellen eine sehr kleine Partition, um das Zeug unter / zu speichern, und dann eine viel größere Partition, um das Zeug unter / usr zu speichern. Überprüfen Sie daher den verfügbaren Speicherplatz unter / sbin -it. Pat Wallace vor 14 Jahren 2
4
Pat Wallace

Die besten Orte, um Pakete auf Ihrem Computer zu installieren, sind, /usr/localwenn Sie über Administratorrechte verfügen und möchten, dass alle Ihr Programm verwenden, oder $HOMEwenn Sie nur eine Kopie für sich selbst erstellen möchten.

Normalerweise würden Sie das Präfix --prefix=/usr/localso einstellen, dass die Anwendungsdateien in den /usr/local/binEinstellungen in /usr/local/etcusw. 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/binist es fast immer bei allen $PATH, also müssen Sie sich nicht mit der $PATHVariablen beschäftigen, damit die Leute sie ausführen. In ähnlicher Weise werden Bibliotheken durch Prüfen gefunden, sie werden $LD_LIBRARY_PATHjedoch /usr/local/libstandardmäß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 installwird es für Sie installiert und make uninstalldie Dateien werden automatisch entfernt.

Sie haben recht mit make deinstallieren, aber manchmal ist afaik nicht im Paket enthalten. Radek Simko vor 14 Jahren 1
Wahr. Ich mag die unten genannte Idee von checkinstall. Ich werde das nächste Mal versuchen, wenn ich etwas unter Linux installiere. Pat Wallace vor 14 Jahren 0
3
sleske

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 installund 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.

0
gbjbaanb

Es empfiehlt sich, die Linux Standard Base zu befolgen, insbesondere den Hierarchiestandard der Dateisysteme .