/ usr / local lub / opt?

43

Jak ogólnie postępujesz dla instalacji pakietów w systemie Linux, dla pakietów, które nie są częścią repozytoriów twojej dystrybucji?

Po mojej stronie jestem przyzwyczajony do instalacji w / opt. Ale odtąd widziałem ten dokument w Internecie: http://www.pathname.com/fhs/ . Teraz jestem zdezorientowany: podobno / usr / local również byłby możliwy.

Jaka jest różnica między nimi? Jakieś najlepsze praktyki, którymi możesz się podzielić?

Dzięki

SirFabel


źródło
Święte terytorium wojenne, a nie tak naprawdę temat programowania do uruchomienia.
dmckee,
1
Podobne pytanie w Ask Ubuntu , superuser , unix & linux
kenchew

Odpowiedzi:

32
  • Wszystko, co należy skompilować i zainstalować w stylu uniksowym i jest zgodne z FHS ->/usr/local
  • Cała reszta (np. Aplikacja internetowa Java z własnym serwerem aplikacji i mnóstwem zasobów w archiwum zip -> /opt
lajuette
źródło
lintian nie zezwala już na instalowanie pakietów w / opt ani / usr / local
Cristiano
24

Podobnie jak dodatkowe interesujące informacje: Pierwotnym znaczeniem /usr/localjest to, że jeśli /usrjest podłączony do sieci (pojedynczy /usrwspółużytkowany na wielu komputerach), /usr/localbyłby oddzielnym systemem plików lokalnym dla komputera (partycja na dysku lokalnym).

Podczas gdy na ten temat, nawet jeśli jest to nie na temat pytania: jeśli istnieje wiele komputerów o różnych architekturach, naturalnie byłby jeden /usrdla każdego łuku, ale /usr/sharebyłby jeszcze inny osobny system plików współdzielony między architekturami (stąd „udostępnij”) .


źródło
4
Nie ... historycznie (tak, byłem tam!) / Usr i wsp. Mieli rzeczy dostarczone przez dostawcę, / usr / local było lokalnie zainstalowane (np. Bash, gcc i inne fajne rzeczy).
vonbrand
@vonbrand Czy naprawdę zaprzeczasz odpowiedzi? Wygląda na to, że wszystko, co trzeba udostępnić między hostem, to / usr, a cokolwiek też nie będzie potrzebne, będzie w / usr / local
Didier A.
@Didier A., ​​kiedy zacząłem używać Uniksa (lata 80-te), była jedna maszyna, brak sieci ... i mieli / usr i / usr / local.
vonbrand
@ vonbrand Oh widzę, interesujące. Zatem wydaje się, że pierwotna intencja posiadania / usr i / usr / local jest nadal tajemnicą.
Didier A.,
@Didier A., ​​znowu: / usr był tym, co zostało dostarczone z systemem operacyjnym, „standardowe” rzeczy, / usr / local to lokalne dodatki (homebrew, zszedł z Usenetu, zebrany od przyjaznej koleżanki na konwencji, ...) . Niestandardowy, tylko powszechne zastosowanie.
vonbrand
7

Sposób, w jaki to robię, jest taki, że jeśli wymaga on przedrostka LUB jest to pakiet binarny, wybieram opcję / opt (która jest w zasadzie sposobem na system Solaris). Jeśli kompiluję ze źródła / usr / local, to właśnie idę.

Zawietrzny
źródło
6

Umieszczam wszystko w prywatnym katalogu, a następnie używam GNU stow .

Więc zainstaluję pakiet X.ver do /BASE/stow/X.ver. GNU stow następnie połączyć wszystkie pakiety (z dowiązania) do /BASE/bin, /BASE/libitp

Konflikty i usuwanie pakietów są znacznie łatwiejsze do rozwiązania.

R Samuel Klatchko
źródło
Zwykle używam / usr / local / stow / <packagename> jako domu dla „paczek” do przechowywania i czuję, że to dobra praktyka - jeśli ktoś inny zagląda do / usr / local, to pokazuje, co się dzieje i co system utrzymuje dowiązania symboliczne.
Stephanie
3

Oto jak interpretuję standard FHS:

/ usr / local jest przeznaczony do plików budowanych lokalnie lub instalowanych lokalnie, bez względu na to, czy są spakowane, czy nie, które w jakiś sposób staną się częścią tego wystąpienia systemu operacyjnego.

/ opt to miejsce do instalowania „obcych” pakietów nie stanowiących części systemu operacyjnego.

Tak długo, jak korzystasz z plików tylko w jednym systemie, w którym je budujesz, / usr / local jest w porządku i dlatego jest domyślnym katalogiem podstawowym dla zdecydowanej większości oprogramowania typu open source.

Jeśli planujesz redystrybuować swój pakiet, zaleciłbym użycie niestandardowego katalogu podstawowego, takiego jak / opt / myPackage.

jlliagre
źródło
2

Solaris bardzo często korzystał / optował. Wiele współczesnych dystrybucji Linuksa oczekuje teraz pakietów w / usr / local /. Pomysł jest taki sam - miejsce do umieszczenia oprogramowania, które sprawia, że ​​ta maszyna robi to, co robi, w przeciwieństwie do systemu operacyjnego. Jest to mniej więcej analogiczne do „Program Files” w systemie Windows.

Wybierz jeden i trzymaj się go. Łatwo jest symlink / opt do / usr / local.

Kyle Hodgson
źródło
Podoba mi się komentarz Lee, fajny sposób na przemyślenie problemu. Byłoby dla mnie trochę dziwnie mieć opcję / opt na maszynie Debiana, ale to prawdopodobnie tylko osobiste preferencje.
Kyle Hodgson
Proszę nie. FHS może być nieco przestarzały, ale jego rozumowanie na / usr vs / usr / local vs / opt jest dźwiękowe: Standard, zapewniona dystrybucja; lokalnie zainstalowane, jak homebrew lub eksperymentalne rzeczy z github; dostarczone przez dostawcę niestandardowe rzeczy.
vonbrand
0

Jeśli ponownie skompilujesz oprogramowanie dostarczone przez dystrybucję systemu operacyjnego, aby skorzystać z kilku zalet architektury specyficznych dla twojego własnego komputera, użyj / usr / local.

Jeśli dodasz oprogramowanie z innych źródeł niż dystrybucja systemu operacyjnego, włącz je w opcji / opt.

cp7781
źródło