Soll ich die Anwendung in / usr / local oder / usr / local / share ablegen?

21

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.

Greenoldman
quelle
6
Ich denke, dass / opt in dieser Art von Kontext üblicher ist.
Faheem Mitha
@Faheem Mitha, sehr guter Punkt. Dank dir fand ich eine solche Erklärung "/ opt / 'provider' directory tree", ähnlich wie Windows neue Software in seinem eigenen Verzeichnisbaum C: \ Windows \ Progam Files \ "Program Name" von linuxtopia.org/ installiert. online_books / linux_beginner_books /… Könnten Sie bitte Ihren Kommentar als Antwort veröffentlichen, damit ich ihn als DIE Antwort markieren kann? Vielen Dank.
greenoldman
@greenoldman: Bitte beachten Sie auch , dass das Speichern aller Dateien in einem einzigen Verzeichnis nicht der "Standard" für die Installation von Anwendungen unter Unix ist. /optist 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 /usrvon/usr/local
MestreLion
Wenn Sie beispielsweise alle ausführbaren Dateien aller Anwendungen in einem einzigen /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.
Dieses

Antworten:

19

Ich denke, dass / opt in dieser Art von Kontext mehr Standard ist. Der relevante Abschnitt im Dateisystem-Hierarchiestandard ist unten angegeben.

Distributionen dürfen Software in / opt installieren, jedoch keine Software ändern oder löschen, die vom lokalen Systemadministrator ohne die Zustimmung des lokalen Systemadministrators installiert wurde.

 Begründung Die Verwendung von / opt für Add-On-Software ist in der UNIX-Community eine gängige Praxis. Die Binärschnittstelle für System V-Anwendungen [AT & T 1990], die auf der System V-Schnittstellendefinition (Third Edition) basiert, bietet eine / opt-Struktur, die der hier definierten Struktur sehr ähnlich ist.

Der Intel Binary Compatibility Standard v. 2 (iBCS2) bietet auch eine ähnliche Struktur für / opt.

Im Allgemeinen müssen alle Daten, die zur Unterstützung eines Pakets auf einem System erforderlich sind, in / opt / vorhanden sein, einschließlich der Dateien, die in / etc / opt / und / var / opt / kopiert werden sollen, sowie der reservierten Verzeichnisse in / opt.

Die geringfügigen Einschränkungen für Distributionen mit / opt sind erforderlich, da Konflikte zwischen verteilungsinstallierter und lokal installierter Software möglich sind, insbesondere bei festen Pfadnamen, die in einigen Binärprogrammen vorkommen.

Die Struktur der Verzeichnisse unter / opt / bleibt dem Paketverwalter der Software überlassen. Es wird jedoch empfohlen, Pakete in / opt // zu installieren und eine ähnliche Struktur wie die Richtlinien für / opt / package zu verwenden. Ein gültiger Grund für die Abweichung von dieser Struktur sind Support-Pakete, bei denen möglicherweise Dateien in / opt // lib oder / opt // bin installiert sind.

Faheem Mitha
quelle
5

Sie sollten nur /usr/local/shareDateien 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/localoder ob Sie ein neues dediziertes Verzeichnis in erstellen /usr/local(letzteres ist jedoch noch nicht in der ausführbaren Datei PATH, der LD_LIBRARY_PATHoder der vorhanden MANPATH).

Schauen Sie sich die FHS an

symcbean
quelle
Vielen Dank. Wenn es sich also um eine Analogie von Windows handelt, sollte es sich um / usr / local / SPECIAL_APP handeln und darin sollten sich seine Unterverzeichnisse befinden, oder?
Greenoldman
@ Greenoldman: Nein. Keine Analogie paßt , da Windows und Linux verschiedene Modelle verwenden: In Windows können Sie in der Regel alle Dateien bleiben in einem einzigen Verzeichnis, wo in Linux Sie spalteten sie in der Regel über bin, share, lib, etc
MestreLion
3

Bis es /optüblich wurde, war der übliche Ort /usr/local/lib/<package>.

Teddy
quelle
1
Nach dem, was ich gelesen habe, ist / opt ziemlich gebräuchlich und wird nur selten verwendet. Dies ist jedoch keine Überraschung, wenn man die Anzahl der in Repositories verfügbaren Pakete bedenkt.
Greenoldman
0

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:

  • einfach
  • schnell einzurichten
  • keine Chance, andere Teile des Systems zu beeinflussen
  • Die Deinstallation ist so einfach wie die Installation

Nachteile:

  • Wird ziemlich mühsam, wenn die Anzahl der zu installierenden Pakete groß ist
  • Lässt PATHunordentlich aussehen

Fü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/binoder /usr/local/sbinje 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

  • Macht nicht PATHunordentlich
  • Beeinflusst das Basissystem nicht
  • Es ist immer noch sehr einfach, alle Add-Ons zu entfernen und zu einem sauberen Basissystem zurückzukehren

Nachteile:

  • Mehr Arbeit zum Einrichten
  • Das Entfernen nur eines Pakets erfordert einige Suchvorgänge

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, shareusw. 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 shareVerzeichnis selbst ist für die Architektur unabhängige Dateien wie in Faheem des bemerkt Link sollte gehen und die Architektur abhängigen Dateien lib, lib32, lib64etc.

Lauri Tšili
quelle
Ratschläge zu geben, die auf der Anzahl der Pakete basieren, ist nicht sinnvoll. Woher weiß ich, zu welcher Gruppe mein Paket gehört?
Alois Mahdal
Auch wenn Sie sagen "es wird empfohlen", Referenzquelle oder klar angeben, dass es Ihre Empfehlung ist (ich
rate
Übrigens sehe ich nicht, dass in / opt die Wahrscheinlichkeit geringer ist, dass Dinge Ihre App durcheinander bringen, als wenn sie auf / usr usw. übertragen werden. Wenn Sie andere Apps durcheinander bringen, geht es mehr darum, Dinge richtig zu benennen und keine Fehler zu haben Skripte installieren.
Alois Mahdal
Es geht definitiv um Namen, die die Dinge durcheinander bringen. Das habe ich in der Vergangenheit erlebt und deshalb halte ich meine "Extra" -Pakete gerne von allem anderen fern. Ich möchte immer noch nicht, dass die Dinge hässlich aussehen.
Lauri Tšili
Und ja, Sie haben Recht mit dem "Es wird empfohlen", wie Sie vielleicht aus meiner Antwort ersehen können. Ich habe überall anders "Ich würde empfehlen" verwendet. Ich habe jetzt meine Rechtschreibung korrigiert und geklärt, warum ich etwas empfehlen würde. Wieder ist es nur meine Perspektive und nicht als endgültige Antwort gedacht.
Lauri Tšili