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
& /sbin
são para programas vitais para o sistema operacional, sendo sbin apenas para administradores;
/usr/bin
& /usr/sbin
sã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, /srv
também pode ser um bom local para eles. Por exemplo, prefiro usar /srv/www
sites da Web do que /var/www
garantir 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 libexec
diretó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/local
para 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.