Czy powinienem instalować aplikacje Linux w / var lub / opt?

83

Korzystam z wielu aplikacji typu open source, w tym Java i Tomcat. Wygląda na to, że większość instrukcji uruchamia moje aplikacje z /varkatalogu. Ale co jakiś czas widzę też /optkatalog. W tym momencie też widzę, /usr/local/a nawet /etc.

Kiedy powinienem instalować aplikacje w jednym folderze? Czy są zalety i wady każdego z nich? Czy ma to związek z historią smaków (Solaris vs Linux lub Red Hat vs Ubuntu)?

Trevor Allred
źródło
8
/ etc to dziwne i nieodpowiednie miejsce do opuszczania aplikacji ...
user5336
Widziałem ludzi umieszczających rzeczy w / etc, na przykład moduły Perla. To dziwne, ale zdarza się ...
inkaphink
6
Dla każdego absurdu istnieje mistrz, który może go bronić.
womble

Odpowiedzi:

133

Standardem dla tych problemów jest Standard Hierarchii Plików . To dość duży dokument. Zasadniczo (i bardzo z grubsza) standardowe ścieżki w systemie Linux to:

  • /bini /sbinsą dla kluczowych programów dla systemu operacyjnego, sbin jest tylko dla administratorów;
  • /usr/bini /usr/sbinsą dla nieistotnych programów, sbin jest tylko dla administratorów;
  • /varjest dla żywych danych dla programów. Mogą to być dane z pamięci podręcznej, dane buforowania, dane tymczasowe (o ile nie są w nim /tmpusuwane przy każdym ponownym uruchomieniu) itp.;
  • /usr/localjest dla programów zainstalowanych lokalnie. Zazwyczaj hostuje programy zgodne ze standardami, ale nie zostały spakowane dla systemu operacyjnego, ale raczej instalowane ręcznie przez administratora (na przykład ./configure && make && make install), a także skrypty administratora;
  • /optdotyczy programów, które nie są spakowane i nie spełniają standardów. Po prostu umieściłeś wszystkie biblioteki razem z programem. Często jest to szybkie i nieprzyzwoite rozwiązanie, ale można go również stosować do programów tworzonych przez Ciebie i dla których chcesz mieć określoną ścieżkę. Możesz stworzyć w nim własną ścieżkę (np. /opt/yourcompany), W takim przypadku zachęcamy Cię do zarejestrowania jej jako części standardowych ścieżek;
  • /etc nie powinien zawierać programów, a raczej konfiguracje.

Jeśli twoje programy są specyficzne dla usług świadczonych przez usługę, /srvmoże być dla nich również dobrą lokalizacją. Na przykład wolę korzystać /srv/wwwz witryn internetowych niż /var/wwwmieć pewność, że katalog będzie zawierał tylko dane, które sam dodałem, i nic, co pochodzi z pakietów oprogramowania.

Istnieją pewne różnice między dystrybucjami. Na przykład systemy RedHat używają libexeckatalogów, gdy systemy Debian / Ubuntu tego nie robią.

FHS jest najczęściej używany przez dystrybucje Linuksa (tak naprawdę nie znam żadnego innego systemu operacyjnego, który byłby z nim zgodny). Inne systemy uniksowe tego nie przestrzegają. Na przykład systemy BSD zwykle używają /usr/localprogramów spakowanych, co nie ma miejsca w przypadku Linuksa. Solaris ma bardzo różne standardowe ścieżki.

Gorąco zachęcam do zapoznania się z dokumentem FHS, który zamieściłem powyżej, jeśli chcesz dowiedzieć się więcej na ten temat.

Inkaphink
źródło
1
Jedna z niewielu list wypunktowanych, które chciałbym wydrukować jako ściągawki ...
stimpy77
6
+1 dla /srv. Szukałem miejsca na moje repozytoria git i nie podobały mi się moje treści Apache /var/www. /srvwydaje się idealnym miejscem.
Pan Jeż
@ ℝaphink, więc dlaczego to się nazywa varzamiast data?
Pacerier
@ Mr.Hegehog, co rozumiesz przez „nie lubię”? Chcesz to wyjaśnić?
Pacerier,
@Pacerier W latach 90. powiedziano ci, że to /vardlatego, że dotyczy „różnych danych”. Na początku Unix był hostowany na jednym dysku. Kiedy to nie wystarczyło, dostali nowy, zamontowali go /usri przenieśli tam wszystkie dane użytkownika. Ale to nie wystarczyło i wkrótce stary dysk znów się zapełnił. Więc przenieśli wszystkie pliki binarne system mógłby bez Boot od /bincelu /usr/bin. Po prostu zabraknie im miejsca. Później musieli udostępniać dane między użytkownikami, aby utworzyli je /vari wykorzystali jako listę rozwijaną. FHS jest pełen takich starych decyzji i powinien zostać podjęty ze szczyptą soli.
cprn
4

optoznacza opcjonalne oprogramowanie. varoznacza zmienne pliki systemowe. Dlatego twoje aplikacje powinny przejść do /opt.

Eduard Wirch
źródło
8
/vardotyczy różnych plików systemowych, a nie „różnych”.
womble
4
/ var jest dla „plików danych zmiennych”. Mówienie, że dotyczy „różnych plików systemowych”, jest dwuznaczne i może wprowadzać w błąd. o_O Masz jednak rację co do opcji „opt”.
phoenix8,
@Eduard, co wtedy z opcją / opt / var? I </ usr / var>, </ usr / local / var> ...
Pacerier
@womble To fałszywa etymologia. Tak mówi FHS, ale to nieprawda. W latach 90. powiedziano ci, że to /vardlatego, że dotyczy „różnych danych”. Nadal mam notatki z przeczytanej wcześniej książki internetowej.
cprn
2

To zależy od twojego lokalnego standardu.

Osobiście nie instaluję niczego w / var bez uzasadnionego powodu. Mój / usr / local prawie zawsze jest montowany przez nfs z sieci, więc wszystko, co nie jest spakowane, instaluje się w / opt.

David Mackintosh
źródło
1
Co byś wstawił / var poza danymi?
ℝaphink,
1
zwykle programy umieszczają własne rzeczy w / var. Przeważnie dostarczone przez dostawcę - logi, niektóre biblioteki, pliki kontrolne, pliki .pid, tego typu rzeczy.
David Mackintosh,
2
Nie do końca się zgadzam. Biblioteki, jeśli są statyczne, powinny wejść /usr. Dynamicznie generowane libs może skończyć się /var/libod czasu do czasu, ale nie widzę, co można faktycznie zainstalować w /var, z punktu widzenia administratora. Program może go intensywnie wykorzystywać, ale powinien być całkiem pusty przed uruchomieniem programu.
ℝaphink,
1
W tej chwili jedyną rzeczą, którą celowo zainstalowałem w / var, jest nfsen / nfdump, a to dlatego, że śladem aplikacji są wszystkie gromadzone przez nią pliki nfdump. (A ponieważ jest to instalacja testowa, która jakoś trafiła do produkcji. Więc - „bezużytecznie nie ma uzasadnionego powodu”.) Ale to wszystko. Oczywiście, ponieważ nie dzielę dysku twardego na partycje, / var, / opt i / usr i tak znajdują się w tym samym systemie plików.
David Mackintosh,
1
Qmail instaluje się w / var. To jedna z licznych krytyek przeciwko niemu.
staticsan