Devo installare le applicazioni Linux in / var o / opt?


83

Corro molte applicazioni open source tra cui java e tomcat. Sembra che la maggior parte delle istruzioni abbia le mie applicazioni in esecuzione dalla /vardirectory. Ma ogni tanto vedo anche la /optdirectory. Mentre ci sono, vedo anche /usr/local/e anche /etc.

Quando devo installare le applicazioni in una cartella o nell'altra? Ci sono pro e contro di ognuno? Ha a che fare con la storia dei sapori (Solaris vs Linux o Red Hat vs Ubuntu)?


8
/ etc è un posto strano e inappropriato per lasciare le applicazioni ...
user5336

Ho visto persone mettere cose in / etc, come i moduli Perl. È strano, ma succede ...
inkaphink,

6
Per ogni assurdità, c'è un campione per difenderlo.
womble

Risposte:


133

Lo standard per questi problemi è lo standard di gerarchia dei file . È un documento piuttosto grande. Fondamentalmente (e molto approssimativamente), i percorsi standard su Linux sono:

  • /bine /sbinsono programmi vitali per il sistema operativo, essendo solo per amministratori;
  • /usr/bine /usr/sbinsono per programmi non vitali, essendo solo per amministratori;
  • /varè per dati viventi per i programmi. Può essere dati cache, dati di spool, dati temporanei (a meno che non siano presenti /tmp, che vengono cancellati ad ogni riavvio), ecc.;
  • /usr/localè per i programmi installati localmente. In genere, ospita programmi che seguono gli standard ma non sono stati impacchettati per il sistema operativo, ma piuttosto sono stati installati manualmente dall'amministratore (usando ad esempio ./configure && make && make install) così come script dell'amministratore;
  • /optè per i programmi che non sono impacchettati e non seguono gli standard. Metteresti lì tutte le librerie insieme al programma. Spesso è una soluzione rapida e sporca, ma può anche essere utilizzata per programmi creati da te e per i quali desideri avere un percorso specifico. Puoi creare il tuo percorso (ad es. /opt/yourcompany) Al suo interno, e in questo caso sei incoraggiato a registrarlo come parte dei percorsi standard;
  • /etc non dovrebbe contenere programmi, ma piuttosto configurazioni.

Se i tuoi programmi sono specifici dei servizi forniti dal servizio, /srvpuò anche essere una buona posizione per loro. Ad esempio, preferisco utilizzare /srv/wwwper i siti Web piuttosto che /var/wwwassicurarmi che la directory contenga solo i dati aggiunti da me e nulla che provenga dai pacchetti software.

Ci sono alcune differenze tra le distribuzioni. Ad esempio, i sistemi RedHat usano le libexecdirectory quando i sistemi Debian / Ubuntu no.

L'FHS è utilizzato principalmente dalle distribuzioni Linux (in realtà non conosco nessun altro sistema operativo che lo rispetti davvero). Altri sistemi Unix non lo seguono. Ad esempio, i sistemi BSD tendono a essere utilizzati /usr/localper i programmi in pacchetto, il che non è il caso di Linux. Solaris ha percorsi standard molto diversi.

Ti incoraggio vivamente a leggere il documento FHS che ho linkato sopra se desideri saperne di più su questo.


1
Una delle poche liste di proiettili che mi piacerebbe stampare come un cheat sheet ...
stimpy77

6
+1 per /srv. Stavo cercando un posto per i miei repository git e non mi piaceva il mio contenuto Apache /var/www. /srvsembra il posto perfetto.
Mr. Hedgehog,

@ ℝaphink, quindi perché si chiama varinvece di data?
Pacerier

@ Mr.Hedgehog, cosa intendi con "non mi piace"? Ti interessa spiegare?
Pacerier

@Pacerier Negli anni '90 ti sarebbe stato detto che /varè per "vari dati". All'inizio Unix era ospitato su un singolo disco. Quando ciò non bastasse, ne ottennero uno nuovo, lo montarono come /usre trasferirono lì tutti i dati dell'utente. Ma non era abbastanza e il vecchio disco era di nuovo pieno presto. Quindi hanno spostato tutti i file binari che il sistema poteva avviare senza da /bina /usr/bin. Semplicemente esauriscono lo spazio. Successivamente hanno dovuto condividere i dati tra gli utenti in modo da crearli /vare utilizzarli come una casella di riepilogo. FHS è pieno di decisioni legacy del genere e dovrebbe essere preso con un pizzico di sale.
cprn,

4

optsta per software opzionale. varsta per file di sistema variabili. Pertanto le tue applicazioni dovrebbero andare a /opt.


8
/varè per vari file di sistema, non "vari".
womble

4
/ var è per "file di dati variabili". Dire che è per "vari file di sistema" è ambiguo e potenzialmente fuorviante. o_O Hai ragione su "opt" però.
phoenix8,

@Eduard, che dire di / opt / var allora? E </ usr / var>, </ usr / local / var> ...
Pacerier

@womble È una falsa etimologia. È quello che dice FHS ma non è vero. Negli anni '90 ti sarebbe stato detto che /varè per "vari dati". Ho ancora appunti da un libro pre-internet che ho letto allora.
cprn

2

Dipende da quale sia il tuo standard locale.

Personalmente, non installo nulla in / var senza una buona ragione. Il mio / usr / local è quasi sempre un nfs montato fuori dalla rete, quindi tutto ciò che non è impacchettato viene installato in / opt.


1
Cosa inseriresti comunque in / var, ad eccezione dei dati?
inkaphink,

1
di solito i programmi inseriscono le loro cose in / var. Principalmente fornito dal fornitore - registri, alcune librerie, file di controllo, file .pid, quel tipo di cose.
David Mackintosh,

2
Non sono del tutto d'accordo. Le librerie, se sono statiche, dovrebbero entrare /usr. Libs generate dinamicamente potrebbero finire in /var/libtanto in tanto, ma non vedo che cosa si sarebbe effettivamente l'installazione in /var, da un punto di amministrazione di vista. Il programma potrebbe usarlo ampiamente, ma dovrebbe essere piuttosto vuoto prima di avviarlo.
inkaphink,

1
In questo momento l'unica cosa che ho deliberatamente installato in / var è nfsen / nfdump, e questo perché l'impronta dell'applicazione è tutti i file nfdump che accumula. (E poiché questa è un'installazione di prova che in qualche modo è arrivata alla produzione. Quindi - "per l'ususale non c'è una buona ragione".) Ma è praticamente tutto. Naturalmente dal momento che non partiziono il mio disco fisso, / var, / opt e / usr sono comunque tutti sullo stesso file system.
David Mackintosh,

1
Qmail si installa in / var. Questa è una delle numerose critiche nei suoi confronti.
staticsan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.