Bağlantı üzerinde
Genel olarak bağlantı /usr/local/*
kurmazsınız /bin
, ancak bu daha çok tarihi bir pratiktir. Genel olarak, önerdiğiniz şeyi yapamamanızın birkaç "teknik" nedeni vardır.
Yürütülebilir dosyalara bağlantı yapmak /bin
sorunlara neden olabilir:
Muhtemelen en büyük uyarı sistemi eğer RPM, dpkg, APT, YUM, pacman, pkg_add, vb. Gibi bir paket yöneticisi tarafından yönetilen paketlere sahipseniz olacaktır. Bu durumlarda, genellikle paketin müdür işini ve bu şekilde dizinleri yönetmek /sbin
, /bin
, /lib
, ve /usr
. Bunun bir istisnası /usr/local
, dosyalarınızı engelleyen bir paket yöneticisi hakkında endişelenmenize gerek kalmadan, genellikle kutuya uygun gördüğünüzde güvenli bir yer olacaktır.
Çoğu zaman için inşa edilen çalıştırılabilir dosyalarda /usr/local
bu PATH çalıştırılabilir kodlarına kodlanmış olur. /usr/local
Bu uygulamaların kurulumunun bir parçası olarak verilen yapılandırma dosyaları da olabilir . Bu yüzden sadece çalıştırılabilir dosyalara bağlanmak, bu uygulamalarla ilgili .cfg
dosyaları daha sonra bulmakta sorunlara neden olabilir . İşte böyle bir durumun bir örneği:
$ strings /usr/local/bin/wit | grep '/usr/local'
/usr/local/share/wit
/usr/local/share/wit/
.cfg
Dosyaları bulmak için de aynı sorun , birincil uygulamanın çalışması gereken "yardımcı" çalıştırılabilir dosyalarla da ortaya çıkabilir. Bunların da buna bağlı olması gerekir /usr/bin
, bunun problemli olabileceğini bilmek ve yalnızca bağlantılı uygulamayı çalıştırmayı denediğinizde ortaya çıkması gerektiğini bilmek.
NOT: Genel olarak, bir uygulamadaki uygulamalarla bağlantı kurma eğiliminden kaçınmak en iyisidir /usr/bin
.
/etc/profile.d
Daha sonra, tüm kullanıcıların bu yönetimi sağlamaları yerine, yönetici $PATH
, /etc/profile.d
dizindeki ilgili dosyayı ekleyerek bu kutuyu herkesin üzerine kolayca ekleyebilir .
Bunun gibi bir dosya /etc/profile.d/maven.sh
:
PATH=$PATH:/usr/local/maven/bin
Bunu, genel olarak tüm kullanıcıların kurulumlarını kirletmek yerine, yönetici olarak yaparsınız.
Alternatifleri kullanmak
Dağıtımların çoğu şimdi, dışında olabilecek araçların içine girerken kullanabileceğiniz alternatives
(Fedora / CentOS) veya update-alternatives
(Debian / Ubuntu) adında başka bir araç sunar . Bunlar gibi araçların kullanılması tercih edilir çünkü bunlar çoğu yöneticinin "standart uygulama" olarak gördüğü şeylere daha fazla bağlı kalmaktadır ve bu nedenle sistemleri bir idareciden diğerine devretmeyi kolaylaştırmaktadır.$PATH
/bin
Bu araç, bağlantı kurmada benzer bir şey yapar /bin
; ancak bu bağlantıların oluşturulmasını ve imha edilmesini yönetir; bu nedenle, bir araç ile yapıldığında sistemin önerdiği kurulumu anlamak, doğrudan önerdiğiniz şekilde yapılır.
İşte bu sistemi Oracle'ın Java'sını bir kutuda yönetmek için kullanıyorum:
$ 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
Bunun etkilerini görebilirsiniz:
$ 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 Dolarım
Mantıklı /bin
olsa da, bağlantıların yapılması çoğu sistem yöneticisi tarafından büyük ölçüde cesaret kırılır:
- Üzerine kaşlarını çattı, çünkü özel olarak görülür ve kutuyu almak için başka bir yönetici gerekiyorsa karışıklığa neden olabilir
- Bu “kırılgan” özelleştirmenin bir sonucu olarak sistemin gelecekteki bir durumda bozulmasına neden olabilir.
/opt
.