Eu sugeriria usar o GNU Stow para criar uma hierarquia sob o diretório /opt
para qualquer software específico do site (veja Padrão da Hierarquia do Sistema de Arquivos , embora alguns sites usem /sw
). Dessa forma, suas coisas seriam
- [usando
/opt
] ... não colide com nada instalado por qualquer gerenciador de pacotes. - [usando
stow
] ... seja realmente fácil de instalar / desinstalar.
Para stow
, crie o diretório /opt/stow
.
Abaixo, crie uma sub-hierarquia completa para cada projeto individual, por exemplo
-
/opt/stow/project-1/{bin,lib,man}
-
/opt/stow/project-2/bin
-
/opt/stow/project-3/{bin,fun,share/examples}
(fun
para código shell sourcable com funções shell) - etc.
Não insira o código-fonte C, apenas as coisas necessárias para usar as ferramentas.
Então:
$ cd /opt/stow
$ stow project-1
$ stow project-2
$ stow project-3
Cada invocação de stow
preencherá o diretório /opt
com links simbólicos para os lugares corretos, de modo que seus executáveis, por exemplo, /opt/stow/project-1/bin
e /opt/stow/project-2/bin
são facilmente acessíveis em /opt/bin
.
Em seguida, adicione /opt/bin
ao seu PATH
e você está definido.
Para desinstalar , e. project-1
de /opt
:
$ cd /opt/stow
$ stow -D project-1
Isso removerá todos os links da hierarquia /opt
que aponta para /opt/stow/project-1
, mas deixará o conteúdo de /opt/stow/project-1
intacto.
Você poderia, então, se tivesse uma nova versão do seu primeiro projeto:
$ # (having un-stowed project-1, and still in /opt/stow ...)
$ mv project-1 project-1.old
$ cp $HOME/path/project-1 ./
$ stow project-1
Use stow
com o sinal -v
para ver o que realmente está acontecendo.
Basicamente, o GNU Stow facilita manter instalações separadas de aplicativos separados . Eu uso o tempo todo para o código que eu compilar e instalar em $HOME/local
(usando --prefix
com ./configure
por exemplo). Torna mais fácil desinstalar as coisas.