Beim Verlinken
Sie verknüpfen im Allgemeinen nicht /usr/local/*
mit /bin
, aber dies ist eher eine historische Praxis. Im Allgemeinen gibt es einige "technische" Gründe, warum Sie nicht das tun können, was Sie vorschlagen.
Das Herstellen von Links zu ausführbaren Dateien in /bin
kann zu Problemen führen:
Wahrscheinlich ist die größte Einschränkung, wenn Ihr System Pakete von einer Art Paket-Manager wie RPM, dpkg, APT, YUM, pacman, pkg_add usw. verwalten lässt. In diesen Fällen möchten Sie das Paket im Allgemeinen zulassen Manager seine Arbeit tun und zu verwalten Verzeichnisse wie /sbin
, /bin
, /lib
, und /usr
. Eine Ausnahme wäre, dass /usr/local
dies in der Regel ein sicherer Ort ist, an dem Sie tun können, was Sie für richtig halten, ohne sich Sorgen machen zu müssen, dass ein Paketmanager Ihre Dateien stört.
Oft /usr/local
ist dieser Pfad für ausführbare Dateien in ihren ausführbaren Dateien fest programmiert. Möglicherweise sind auch Konfigurationsdateien im /usr/local
Rahmen der Installation dieser Anwendungen enthalten. Wenn Sie also nur auf die ausführbare Datei verlinken, kann dies zu Problemen führen, wenn diese Apps die .cfg
Dateien später finden. Hier ist ein Beispiel für einen solchen Fall:
$ strings /usr/local/bin/wit | grep '/usr/local'
/usr/local/share/wit
/usr/local/share/wit/
Dasselbe Problem, das beim Suchen von .cfg
Dateien auftritt , kann auch bei ausführbaren Hilfsprogrammen auftreten, die von der primären App ausgeführt werden müssen. Auch diese müssen verknüpft werden /usr/bin
, da dies möglicherweise problematisch ist und nur angezeigt wird, wenn Sie tatsächlich versucht haben, die verknüpfte App auszuführen.
HINWEIS: Im Allgemeinen ist es am besten, die Versuchung zu vermeiden, eine Verknüpfung zu einmaligen Apps in zu erstellen /usr/bin
.
/etc/profile.d
Wenn dann nicht alle Benutzer diese Verwaltung bereitstellen, kann der Administrator dies ganz einfach jedem $PATH
auf der Box hinzufügen, indem er eine entsprechende Datei in das /etc/profile.d
Verzeichnis einfügt.
Eine Datei wie diese /etc/profile.d/maven.sh
:
PATH=$PATH:/usr/local/maven/bin
Sie tun dies in der Regel als Administrator, anstatt alle Setups der Benutzer damit zu belasten.
Alternativen nutzen
Die meisten Distributionen bieten jetzt ein anderes Tool namens alternatives
(Fedora / CentOS) oder update-alternatives
(Debian / Ubuntu) an, mit dem Sie auch die $PATH
Tools aufrufen können, die sich möglicherweise außerhalb des befinden /bin
. Die Verwendung von Tools wie diesen ist vorzuziehen, da diese eher dem entsprechen, was die meisten Administratoren als "Standardübung" betrachten, und so die Weitergabe der Systeme von einem Administrator an einen anderen erleichtern.
Dieses Tool führt eine ähnliche Aktion aus, indem es Verknüpfungen herstellt /bin
. Aber es verwaltet die Erstellung und Zerstörung dieser Links, so dass es einfacher ist, die beabsichtigte Einrichtung eines Systems zu verstehen, wenn dies mit einem Tool durchgeführt wird, oder direkt, wie Sie es vorschlagen.
Hier verwende ich dieses System, um Oracle Java auf einer Box zu verwalten:
$ 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
Sie können die Auswirkungen sehen:
$ 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
Meine $ 0,02
Die /bin
meisten Systemadministratoren würden davon abraten, Verknüpfungen herzustellen, obwohl dies plausibel ist:
- Wäre verpönt, weil es als Gewohnheit angesehen wird und zu Verwirrung führen kann, wenn ein anderer Administrator benötigt wird, um die Kiste abzuholen
- Kann dazu führen, dass ein System in einem zukünftigen Zustand aufgrund dieser "fragilen" Anpassung kaputt geht.
/opt
.