Não importa qual organização seja escolhida, isso tornará algumas coisas mais fáceis e outras mais difíceis.
Organização de arquivos por tipos, o caminho Unix (Into bin
, man
, lib/python
, ...), torna mais fácil de usar arquivos. Se você deseja executar um comando, sabe onde encontrá-lo, não importa qual pacote o forneça. Se você deseja pesquisar na documentação, está tudo em um só lugar. Se algum programa fornecer um módulo de destaque de sintaxe do Vim, uma função de conclusão do zsh ou ligações do Python, o arquivo relevante estará em um local onde o vim / zsh / python possa encontrá-lo.
O Unix também organiza arquivos por padrões de uso. Os arquivos de configuração entram /etc
, os arquivos que não mudam na operação normal entram /usr
e os arquivos que mudam automaticamente entram /var
. Os dados do usuário ficam abaixo /home
. Isso é muito útil para o gerenciamento de configurações (gerencie o conteúdo, /etc
mais a lista de pacotes instalados). Também é útil definir estratégias de backup: o que há /etc
e /home
é extremamente importante, enquanto o conteúdo /usr
pode ser facilmente baixado novamente.
O principal custo da maneira Unix é que a instalação de um software está espalhada por vários diretórios. No entanto, sistemas unix modernos têm gerenciadores de pacotes de qualquer maneira; gerenciar arquivos em muitos diretórios não é de longe a coisa mais complexa que eles fazem (rastrear dependências é muito útil e mais difícil).
Compare isso com o Windows. O Windows começou sem gerenciamento de pacotes e cada aplicativo criou seu próprio diretório em algum lugar. Todos os arquivos normalmente estariam dentro desse diretório: programas, dados estáticos, dados do usuário, ... Exceto algumas vezes nas bibliotecas, quais programas cairiam em um diretório comum do sistema sem considerar conflitos ("DLL hell"). Com o tempo, o Windows tornou-se multiusuário, exigindo a separação dos diretórios do usuário dos diretórios do sistema. O Windows também criou um local central para arquivos de configuração (Unix /etc
) e alguns dados do sistema (Unix's)./var
), o registro. Esse é um artefato histórico em grande parte devido à falta de gerenciamento de pacotes e ao histórico inicial como um sistema de usuário único. A abordagem do Windows tem muitas limitações: não permite que os pacotes de software interajam facilmente. Por exemplo, a maioria dos softwares instalados não termina no caminho de pesquisa de comando padrão, portanto, interage mal com qualquer forma de script. Os instaladores normalmente fornecem um ícone de menu como um caso especial - soltos em um diretório de sistema separado (à la Unix!).
Uma limitação da abordagem do Unix é que ela não permite facilmente a coexistência de várias versões de um pacote, o que é especialmente problemático enquanto o pacote está sendo atualizado. Uma maneira de obter o melhor dos dois mundos seria descompactar cada pacote em seu próprio diretório (uma /opt
estrutura) e criar florestas de links simbólicos dos diretórios de pacotes para uma /usr
estrutura. É isso que software como o stow faz.
Em resumo, a abordagem Unix facilita o uso de arquivos, o gerenciamento de arquivos e a permissão de pacotes para interagir; requer software de gerenciamento de pacotes, mas é desejável de qualquer maneira. A abordagem do Windows facilita o gerenciamento de pacotes manualmente, mas precisa se voltar para o modelo Unix para obter funcionalidades úteis.