Sur la liaison
Vous ne vous liez généralement pas /usr/local/*
avec /bin
, mais c'est plus une pratique historique. En général, il y a quelques raisons "techniques" pour lesquelles vous ne pouvez pas faire ce que vous proposez.
La création de liens vers des exécutables dans /bin
peut provoquer des problèmes:
La plus grande mise en garde serait probablement si votre système a des packages gérés par une sorte de gestionnaire de packages tels que RPM, dpkg, APT, YUM, pacman, pkg_add, etc. Dans ces cas, vous voudrez généralement laisser le package des répertoires tels que gestionnaire faire son travail et à gérer /sbin
, /bin
, /lib
et /usr
. Une exception serait /usr/local
généralement un endroit sûr pour faire ce que vous jugez bon sur la boîte, sans avoir à vous soucier d'un gestionnaire de paquets qui interfère avec vos fichiers.
Souvent, les exécutables construits pour /usr/local
auront ce PATH codé en dur dans leurs exécutables. Certains fichiers de configuration peuvent également être inclus dans /usr/local
le cadre de l'installation de ces applications. Ainsi, la liaison à l'exécutable peut entraîner des problèmes avec ces applications pour trouver les .cfg
fichiers ultérieurement. Voici un exemple d'un tel cas:
$ strings /usr/local/bin/wit | grep '/usr/local'
/usr/local/share/wit
/usr/local/share/wit/
Le même problème qui s'applique à la recherche de .cfg
fichiers peut également se produire avec les exécutables "d'assistance" que l'application principale doit exécuter. Ceux-ci devraient également être liés /usr/bin
, sachant que cela pourrait être problématique et n'apparaître que lorsque vous avez réellement tenté d'exécuter l'application liée.
REMARQUE: en général, il est préférable d'éviter la tentation de créer un lien vers des applications uniques dans /usr/bin
.
/etc/profile.d
Plutôt alors que tous les utilisateurs fournissent cette gestion, l'administrateur pourrait très facilement l'ajouter à tout le monde $PATH
sur la boîte en ajoutant un fichier correspondant dans le /etc/profile.d
répertoire.
Un fichier comme celui-ci /etc/profile.d/maven.sh
,:
PATH=$PATH:/usr/local/maven/bin
Vous le faites généralement en tant qu'administrateur au lieu de polluer toutes les configurations des utilisateurs avec cela.
Utiliser des alternatives
La plupart des distributions fournissent maintenant un autre outil appelé alternatives
(Fedora / CentOS) ou update-alternatives
(Debian / Ubuntu) que vous pouvez également utiliser pour boucler dans les $PATH
outils qui pourraient être en dehors de /bin
. L'utilisation d'outils tels que ceux-ci est préférable car ils adhèrent davantage à ce que la plupart des administrateurs considéreraient comme une «pratique standard» et rendent ainsi les systèmes plus faciles à transférer d'un administrateur à un autre.
Cet outil fait une chose similaire en créant des liens dans /bin
; mais il gère la création et la destruction de ces liens, il est donc plus facile de comprendre la configuration prévue d'un système lorsqu'elle est effectuée à l'aide d'un outil par rapport à celle effectuée directement comme vous le suggérez.
Ici, j'utilise ce système pour gérer le Java d'Oracle sur une boîte:
$ 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
Vous pouvez voir les effets de ceci:
$ 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
Mon 0,02 $
L'établissement de liens /bin
, bien que plausible, serait probablement fortement découragé par la plupart des administrateurs système:
- Serait mal vu car il est considéré comme personnalisé et peut prêter à confusion si un autre administrateur est nécessaire pour ramasser la boîte
- Peut conduire à la rupture d'un système dans un état futur suite à cette personnalisation "fragile".
/opt
.