Sul collegamento
In genere non collegare /usr/local/*
con /bin
, ma questo è più di una pratica storica. In generale, ci sono alcuni motivi "tecnici" per cui non puoi fare ciò che stai suggerendo.
Fare collegamenti a file eseguibili /bin
può causare problemi:
Probabilmente il più grande avvertimento sarebbe se il tuo sistema sta avendo pacchetti gestiti da una sorta di gestore di pacchetti come RPM, dpkg, APT, YUM, pacman, pkg_add, ecc. In questi casi, generalmente vorrai lasciare che il pacchetto direttore di fare il suo lavoro e gestire directory come /sbin
, /bin
, /lib
, e /usr
. Un'eccezione potrebbe essere quella /usr/local
che in genere è un luogo sicuro da fare come meglio credi, senza doversi preoccupare che un gestore di pacchetti interferisca con i tuoi file.
Spesso i file eseguibili creati per /usr/local
questo PATH saranno codificati nei loro file eseguibili. Potrebbero inoltre essere presenti file di configurazione inclusi /usr/local
come parte dell'installazione di queste applicazioni. Quindi il collegamento solo all'eseguibile potrebbe causare problemi con queste app che trovano i .cfg
file più avanti. Ecco un esempio di un caso del genere:
$ strings /usr/local/bin/wit | grep '/usr/local'
/usr/local/share/wit
/usr/local/share/wit/
Lo stesso problema che si applica alla ricerca di .cfg
file può verificarsi anche con eseguibili "helper" che l'app primaria deve eseguire. Anche questi dovrebbero anche essere collegati /usr/bin
, sapendo che questo potrebbe essere problematico e mostrarsi solo quando si è effettivamente tentato di eseguire l'app collegata.
NOTA: in generale è meglio evitare la tentazione di collegarsi ad app una tantum in /usr/bin
.
/etc/profile.d
Invece piuttosto che tutti gli utenti forniscano questa gestione, l'amministratore potrebbe facilmente aggiungerlo a tutti quelli presenti $PATH
sulla scatola aggiungendo un file corrispondente nella /etc/profile.d
directory.
Un file come questo /etc/profile.d/maven.sh
,:
PATH=$PATH:/usr/local/maven/bin
In genere lo fai come amministratore invece di inquinare tutte le configurazioni degli utenti con questo.
Utilizzando alternative
La maggior parte delle distribuzioni ora fornisce un altro strumento chiamato alternatives
(Fedora / CentOS) o update-alternatives
(Debian / Ubuntu) che puoi anche usare per eseguire il loop degli $PATH
strumenti che potrebbero essere al di fuori di /bin
. L'uso di strumenti come questi è preferibile in quanto aderiscono maggiormente a ciò che la maggior parte degli amministratori considererebbe "pratica standard" e quindi rende i sistemi più facili da passare da un amministratore all'altro.
Questo strumento fa una cosa simile nel creare collegamenti /bin
; ma gestisce la creazione e la distruzione di questi collegamenti, quindi è più semplice comprendere l'impostazione prevista di un sistema quando eseguita tramite uno strumento anziché eseguita direttamente come suggerito.
Qui sto usando quel sistema per gestire Java di Oracle su una scatola:
$ 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
Puoi vedere gli effetti di questo:
$ 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
I miei $ 0,02
Fare collegamenti /bin
, sebbene plausibili, sarebbe probabilmente altamente scoraggiato dalla maggior parte dei amministratori di sistema:
- Sarebbe malvisto perché visto come personalizzato e può creare confusione se un altro amministratore è tenuto a ritirare la scatola
- Può portare alla rottura di un sistema in uno stato futuro a seguito di questa "fragile" personalizzazione.
/opt
.