É mais ou menos deixado para o indivíduo fazer o que quiser, mas eu recomendo que você deixe diretórios já utilizados pelo sistema básico ou por qualquer gerenciador de pacotes sozinho, sempre. Você realmente não quer confundir um gerenciador de pacotes sobrescrevendo arquivos que ele já instalou! Então, definitivamente deixe /bin
sozinho.
Na maioria dos sistemas, /usr/local
deve ser uma área segura para você instalar coisas, embora isso também seja usado pelos gerenciadores de pacotes em alguns sistemas (FreeBSD e OpenBSD, por exemplo, já que eles consideram software instalado a partir de portas / pacotes como software local.
Veja também as entradas " Padrão da hierarquia do sistema de arquivos " e " Sistema de arquivos Unix " na Wikipedia.
Alguns Unices também têm um hier(7)
manual ao qual você pode se referir. (O link vai para a versão do OpenBSD, mas também está disponível pelo menos no Ubuntu entre os Linuxes. No caso do OpenBSD, ele documenta os diretórios que o software do sistema conhece, por isso não menciona /opt
, por exemplo). p>
Onde você cria coisas não importa, pois é um diretório que você provavelmente removerá quando terminar de qualquer maneira. É uma boa idéia fazê-lo longe dos diretórios de instalação reais. Eu trabalhei em sistemas que tinham árvores de código-fonte em /bin
e /usr/local
, o que é extremamente desordenado.
Também recomendo que você faça um make install
real para o software, em vez de executar os executáveis de dentro do diretório de compilação, a menos que você esteja aprimorando a compilação. Coletar os executáveis em um único local torna seu PATH
mais limpo e mais fácil de configurar, a menos que você realmente deseje um elemento PATH
distinto para cada parte do software, obviamente.
Opinião pessoal abaixo:
Para softwares que eu construo somente para mim, costumo usar uma hierarquia privada em $HOME/local
para instalações.
Ao compilar programas que usam o GNU autotools e, portanto, tem um script configure
, isso é realmente fácil. Você acabou de dizer
$ ./configure --prefix="$HOME/local"
no estágio de configuração, antes de make
e make install
.
Ao compilar programas que usam o CMake, pode-se conseguir o mesmo por
$ cmake -DCMAKE_INSTALL_PREFIX="$HOME/local" .
antes das etapas make
e make install
. O mesmo efeito (por outros meios) pode ser obtido ao instalar módulos Perl, etc.
Então, obviamente, você terá que adicionar $HOME/local/bin
ao seu caminho ...
Pessoalmente, eu uso GNU Stow também, o que significa que eu realmente não especifico $HOME/local
como a instalação prefixo mas $HOME/local/stow/thing-2.1
quando configuro o pacote de software thing-2.1
.
Após a instalação:
$ cd "$HOME/local/stow"
$ stow thing-2.1
O conteúdo do diretório $HOME/local/stow/thing-2.1/bin
será exibido (usando links simbólicos) em $HOME/local/bin
(e, da mesma forma, para qualquer lib
ou outro diretório instalado em thing-2.1
).
O Stow facilita muito o desinstalar software. Não há necessidade de procurar cada pequeno arquivo que foi instalado por um make install
apenas para desinstalar e remover um software, em vez disso apenas
$ cd "$HOME/local/stow"
$ stow -D thing-2.1
$ rm -rf thing-2.1