Não importa qual organização seja escolhida, isso facilitará algumas coisas e algumas coisas serão mais difíceis.
Organizando arquivos por tipos, a maneira Unix (em bin
, man
, lib/python
,…) facilita o uso de arquivos. Se você deseja executar um comando, sabe onde encontrá-lo, não importa qual pacote o forneça. Se você quiser pesquisar por documentação, tudo estará em um só lugar. Se algum programa fornecer um módulo de realce 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 poderá encontrá-lo.
O Unix também organiza arquivos por padrões de uso. Os arquivos de configuração entram em /etc
, os arquivos que não são alterados na operação normal entram em /usr
e os arquivos que mudam automaticamente vão em /var
. Os dados do usuário vão para /home
. Isso é muito útil para o gerenciamento de configuração (gerenciar o que está em /etc
mais a lista de pacotes instalados). Também é útil definir estratégias de backup: o que está em /etc
e /home
é extremamente importante, enquanto o que está em /usr
pode ser facilmente baixado novamente.
O principal custo da maneira Unix é que a instalação de um software é distribuída por vários diretórios. Entretanto, os modernos sistemas unix possuem 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, às vezes, para bibliotecas, quais programas cairiam em um diretório comum do sistema, sem levar em conta conflitos (“inferno da DLL”). Com o tempo, o Windows tornou-se multiusuário, exigindo a separação de diretórios de usuários dos diretórios do sistema. O Windows também criou um local central para arquivos de configuração ( /etc
do Unix) e alguns dados do sistema ( /var
do Unix), o registro. Este é mais 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 acaba no caminho de pesquisa de comandos padrão, portanto, ele interage mal com qualquer forma de script. Os instaladores geralmente fornecem um ícone de menu como um caso especial - colocado em um diretório de sistema separado (à la Unix!).
Uma limitação da abordagem Unix é que ela não permite facilmente a coexistência de múltiplas 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 estrutura /opt
) e criar florestas de links simbólicos de diretórios de pacotes para uma estrutura /usr
. É isso que um software como o stow faz.
Em resumo, a abordagem Unix facilita o uso de arquivos, o gerenciamento de arquivos e a permissão de interação entre pacotes; requer software de gerenciamento de pacotes, mas isso é desejável de qualquer maneira. A abordagem do Windows facilita o gerenciamento de pacotes manualmente, mas tem que se direcionar para o modelo Unix para obter funcionalidade útil.