Abstraksi dapat membantu pengguna karena banyak pengguna tidak peduli bagaimana komputer mereka menyelesaikan tugas selama itu tepat sasaran. Faktanya, bahkan aplikasi tidak selalu peduli bagaimana sesuatu dicapai selama semua panggilan sistemnya dijawab dengan benar. Secara teori, sysadmin Linux dapat menawarkan banyak alat sistem menurut fungsi daripada nama persis dari executable, tetapi itu sering membutuhkan banyak symlinking dan pelacakan versi. Kecuali itu, Anda menggunakan alternatives
perintah.
alternatives
perintah memulai hidupnya sebagai, yang menarik, sebuah alternatif. Awalnya, ini adalah utilitas kenyamanan, yang ditulis dalam Perl, dari proyek Debian Linux, yang disebut update-alternatives
. Red Hat menulis ulang perintah tanpa Perl, dan telah disebarkan ke seluruh distribusi berbasis Fedora seperti Red Hat dan CentOS, serta distribusi lain yang menggunakan Red Hat untuk definisi fungsional Basis Standar Linux (LSB).
Kapan menggunakan perintah alternatif
Contoh sederhana dan realistis:Anda memiliki perintah di sistem Anda yang disebut em
, yang meluncurkan editor teks sederhana. Ini telah menjadi editor masuk untuk basis pengguna Anda selama bertahun-tahun, banyak orang memiliki alur kerja berbasis di sekitarnya dan beberapa mempertahankan konfigurasi yang sangat disesuaikan untuk itu. Namun, basis pengguna Anda baru-baru ini menjelaskan kepada Anda bahwa mereka tidak dapat bertahan lebih lama lagi tanpa dukungan emoji di editor terminal dan em
mereka. tidak mendukung Unicode.
Anda menemukan garpu em
. yang diaktifkan Unicode disebut nem
, tetapi Anda tahu bahwa 99% pengguna Anda terbiasa dengan em
, memiliki skrip yang memanggil em
, dan akan terus menganggap aplikasi pengganti sebagai em
tidak peduli apa yang Anda lakukan. Solusi mudah untuk situasi ini, dan banyak contoh lain yang serupa, adalah dengan menunjuk nem
baru biner sebagai alternatif pilihan untuk em
biner ketika em
perintah yang digunakan.
Membuat symlink secara manual mungkin tampak menggoda, tetapi itu tidak tahan terhadap pembaruan dari pengelola paket, juga tidak terpusat.
alternatives
perintah paling berguna saat mengelola nama aplikasi "generik". Tentu saja di dunia UNIX, "generik" tidak selalu generik seperti halnya "Kleenex" atau "Xerox" di dunia nyata, jadi istilah seperti java , (x)emacs(-nox) , (n)vi(m) , whois , dan iptables seringkali merupakan orang pertama yang memiliki alternatif yang ditentukan untuk mereka. Untuk istilah yang benar-benar umum, seperti EDITOR
dan CC
, alternatives
perintah tidak dianggap sebagai solusi yang tepat. Untuk istilah tersebut, karena merupakan variabel lingkungan dan harus didefinisikan dalam /etc
atau $HOME/.profile
.
Membuat alternatif baru
Melanjutkan contoh skenario biner lama yang disebut em
digantikan oleh varian baru nem
, mudah untuk membuat entri alternatif. Dalam contoh ini, Anda harus mengganti nama perintah asli, meskipun dalam kasus lain ini tidak diperlukan karena perintah tersebut tidak persis seperti yang orang pikirkan (java
, misalnya, jarang ditemukan di /usr/bin
secara langsung). Jika Anda perlu mengubah nama biner, cara yang tepat untuk melakukannya adalah dalam file spesifikasi RPM-nya, sehingga RPM menginstal perintah menyediakan biner dengan nama baru.
Dalam keadaan darurat, terutama jika Anda tetap menghapus perintah secara bertahap, Anda dapat menghapus perintah dari manajemen paket sistem dan tetap menyediakan versi kustom dari perintah lama /opt
atau serupa.
Untuk contoh ini, anggap Anda telah mengganti nama editor asli em2
(menunjukkan nomor versi terbarunya).
Sekarang Anda memiliki dua binari (em2
dan nem
) untuk dikaitkan dengan satu perintah:em
. Untuk membantu menjaga agar perbedaan peran terminologi tetap jelas, asumsikan bahwa em
dan nem
keduanya editor mikro gaya Emacs. Dalam hal ini, istilah yang sangat umum untuk alternatif yang sedang dibuat mungkin adalah µemacs
(menggunakan simbol yang berarti "mikro") atau uemacs
untuk kesederhanaan.
Buat alternatif untuk yang asli dengan memberikan:
- lokasi untuk symlink "generik"
- nama alternatif (saya telah memutuskan
uemacs
, untuk memperjelas bahwa ini adalah nama referensi dan bukan biner tertentu) - biner yang akan dieksekusi ketika symlink ini dipanggil
- tingkat prioritas untuk menunjukkan alternatif mana yang lebih disukai
$ sudo alternatives --install /usr/bin/em uemacs /opt/em-legacy/em2 1
Buat alternatif untuk biner baru, dengan prioritas tinggi karena biner pilihan Anda:
$ sudo alternatives --install /usr/bin/em uemacs /usr/local/bin/nem 99
Perintah ini membuat symlink baru, /usr/bin/em
, menunjuk ke /etc/alternatives/em
, yang pada gilirannya dapat Anda tunjuk ke salah satu dari /opt/em-legacy/em2
atau /usr/local/bin/nem
. Referensi ramah manusia untuk bundel alternatif ini adalah uemacs
, yang telah dipilih secara sewenang-wenang oleh administrator sistem karena deskriptif dan mudah diingat. Anda dapat memilih tujuan symlink alternatif menggunakan --config
pilihan:
$ sudo alternatives --config uemacs
[sudo] password for seth:
There are 2 programs which provide 'uemacs'.
Selection Command
-----------------------------------------------
*+ 1 /usr/local/bin/nem
2 /opt/em-legacy/em2
Menghapus alternatif
Terkadang alternatif adalah solusi jangka panjang, dan terkadang hanya untuk membantu pengguna atau admin melakukan transisi ke sesuatu yang baru. Jika Anda perlu menghapus alternatif karena alasan apa pun, Anda dapat melakukannya dengan --remove-all
pilihan, diikuti dengan nama "generik" dari alternatif tersebut. Dalam contoh ini, itu uemacs
:
$ sudo alternatives --remove-all uemacs
Ini menghapus semua tentang uemacs
dari alternatives
subsistem:symlink di /usr/bin
dan /etc/alternatives
. Jika Anda hanya ingin menghapus satu pilihan dari alternatif, gunakan --remove
pilihan, memberikan nama alternatif (uemacs
dalam contoh ini) dan jalur pilihan yang ingin Anda jatuhkan:
$ sudo alternatives --remove uemacs /opt/em-legacy/em2
Alternatif
alternatives
command memiliki lebih banyak fitur, termasuk kemampuan untuk menghubungkan komponen dependen ketika alternatif tertentu dipilih. Selain menangani banyak pekerjaan berat, alternatives
membuat inkonsistensi Anda terpusat. Anda dapat memeriksa alternatif apa yang ada, jadi Anda tidak perlu mengingat dari hari ke hari bahwa emacs
sebenarnya emacs-26.3
, atau java
. itu bukan java-1.8
tapi /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0
, dan seterusnya:
$ alternatives --list
Linux adalah tentang pilihan dan fleksibilitas, dan alternatives
command adalah contoh bagaimana pengguna dan admin bisa mendapatkan keuntungan dari beberapa sulap pintar.
Ingin mencoba Red Hat Enterprise Linux? Unduh sekarang secara gratis.