/ usr / local oder / opt?

43

Wie gehen Sie im Allgemeinen für Ihre Paketinstallationen unter Linux vor, für Pakete, die nicht Teil der Repos Ihrer Distribution sind?

An meiner Seite bin ich es gewohnt, in / opt zu installieren. Aber seitdem habe ich dieses Dokument im Internet gesehen: http://www.pathname.com/fhs/ . Jetzt bin ich verwirrt: anscheinend wäre / usr / local auch eine möglichkeit.

Was ist der Unterschied zwischen beiden? Best Practices zum Teilen?

Vielen Dank

SirFabel


quelle
Heiliges Kriegsgebiet und eigentlich kein Programmierthema.
dmckee
1
Ähnliche Frage in Frage Ubuntu , Superuser , Unix & Linux
Kenchew

Antworten:

32
  • Alles, was übersetzt und installiert werden muss Unix-Stil zu FHS und erfüllt ->/usr/local
  • Alles andere (z. B. eine Java-Webanwendung, die einen eigenen Anwendungsserver und viele Ressourcen in einem Zip-Archiv enthält -> /opt
lajuette
quelle
lintian erlaubt nicht mehr die Installation von Paketen auf / opt und / usr / local
Cristiano
24

Nur als zusätzliche interessante Info: Die ursprüngliche Bedeutung von /usr/localist, dass, wenn /usres im Netzwerk installiert ist (einzeln /usrauf mehreren Computern gemeinsam genutzt), /usr/localein separates Dateisystem auf dem Computer vorhanden ist (Partition auf lokaler Festplatte).

Und während dieses Themas, auch wenn es sich nicht um die Frage handelt: Wenn es mehrere Computer mit unterschiedlichen Architekturen gibt, gibt es natürlich einen /usrfür jeden Bogen, aber /usr/sharees gibt noch ein anderes Dateisystem, das von den Architekturen gemeinsam genutzt wird (daher "Teilen"). .


quelle
4
Nein ... in der Vergangenheit (ja, ich war da!) Hatten / usr et al das vom Anbieter bereitgestellte Zeug, / usr / local das lokal installierte Zeug (dh bash, gcc und anderes nettes Zeug).
Vonbrand
@vonbrand Widersprichst du wirklich der Antwort? Es klingt nur so, als ob das, was zwischen Hosts geteilt werden muss, / usr wäre und was nicht auch benötigt wird, wäre in / usr / local
Didier A.,
@Didier A., ​​als ich anfing, Unix ('80es) zu verwenden, gab es eine Maschine, kein Netzwerk ... und sie hatten / usr und / usr / local.
Vonbrand
@vonbrand Oh ich verstehe, interessant. Dann scheint die ursprüngliche Absicht, / usr und / usr / local zu haben, immer noch ein Rätsel zu sein.
Didier A.
@Didier A., ​​nochmal: / usr war das, was mit dem Betriebssystem ausgeliefert wurde, "Standard" Zeug, / usr / local waren lokale Ergänzungen (homebrewed, aus dem Usenet rausgeholt, von einem befreundeten Kollegen auf einer Convention gefilmt, ...) . Nicht Standard, nur allgemeine Verwendung.
vonbrand
7

Die Art und Weise, wie ich es mache, ist, dass ich mich für / opt entscheide, wenn es ein Präfix für sich selbst oder ein Binärpaket erfordert (was so ziemlich der Solaris-Weg ist). Wenn ich aus dem Quellcode / usr / local kompiliere, gehe ich so vor.

Lee
quelle
6

Ich habe alles in ein privates Verzeichnis gelegt und benutze dann GNU stow .

Also werde ich das Paket X.ver installieren /BASE/stow/X.ver. GNU Stow wird dann kombiniert alle Pakete (mit Symlinks) in /BASE/bin, /BASE/libusw.

Konflikte und das Entfernen von Paketen sind viel einfacher zu handhaben.

R Samuel Klatchko
quelle
Normalerweise habe ich / usr / local / stow / <Paketname> als Zuhause für "Pakete" zum Verstauen verwendet und denke, es ist eine gute Übung - wenn jemand anderes in / usr / local nachschaut, wird deutlich, was los ist und was System pflegt die Symlinks.
Stephanie
3

So interpretiere ich den FHS-Standard:

/ usr / local ist für lokal erstellte oder lokal installierte Dateien vorgesehen, unabhängig davon, ob diese gepackt sind oder nicht, die zu einem Teil dieser Instanz des Betriebssystems werden.

/ opt ist ein Ort zum Installieren von "fremden" Paketen, die nicht Teil des Betriebssystems sind.

Solange Sie nur Dateien auf dem einzelnen System verwenden, auf dem Sie sie erstellen, ist / usr / local in Ordnung, und es ist daher das Standardbasisverzeichnis für die überwiegende Mehrheit der Open-Source-Software.

Wenn Sie vorhaben, Ihr Paket erneut zu verteilen, würde ich die Verwendung eines benutzerdefinierten Basisverzeichnisses wie / opt / myPackage empfehlen.

jlliagre
quelle
2

Solaris verwendet / opt viel. Viele moderne Linux-Distributionen erwarten jetzt Pakete in / usr / local /. Die Idee ist die gleiche - ein Ort, an dem Software installiert wird, mit der dieser Computer im Gegensatz zum Betriebssystem die gleichen Funktionen ausführt. Es ist ungefähr analog zu "Programme" auf einem Windows-System.

Wählen Sie eine und bleiben Sie dabei. Es ist einfach genug, symlink / opt auf / usr / local zu setzen.

Kyle Hodgson
quelle
Ich mag Lees Kommentar, nette Art, über das Problem nachzudenken. Es wäre ein bisschen komisch für mich, ein / opt auf einem Debian-Rechner zu haben, aber das ist wahrscheinlich nur eine persönliche Präferenz.
Kyle Hodgson
Bitte nicht Das FHS ist vielleicht ein bisschen veraltet, aber die Argumentation für / usr vs / usr / local vs / opt ist vernünftig: Standard, Verteilung vorgesehen; lokal installiert, wie Homebrew oder experimentelles Zeug von Github; Vom Anbieter bereitgestellte nicht standardmäßige Inhalte.
vonbrand
0

Wenn Sie eine von Ihrer Betriebssystemdistribution bereitgestellte Software neu kompilieren, verwenden Sie / usr / local, um mehrere Architekturvorteile zu nutzen, die für Ihren eigenen Computer spezifisch sind.

Wenn Sie eine Software aus anderen Quellen als der Betriebssystemdistribution hinzufügen, fügen Sie sie in / opt ein.

cp7781
quelle