Was sind die "Standards" - sollte ich die Anwendung (nicht nur binär, sondern die gesamte Distribution) nach / usr / local oder / usr / local / share stellen?
Zum Beispiel scala oder weka - es enthält Beispiele, Binärdateien, Bibliotheken und so weiter. So würde es sein
/usr/local/scala-2.9.1
oder
/usr/local/share/scala-2.9.1
Da ich der einzige Administrator bin, ist das für mich keine große Sache, aber ich bevorzuge es, etwas zu verwenden, das weit verbreitet ist, und nicht meine eigenen Gepflogenheiten.
Wichtig: Ich frage nicht nach Fällen, in denen Sie die App in / usr / local / bin, / usr / local / lib usw. aufteilen sollten. Vielmehr frage ich nach dem Fall, wenn Sie ein Hauptverzeichnis für die gesamte Anwendung führen müssen.
software-installation
directory-structure
application
Greenoldman
quelle
quelle
/opt
ist zwar die richtige Antwort, wird aber von traditioneller Unix / Linux-Software nicht "weit verbreitet". Es gibt gute Gründe, Ihre Dateien in mehrere Verzeichnisse aufzuteilen und sich auch/usr
von/usr/local
/usr/bin
(oder/usr/local/bin
) speichern, kann Ihr $ PATH auf alle Software zugreifen, ohne dass Sie sie für jede Software bearbeiten müssen.Antworten:
Ich denke, dass / opt in dieser Art von Kontext mehr Standard ist. Der relevante Abschnitt im Dateisystem-Hierarchiestandard ist unten angegeben.
quelle
Sie sollten nur
/usr/local/share
Dateien verwenden, die nicht für eine bestimmte Architektur- / Betriebssystemversion spezifisch sind.Danach liegt es an Ihnen, ob Sie die Dateien auf die vorhandenen Unterverzeichnisse von verteilen
/usr/local
oder ob Sie ein neues dediziertes Verzeichnis in erstellen/usr/local
(letzteres ist jedoch noch nicht in der ausführbaren DateiPATH
, derLD_LIBRARY_PATH
oder der vorhandenMANPATH
).Schauen Sie sich die FHS an
quelle
bin
,share
,lib
, etcBis es
/opt
üblich wurde, war der übliche Ort/usr/local/lib/<package>
.quelle
Bei der Installation lokaler Anwendungen gibt es mehrere Optionen, je nachdem, wie Sie darauf zugreifen und aktualisieren möchten. Es sollte auch beachtet werden, dass einige Methoden eher dem System ähneln, das Sie bereits haben, und andere eher ad-hoc sind. Ich würde vorschlagen, dass die "besten" Lösungen diejenigen sind, die die Verwaltung vereinfachen.
Ich habe diese Antwort basierend auf der Anzahl der Pakete aufgeteilt, für die benutzerdefinierte Installationen durchgeführt werden sollen. Die Aufteilung basiert auf meinen eigenen Erfahrungen. Diese Erfahrungen belasten den Zeitaufwand für die Verwaltung der Pakete und das Risiko, etwas zu vermasseln. Ich meine nicht, dass ich die Kenntnis gemeinsamer Standards habe, sondern dies als Bezugspunkt für die Entscheidungsfindung.
Bei nur wenigen Paketen würde ich Add-On-Pakete einfügen
/opt
, bei denen sie nicht im Weg sind, damit nichts sie durcheinander bringt und sie etwas anderes durcheinander bringen können. Dies ist die Methode, die ich auf meinem NAS verwende. Diese Methode hält die Binärdateien jedoch von Ihrem PATH fern, sodass Sie sie manuell hinzufügen müssen. Dies funktioniert gut, wenn nur wenige Pakete installiert werden müssen, wird aber zu einem ziemlichen Durcheinander, wenn es viele gibt.Die Aktualisierung hier ist ganz einfach, da Sie das Verzeichnis einfach überschreiben.
Vorteile:
Nachteile:
PATH
unordentlich aussehenFür mehr als ein paar Pakete , würde ich empfehlen die Verwendung
/usr/local/<your package>
und sym-Verknüpfung der ausführbaren Datei aus/usr/local/bin
oder/usr/local/sbin
je nachdem , ob Sie Root - Rechte benötigen. Dies erspart es Ihnen, Ihren PFAD jedes Mal zu ändern, wenn etwas Neues hinzugefügt wird, damit der PFAD sauber bleibt. Dies ist die Methode, die ich auf meinem Arch-Laptop für alle Nicht-Pacman-Pakete und AUR-Pakete verwende.Die Aktualisierung erfolgt durch Überschreiben des Paketverzeichnisses und Überprüfen, ob der Symlink noch gültig ist, und Beheben, falls dies nicht der Fall ist.
Vorteile
PATH
unordentlichNachteile:
Für viele Pakete . Da dies nicht der Fall ist, den Sie wollen, werde ich mich kurz fassen. Ich würde Splitting das Paket in empfehlen
bin
,lib
,share
usw. und deren Installation auf/usr/local
. Dies dient dazu, die Struktur sauber zu halten. Sie können auch angeben, wer wo und mehr schreiben darf. Zum Beispiel möchten Sie nicht, dass andere Personen als root die ausführbare Datei ändern.Hier wird die Aktualisierung etwas kniffliger, da Sie in mehr als ein einziges Verzeichnis schreiben müssen. Ich würde empfehlen, das Ganze zu verpacken und den Paketmanager den Rest erledigen zu lassen.
Das Teilen
Das
share
Verzeichnis selbst ist für die Architektur unabhängige Dateien wie in Faheem des bemerkt Link sollte gehen und die Architektur abhängigen Dateienlib
,lib32
,lib64
etc.quelle