Instale cada programa em uma árvore de diretório dedicada e use o Stow ou XStow para fazer com que todos os programas apareçam em uma hierarquia comum. O Stow cria links simbólicos do diretório específico do programa para uma árvore comum.
Mais detalhadamente, escolha um diretório de nível superior, por exemplo, /usr/local/stow
. Instale cada programa em /usr/local/stow/PROGRAM_NAME
. Por exemplo, organize seus executáveis para serem instalados em /usr/local/stow/PROGRAM_NAME/bin
, suas páginas man em /usr/local/stow/man/man1
e assim por diante. Se o programa usar o autoconf, execute ./configure --prefix /usr/local/stow/PROGRAM_NAME
. Depois de executar make install
, execute stow
:
./configure --prefix /usr/local/stow/PROGRAM_NAME
make
sudo make install
cd /usr/local/stow
sudo stow PROGRAM_NAME
E agora você terá links simbólicos como estes:
/usr/local/bin/foo -> ../stow/PROGRAM_NAME/bin/foo
/usr/local/man/man1/foo.1 -> ../../stow/PROGRAM_NAME/man/man1/foo.1
/usr/local/lib/foo -> ../stow/PROGRAM_NAME/lib/foo
Você pode facilmente acompanhar quais programas você instalou listando o conteúdo do diretório stow
e sempre sabe a que programa um arquivo pertence, porque é um link simbólico para um local no diretório desse programa. Desinstale um programa executando stow -D PROGRAM_NAME
e excluindo o diretório do programa. Você pode tornar um programa temporariamente indisponível executando stow -D PROGRAM_NAME
(execute stow PROGRAM_NAME
para torná-lo disponível novamente).
Se você quiser alternar rapidamente entre diferentes versões do mesmo programa, use /usr/local/stow/PROGRAM_NAME-VERSION
como o diretório do programa. Para atualizar da versão 3 para a versão 4, instale a versão 4 e execute stow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4
.
As versões mais antigas do Stow não vão muito além do básico que descrevi nesta resposta. Versões mais recentes, assim como o XStow (que não foi mantido ultimamente), possuem recursos mais avançados, como a capacidade de ignorar certos arquivos, lidar melhor com links simbólicos existentes fora do diretório stow (como man -> share/man
), lidar com alguns conflitos automaticamente (quando dois programas fornecem o mesmo arquivo), etc.
Se você não quiser ou não quiser usar o acesso root, poderá escolher um diretório em seu diretório pessoal, por exemplo, %código%. Nesse caso, adicione ~/software/stow
ao seu ~/software/bin
. Se PATH
não encontrar automaticamente as páginas man, adicione man
ao seu ~/software/man
. Adicione MANPATH
ao seu ~/software/info
, INFOPATH
ao seu ~/software/lib/python
e assim por diante, conforme aplicável.