Ligando
Você geralmente não ligar /usr/local/*
com /bin
, mas esta é mais uma prática histórica. Em geral, existem algumas razões "técnicas" pelas quais você não pode fazer o que está sugerindo.
Criar links para executáveis em /bin
pode causar problemas:
Provavelmente, a maior advertência seria se o sistema estiver gerenciando pacotes por algum tipo de gerenciador de pacotes, como RPM, dpkg, APT, YUM, pacman, pkg_add, etc. Nesses casos, geralmente você deseja deixar o pacote gerente de fazer o seu trabalho e gerenciar diretórios tais como /sbin
, /bin
, /lib
, e /usr
. Uma exceção seria o /usr/local
local normalmente seguro para você fazer o que achar melhor na caixa, sem precisar se preocupar com o fato de um gerenciador de pacotes interferir nos seus arquivos.
Muitas vezes, os executáveis criados para /usr/local
esse PATH são codificados em seus executáveis. Também pode haver arquivos de configuração incluídos /usr/local
como parte da instalação desses aplicativos. Portanto, vincular apenas o executável pode causar problemas com esses aplicativos, encontrando os .cfg
arquivos posteriormente. Aqui está um exemplo de tal caso:
$ strings /usr/local/bin/wit | grep '/usr/local'
/usr/local/share/wit
/usr/local/share/wit/
O mesmo problema que se aplica à localização de .cfg
arquivos também pode ocorrer com executáveis "auxiliares" que o aplicativo principal precisa executar. Eles também precisam estar vinculados /usr/bin
, sabendo que isso pode ser problemático e só aparece quando você realmente tenta executar o aplicativo vinculado.
NOTA: em geral, é melhor evitar a tentação de vincular a aplicativos únicos /usr/bin
.
/etc/profile.d
Em vez disso, se todos os usuários fornecerem esse gerenciamento, o administrador poderá adicioná-lo facilmente a todos que estiverem $PATH
na caixa, adicionando um arquivo correspondente no /etc/profile.d
diretório.
Um arquivo como este /etc/profile.d/maven.sh
:
PATH=$PATH:/usr/local/maven/bin
Você geralmente faz isso como administrador, em vez de poluir todas as configurações dos usuários.
Usando alternativas
A maioria das distros agora fornece outra ferramenta chamada alternatives
(Fedora / CentOS) ou update-alternatives
(Debian / Ubuntu), que você também pode usar para fazer um loop nas $PATH
ferramentas que podem estar fora do /bin
. O uso de ferramentas como essas é preferível, pois elas seguem mais o que a maioria dos administradores consideraria "prática padrão" e, assim, facilita a transferência de sistemas de um administrador para outro.
Essa ferramenta faz uma coisa semelhante ao criar links /bin
; mas ele gerencia a criação e a destruição desses links, portanto, é mais fácil entender a configuração pretendida de um sistema quando realizada por meio de uma ferramenta versus diretamente, como você sugere.
Aqui estou usando esse sistema para gerenciar o Java da Oracle em uma caixa:
$ ls -l /etc/alternatives/ | grep " java"
lrwxrwxrwx. 1 root root 73 Feb 5 13:15 java -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64/jre/bin/java
lrwxrwxrwx. 1 root root 77 Feb 5 13:15 java.1.gz -> /usr/share/man/man1/java-java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64.1.gz
lrwxrwxrwx. 1 root root 70 Feb 5 13:19 javac -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64/bin/javac
lrwxrwxrwx. 1 root root 78 Feb 5 13:19 javac.1.gz -> /usr/share/man/man1/javac-java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64.1.gz
lrwxrwxrwx. 1 root root 72 Feb 5 13:19 javadoc -> /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64/bin/javadoc
lrwxrwxrwx. 1 root root 80 Feb 5 13:19 javadoc.1.gz -> /usr/share/man/man1/javadoc-java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64.1.gz
Você pode ver os efeitos disso:
$ type java
java is /usr/bin/java
$ readlink -f /usr/bin/java
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.60-2.4.4.1.fc19.x86_64/jre/bin/java
Meus US $ 0,02
A criação de links /bin
, embora plausível, provavelmente seria altamente desencorajada pela maioria dos administradores de sistemas:
- Seria desaprovado porque é visto como personalizado e pode causar confusão se outro administrador for necessário para pegar a caixa
- Pode levar à quebra de um sistema em um estado futuro como resultado dessa personalização "frágil".
/opt
.