Ligando
Você geralmente não vincula /usr/local/*
a /bin
, mas isso é mais uma prática histórica. Em geral, existem alguns motivos "técnicos" para você não conseguir fazer o que está sugerindo.
Fazer links para executáveis em /bin
pode causar problemas:
-
Provavelmente, a maior advertência seria se o seu sistema está tendo pacotes gerenciados por algum tipo de gerenciador de pacotes, como RPM, dpkg, APT, YUM, pacman, pkg_add, etc. Nesses casos, você geralmente quer deixar o gerenciador de pacotes fazer seu trabalho e gerenciar diretórios como
/sbin
,/bin
,/lib
e/usr
. Uma exceção seria/usr/local
, que normalmente é um local seguro para fazer o que você achar melhor na caixa, sem ter que se preocupar com o fato de um gerenciador de pacotes interferir em seus arquivos. -
Muitas vezes, os executáveis criados para
/usr/local
terão esse PATH codificado em seus executáveis. Também pode haver arquivos de configuração incluídos em/usr/local
como parte da instalação desses aplicativos. Portanto, vincular apenas ao executável pode causar problemas com esses aplicativos, encontrando os arquivos.cfg
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 arquivos
.cfg
também pode ocorrer com executáveis "auxiliares" que o aplicativo principal precisa executar. Eles também precisariam estar vinculados em/usr/bin
, sabendo que isso pode ser problemático e só aparecer quando você realmente tentou executar o aplicativo vinculado.
OBSERVAÇÃO: em geral, é melhor evitar a tentação de vincular aplicativos únicos em /usr/bin
.
/etc/profile.d
Em vez de todos os usuários fornecerem esse gerenciamento, o administrador poderia facilmente adicioná-lo a todos os $PATH
da caixa adicionando um arquivo correspondente no diretório /etc/profile.d
.
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 com isso.
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 o loop nas ferramentas $PATH
que podem estar fora do /bin
. O uso de ferramentas como essas é preferível, já que elas estão aderindo mais ao que a maioria dos administradores consideraria "prática padrão" e, assim, torna os sistemas mais fáceis de serem transferidos de um administrador para outro.
Esta ferramenta faz uma coisa semelhante ao criar links em /bin
; mas gerencia a criação e a destruição desses links, por isso é mais fácil entender a configuração pretendida de um sistema quando feita por meio de uma ferramenta, em comparação com o que você está sugerindo diretamente.
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
Fazer links em /bin
, embora plausíveis, provavelmente seria altamente desencorajado pela maioria dos administradores de sistema:
- Será desaprovado porque é visto como personalizado e pode gerar confusão se outro administrador precisar pegar a caixa
- Pode levar a que um sistema seja corrompido em um estado futuro como resultado dessa personalização "frágil".