Devo instalar aplicativos Linux em / var ou / opt?

83

Eu corro muitos aplicativos de código aberto, incluindo java e tomcat. Parece que a maioria das instruções tem meus aplicativos em execução no /vardiretório Mas, de vez em quando, também vejo o /optdiretório. Enquanto estou nisso, eu também vejo /usr/local/e até mesmo /etc.

Quando devo instalar aplicativos em uma pasta ou na outra? Existem prós e contras de cada um? Isso tem a ver com o histórico de sabores (Solaris vs Linux ou Red Hat vs Ubuntu)?

Trevor Allred
fonte
8
/ etc é uma estranha e inadequada lugar para deixar as aplicações ...
user5336
Eu já vi pessoas colocarem coisas no / etc, como módulos Perl. É estranho, mas acontece ...
ℝaphink
6
Para todo absurdo, há um campeão para defendê-lo.
Womble

Respostas:

133

O padrão para esses problemas é o Padrão de Hierarquia de Arquivos . É um documento bastante grande. Basicamente (e muito aproximadamente), os caminhos padrão no Linux são:

  • /bin& /sbinsão para programas vitais para o sistema operacional, sendo sbin apenas para administradores;
  • /usr/bin& /usr/sbinsão para programas não vitais, sbin sendo apenas para administradores;
  • /varé para dados vivos de programas. Podem ser dados em cache, dados em spool, dados temporários (a menos que estejam dentro /tmp, que são limpos a cada reinicialização), etc.
  • /usr/localé para programas instalados localmente. Normalmente, ele hospeda programas que seguem os padrões, mas não foram empacotados para o sistema operacional, mas instalados manualmente pelo administrador (usando, por exemplo ./configure && make && make install), bem como scripts de administrador;
  • /opté para programas que não são empacotados e não seguem os padrões. Você acabou de colocar todas as bibliotecas lá junto com o programa. Geralmente, é uma solução rápida e suja, mas também pode ser usada para programas criados por você e para os quais você deseja ter um caminho específico. Você pode criar seu próprio caminho (por exemplo /opt/yourcompany) dentro dele e, nesse caso, é incentivado a registrá-lo como parte dos caminhos padrão;
  • /etc não deve conter programas, mas configurações.

Se seus programas são específicos dos serviços fornecidos pelo serviço, /srvtambém pode ser um bom local para eles. Por exemplo, prefiro usar /srv/wwwsites da Web do que /var/wwwgarantir que o diretório contenha apenas dados que eu adicionei, e nada proveniente de pacotes de software.

Existem algumas diferenças entre distribuições. Por exemplo, os sistemas RedHat usam libexecdiretórios quando os sistemas Debian / Ubuntu não.

O FHS é usado principalmente pelas distribuições Linux (na verdade, não conheço nenhum outro sistema operacional que realmente o cumpra). Outros sistemas Unix não o seguem. Por exemplo, os sistemas BSD tendem a usar /usr/localpara programas empacotados, o que não é o caso do Linux. O Solaris possui caminhos padrão muito diferentes.

Encorajo-vos vivamente a ler o documento da ESF que liguei acima, se você quiser saber mais sobre isso.

ℝaphink
fonte
11
Uma das poucas listas de marcadores que eu gostaria de imprimir como uma folha de dicas ...
stimpy77
6
+1 para /srv. Eu estava procurando um lugar para meus repositórios git e não gostava do meu conteúdo Apache /var/www. /srvParece o lugar perfeito.
Sr. Hedgehog
@ Aphink, então por que é chamado em varvez de data?
Pacerier
@ Mr.Hedgehog, o que você quer dizer com "não gosta"? Gostaria de explicar?
Pacerier
@Pacerier Nos anos 90, você deveria saber que é /varporque é para "vários dados". Nos primeiros dias, o Unix era hospedado em uma única unidade. Quando não era suficiente, eles conseguiram um novo, montaram /usre moveram todos os dados do usuário para lá. Mas isso não foi suficiente e a antiga unidade estava cheia novamente em breve. Então eles moveram todos os binários que o sistema poderia inicializar sem de /binpara /usr/bin. Eles simplesmente ficam sem espaço. Posteriormente, eles precisavam compartilhar dados entre os usuários para criar /vare usá-los como uma caixa suspensa. A ESF está cheia de decisões herdadas como essa e deve ser tomada com uma pitada de sal.
CPRN
4

optsignifica software opcional. varsignifica arquivos de sistema variáveis. Portanto, seus aplicativos devem ir para /opt.

Eduard Wirch
fonte
8
/varé para arquivos de sistema variados , não para "vários".
womble
4
/ var é para "arquivos de dados variáveis". Dizer que é para "vários arquivos do sistema" é ambíguo e potencialmente enganoso. o_O Você está certo sobre "optar".
Phoenix8
@Duard, que tal / opt / var então? E </ usr / var>, </ usr / local / var> ...
Pacerier
@ womble É uma etimologia falsa. É o que a ESF diz, mas não é verdade. Nos anos 90, você diria que é /varporque é para "vários dados". Ainda tenho anotações de um livro pré-internet que li na época.
Cprn
2

Depende do seu padrão local.

Pessoalmente, não instalo nada no / var sem uma boa razão. Meu / usr / local é quase sempre um nfs montado na rede, então qualquer coisa que não esteja empacotada é instalada no / opt.

David Mackintosh
fonte
11
O que você colocaria em / var de qualquer maneira, exceto dados?
21909 Dech
11
normalmente os programas colocam suas próprias coisas em / var. Principalmente fornecidos pelo fornecedor - logs, algumas bibliotecas, arquivos de controle, arquivos .pid, esse tipo de coisa.
David Mackintosh
2
Eu não concordo completamente. As bibliotecas, se são estáticas, devem entrar /usr. Libs geradas dinamicamente pode acabar em /var/libocasionalmente, mas eu não ver o que você realmente instalar em /var, a partir de um ponto de administração de vista. O programa pode usá-lo extensivamente, mas deve estar bem vazio antes de você iniciar o programa.
22009
11
No momento, a única coisa que instalei deliberadamente no / var é o nfsen / nfdump, e isso ocorre porque o espaço ocupado pelo aplicativo são todos os arquivos nfdump que ele acumula. (E porque esta é uma instalação de teste que de alguma forma chegou à produção. Então - "pela razão de uso não é uma boa razão".) Mas é praticamente isso. É claro que, como não particiono meu disco rígido, / var, / opt e / usr estão todos no mesmo sistema de arquivos.
David Mackintosh
11
O Qmail é instalado em / var. Essa é uma das inúmeras críticas contra.
Staticsan