En la vinculación
Por lo general, no se vinculan /usr/local/*
con /bin
, pero esto es más bien una práctica histórica. En general, hay algunas razones "técnicas" por las que no puede hacer lo que sugiere.
Hacer enlaces a ejecutables en /bin
puede causar problemas:
Probablemente la mayor advertencia sería si su sistema tiene paquetes administrados por algún tipo de administrador de paquetes como RPM, dpkg, APT, YUM, pacman, pkg_add, etc. En estos casos, generalmente querrá dejar el paquete gerente de hacer su trabajo y administrar directorios, tales como /sbin
, /bin
, /lib
, y /usr
. Una excepción sería, por /usr/local
lo general, un lugar seguro para hacer lo que mejor le parezca en la caja, sin tener que preocuparse de que un administrador de paquetes interfiera con sus archivos.
Muchas veces los ejecutables creados para /usr/local
tendrán esta RUTA codificada en sus ejecutables. También puede haber archivos de configuración que se incluyen /usr/local
como parte de la instalación de estas aplicaciones. Por lo tanto, vincular solo el ejecutable podría causar problemas con estas aplicaciones para encontrar los .cfg
archivos más tarde. Aquí hay un ejemplo de tal caso:
$ strings /usr/local/bin/wit | grep '/usr/local'
/usr/local/share/wit
/usr/local/share/wit/
El mismo problema que se aplica a la búsqueda de .cfg
archivos también puede ocurrir con ejecutables "auxiliares" que la aplicación principal necesita para ejecutarse. También sería necesario vincularlos /usr/bin
, sabiendo que esto podría ser problemático y solo aparecería cuando realmente intentara ejecutar la aplicación vinculada.
NOTA: en general, es mejor evitar la tentación de vincular aplicaciones únicas /usr/bin
.
/etc/profile.d
En lugar de que todos los usuarios proporcionen esta administración, el administrador podría agregar esto fácilmente a todos $PATH
en el cuadro agregando un archivo correspondiente en el /etc/profile.d
directorio.
Un archivo como este /etc/profile.d/maven.sh
:
PATH=$PATH:/usr/local/maven/bin
Por lo general, haces esto como administrador en lugar de contaminar todas las configuraciones de los usuarios con esto.
Usando alternativas
La mayoría de las distribuciones ahora proporcionan otra herramienta llamada alternatives
(Fedora / CentOS) o update-alternatives
(Debian / Ubuntu) que también puede usar para acceder a las $PATH
herramientas que podrían estar fuera del /bin
. Es preferible utilizar herramientas como estas, ya que se adhieren más a lo que la mayoría de los administradores considerarían "práctica estándar" y, por lo tanto, hace que los sistemas sean más fáciles de transferir de un administrador a otro.
Esta herramienta hace algo similar al crear enlaces /bin
; pero gestiona la creación y destrucción de estos enlaces, por lo que es más fácil comprender la configuración prevista de un sistema cuando se realiza a través de una herramienta en lugar de hacerlo directamente como sugiere.
Aquí estoy usando ese sistema para administrar Java de Oracle en una caja:
$ 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
Puedes ver los efectos de esto:
$ 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
Mi $ 0.02
Hacer enlaces /bin
, aunque sea plausible, probablemente sería muy desalentado por la mayoría de los administradores de sistemas:
- Sería mal visto porque se ve como personalizado y puede generar confusión si se requiere que otro administrador levante la caja
- Puede provocar que un sistema se rompa en un estado futuro como resultado de esta personalización "frágil".
/opt
.