По ссылкам
Вы обычно не связываетесь /usr/local/*
с /bin
, но это больше историческая практика. В общем, есть несколько «технических» причин, по которым вы не можете делать то, что предлагаете.
Создание ссылок на исполняемые файлы в /bin
может вызвать проблемы:
Вероятно, самым большим предупреждением будет то, что в вашей системе есть пакеты, управляемые каким-либо менеджером пакетов, таким как RPM, dpkg, APT, YUM, pacman, pkg_add и т. Д. В этих случаях вам, как правило, нужно разрешить пакет менеджер делать свою работу и управлять каталогами , таких как /sbin
, /bin
, /lib
, и /usr
. Единственным исключением будет то, /usr/local
что обычно это безопасное место, которое вы можете сделать по своему усмотрению, без необходимости беспокоиться о том, что менеджер пакетов может помешать работе ваших файлов.
Часто исполняемые файлы, созданные для, /usr/local
будут жестко запрограммированы в своих исполняемых файлах. Также могут быть файлы конфигурации, которые включены /usr/local
как часть установки этих приложений. Так что ссылка только на исполняемый файл может вызвать проблемы с этими приложениями, которые находят .cfg
файлы позже. Вот пример такого случая:
$ strings /usr/local/bin/wit | grep '/usr/local'
/usr/local/share/wit
/usr/local/share/wit/
Та же проблема, что и при поиске .cfg
файлов, может возникать и с исполняемыми файлами-помощниками, которые должны запускаться основным приложением. С ними тоже нужно будет связать /usr/bin
, зная, что это может быть проблематично и появиться только тогда, когда вы действительно попытаетесь запустить связанное приложение.
ПРИМЕЧАНИЕ: в общем, лучше избегать соблазна связать одно приложение с другим /usr/bin
.
/etc/profile.d
Вместо этого, чтобы все пользователи обеспечивали это управление, администратор мог бы очень легко добавить это к каждому $PATH
на коробке, добавив соответствующий файл в /etc/profile.d
каталог.
Файл, такой как этот /etc/profile.d/maven.sh
,:
PATH=$PATH:/usr/local/maven/bin
Вы обычно делаете это как администратор, а не загрязняете все настройки пользователей этим.
Использование альтернатив
Большинство дистрибутивов теперь предоставляют другой инструмент под названием alternatives
(Fedora / CentOS) или update-alternatives
(Debian / Ubuntu), который вы также можете использовать для включения в $PATH
инструменты, которые могут находиться за пределами /bin
. Использование таких инструментов предпочтительнее, поскольку они в большей степени соответствуют тому, что большинство администраторов считают «стандартной практикой», и, таким образом, упрощают передачу систем от одного администратора другому.
Этот инструмент делает то же самое при создании ссылок в /bin
; но он управляет созданием и уничтожением этих ссылок, поэтому легче понять предполагаемую настройку системы, когда она выполняется с помощью инструмента, а не напрямую, как вы предлагаете.
Здесь я использую эту систему для управления Oracle Java на коробке:
$ 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
Вы можете увидеть эффект этого:
$ 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
Мои 0,02 доллара
Создание ссылок /bin
, хотя и правдоподобных, вероятно, будет крайне обескуражено большинством системных администраторов:
- Будет осуждено, потому что это рассматривается как пользовательский и может привести к путанице, если другой администратор должен поднять флажок
- Может привести к повреждению системы в будущем в результате этой «хрупкой» настройки.
/opt
.