Oba są zaprojektowane tak, aby zawierały pliki nienależące do systemu operacyjnego, /opt
i /usr/local
nie mają zawierać tego samego zestawu plików.
/usr/local
to miejsce do instalowania plików zbudowanych przez administratora, zwykle za pomocą make
polecenia (np ./configure; make; make install
.). Chodzi o to, aby uniknąć kolizji z plikami, które są częścią systemu operacyjnego, które w przeciwnym razie zostałyby zastąpione lub zastąpiłyby pliki lokalne (np. /usr/bin/foo
Jest częścią systemu operacyjnego, podczas gdy /usr/local/bin/foo
jest lokalną alternatywą).
Wszystkie pliki poniżej /usr
można udostępniać między instancjami systemu operacyjnego, chociaż rzadko dzieje się tak w przypadku systemu Linux. Jest to część, w której FHS jest nieco wewnętrznie sprzeczny, ponieważ /usr
jest zdefiniowany jako tylko do odczytu, ale /usr/local/bin
musi być do odczytu i zapisu, aby lokalna instalacja oprogramowania zakończyła się pomyślnie. Standard systemu plików SVR4, który był głównym źródłem inspiracji FHS, zaleca unikanie tego problemu /usr/local
i używanie go /opt/local
zamiast tego.
/usr/local
jest dziedzictwem oryginalnej BSD. W tym czasie kod źródłowy /usr/bin
komend OS były /usr/src/bin
i /usr/src/usr.bin
, podczas gdy źródło lokalnie opracowanych poleceń było /usr/local/src
, a ich binaria /usr/local/bin
. Nie było pojęcia opakowania (poza kulkami).
Z drugiej strony /opt
jest katalogiem do instalowania wydzielonych pakietów (tj. Pakietów nie stanowiących części dystrybucji systemu operacyjnego, ale dostarczonych przez niezależne źródło), każdy w swoim własnym podkatalogu. Są już zbudowane całe pakiety dostarczone przez niezależnego zewnętrznego dystrybutora oprogramowania. W przeciwieństwie do /usr/local
rzeczy, te pakiety są zgodne z konwencjami katalogowymi (a przynajmniej powinny). Na przykład someapp
zostałby zainstalowany w /opt/someapp
, z jednym poleceniem /opt/someapp/bin/foo
, jego plikiem konfiguracyjnym byłby /etc/opt/someapp/foo.conf
, a pliki dziennika w /var/opt/someapp/logs/foo.access
.
/usr/local
jest to lokalna wersja/usr
systemu plików, podczas gdy/opt
jest miejscem zastępczym dla różnych rzeczy.