Während beide Dateien enthalten sollen, die nicht zum Betriebssystem gehören, /opt
und /usr/local
nicht denselben Satz von Dateien enthalten sollen.
/usr/local
ist ein Ort zum Installieren von Dateien, die vom Administrator erstellt wurden, normalerweise mithilfe des make
Befehls (z ./configure; make; make install
. B. ). Die Idee ist, Konflikte mit Dateien, die Teil des Betriebssystems sind, zu vermeiden, die entweder überschrieben oder die lokalen überschrieben würden (z. B. /usr/bin/foo
Teil des Betriebssystems, während dies /usr/local/bin/foo
eine lokale Alternative ist).
Alle Dateien unter /usr
sind zwischen Betriebssysteminstanzen gemeinsam nutzbar, obwohl dies unter Linux selten der Fall ist. Dies ist ein Teil, in dem sich die FHS geringfügig widerspricht, da /usr
sie als schreibgeschützt definiert ist, jedoch /usr/local/bin
Lese- und Schreibzugriff benötigt, damit die lokale Installation der Software erfolgreich ist. Der SVR4-Dateisystemstandard, der die Hauptinspirationsquelle für FHS war, empfiehlt, dieses Problem zu vermeiden /usr/local
und /opt/local
stattdessen zu verwenden, um dieses Problem zu beheben.
/usr/local
ist ein Erbe aus dem ursprünglichen BSD. Zu dieser Zeit /usr/bin
befanden sich der Quellcode der Betriebssystembefehle in /usr/src/bin
und /usr/src/usr.bin
, während sich die Quelle der lokal entwickelten Befehle in /usr/local/src
befand und deren Binärdateien in /usr/local/bin
. Es gab keine Vorstellung von Verpackung (außerhalb von Tarballs).
Auf der anderen Seite /opt
befindet sich ein Verzeichnis für die Installation entbündelter Pakete (dh Pakete, die nicht Teil der Betriebssystemdistribution sind, aber von einer unabhängigen Quelle bereitgestellt werden). Jedes Verzeichnis befindet sich in einem eigenen Unterverzeichnis. Sie bestehen bereits aus kompletten Paketen, die von einem unabhängigen Softwarehändler bereitgestellt werden. Im Gegensatz zu /usr/local
Dingen folgen diese Pakete den Verzeichniskonventionen (oder sollten es zumindest tun). Beispielsweise someapp
würde installiert werden in /opt/someapp
, wobei einer seiner Befehle lautet /opt/someapp/bin/foo
, seine Konfigurationsdatei wäre in /etc/opt/someapp/foo.conf
und seine Protokolldateien wären in /var/opt/someapp/logs/foo.access
.
/usr/local
eine lokale Version des/usr
Dateisystems ist, wohingegen/opt
Platzhalter für verschiedene Dinge ist.