Saat menautkan
Anda biasanya tidak menghubungkan /usr/local/*
dengan /bin
, tapi ini lebih dari praktek sejarah. Secara umum, ada beberapa alasan "teknis" mengapa Anda tidak dapat melakukan apa yang Anda sarankan.
Membuat tautan ke file executable /bin
dapat menyebabkan masalah:
Mungkin peringatan terbesar adalah jika sistem Anda memiliki paket yang dikelola oleh semacam manajer paket seperti RPM, dpkg, APT, YUM, pacman, pkg_add, dll. Dalam kasus ini, Anda biasanya ingin membiarkan paket tersebut manajer melakukan tugasnya dan mengelola direktori seperti /sbin
, /bin
, /lib
, dan /usr
. Satu pengecualian adalah tempat /usr/local
yang biasanya aman untuk dilakukan sesuai keinginan Anda, tanpa harus khawatir tentang manajer paket yang mengganggu file Anda.
Sering kali executable yang dibangun untuk /usr/local
memiliki PATH ini dikodekan ke dalam executable mereka. Mungkin juga ada file konfigurasi yang disertakan /usr/local
sebagai bagian dari instalasi aplikasi ini. Jadi menautkan hanya ke yang dapat dieksekusi dapat menyebabkan masalah dengan aplikasi ini menemukan .cfg
file di kemudian hari. Berikut ini contoh kasusnya:
$ strings /usr/local/bin/wit | grep '/usr/local'
/usr/local/share/wit
/usr/local/share/wit/
Masalah yang sama yang berlaku untuk menemukan .cfg
file juga dapat terjadi dengan executable "pembantu" yang harus dijalankan aplikasi utama. Ini juga perlu dihubungkan /usr/bin
, mengetahui ini mungkin bermasalah dan hanya muncul ketika Anda benar-benar berusaha untuk mengeksekusi aplikasi tertaut.
CATATAN: secara umum yang terbaik adalah menghindari godaan untuk menautkan ke satu aplikasi dalam /usr/bin
.
/etc/profile.d
Alih-alih memiliki semua pengguna menyediakan manajemen ini, admin bisa dengan mudah menambahkan ini ke semua orang $PATH
di kotak dengan menambahkan file yang sesuai di /etc/profile.d
direktori.
File seperti ini /etc/profile.d/maven.sh
,:
PATH=$PATH:/usr/local/maven/bin
Anda biasanya melakukan ini sebagai admin alih-alih mencemari semua pengaturan pengguna dengan ini.
Menggunakan alternatif
Kebanyakan distro sekarang menyediakan alat lain yang disebut alternatives
(Fedora / CentOS) atau update-alternatives
(Debian / Ubuntu) yang juga dapat Anda gunakan untuk mengulang ke $PATH
alat yang mungkin berada di luar /bin
. Menggunakan alat seperti ini lebih disukai karena ini lebih mengacu pada apa yang oleh sebagian besar admin akan dianggap sebagai "praktik standar" dan dengan demikian membuat sistem lebih mudah untuk diserahkan dari satu admin ke admin lainnya.
Alat ini melakukan hal serupa dalam membuat tautan di /bin
; tetapi mengelola pembuatan dan penghancuran tautan-tautan ini, sehingga lebih mudah untuk memahami pengaturan yang dimaksudkan sistem ketika dilakukan melalui alat vs. dilakukan secara langsung seperti yang Anda sarankan.
Di sini saya menggunakan sistem itu untuk mengelola Java Oracle pada sebuah kotak:
$ 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
Anda dapat melihat efek dari ini:
$ 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 saya
Membuat tautan /bin
, meskipun masuk akal, kemungkinan besar akan sangat tidak disukai oleh sebagian besar sysadmin:
- Akan disukai karena itu dipandang sebagai kebiasaan dan dapat menyebabkan kebingungan jika admin lain diperlukan untuk mengambil kotak
- Dapat menyebabkan sistem menjadi rusak pada kondisi di masa mendatang sebagai hasil dari penyesuaian "rapuh" ini.
/opt
.