Apakah ada cara untuk mendaftar semua `alternatif` yang dapat dikonfigurasi (symlink untuk perintah serupa) pada sistem?

24

The alternativesperintah (paket chkconfig) di RHEL / Fedora mengelola symlink yang menghubungkan nama generik untuk salah satu implementasi alternatif. Sebagai contoh, mtagrup symlink dapat disediakan oleh Sendmail dan Postfix (untuk mengimplementasikan sendmailperintah ie ):

alternatives --display mta

Meskipun saya dapat --displaysekelompok symlink, saya perlu menebak namanya terlebih dahulu (yaitu mta).

Bisakah saya mendaftar semua kelompok symlink yang dapat dikonfigurasi (seperti mta) untuk dipilih?

Alasannya adalah saya terkadang lupa beberapa nama grup.

uvsmtid
sumber

Jawaban:

25

Di Debian (tetapi bukan Fedora atau RHEL), untuk melihat daftar semua "nama alternatif utama":

update-alternatives --get-selections

--get-selections daftar nama alternatif master dan statusnya.

Dan untuk masing-masing yang terdaftar, Anda dapat menjalankan --list $ALTERNATIVE_NAME, mis

update-alternatives --list editor

--list name Tampilkan semua target grup tautan.

Jika Anda ingin melihat daftar semua alternatif di grup masing-masing, Anda dapat menjalankan yang berikut ini di fishshell:

for alternative in (update-alternatives --get-selections)
    echo $alternative 
    update-alternatives --list (echo $alternative | cut -d" " -f1)
    echo
end | pager

Sintaks (ba | z)? Sh harus serupa.

Untuk mengubah alternatif, jalankan sudo update-alternatives --config $ALTERNATIVE_NAME

kzh
sumber
1
Pada saya Fedora 12 update-alternativesadalah sebuah symlink ke alternatives: /usr/sbin/update-alternatives -> alternatives. Jadi, opsi --get-selectionstidak menunjukkan apa-apa (keluar dengan kesalahan yang menunjukkan penggunaan).
uvsmtid
1
Saya tidak membaca pertanyaan dengan benar. Maaf. Ini untuk Debian. Saya berusaha menemukan hal yang sama seperti Anda dan saya tidak dapat menjawab jawaban ini. Saya ingin tahu apakah saya harus menghapus jawaban saya?
kzh
Terserah kamu. Jika menurut Anda itu benar dalam beberapa keadaan dan mungkin berguna bagi orang lain, ada baiknya untuk membiarkannya begitu saja.
uvsmtid
16

Jawaban pastinya adalah:

ls /var/lib/alternatives

Direktori /etc/alternativesmempertahankan daftar panjang datar semua symlink pencampuran tuan dan budak bersama-sama. Symlink budak tidak dapat digunakan dengan alternatives --display [symlink]perintah.

Pada saat yang sama direktori /var/lib/alternativesberisi informasi status (termasuk hubungan master-slave) untuk setiap grup dalam daftar nama file yang singkat yang semuanya dapat langsung digunakan dengan --displayopsi. Sebagai contoh, /var/lib/alternatives/java:

alternatives --display java
uvsmtid
sumber
4
Di Ubuntu 12.04, /var/lib/alternativessepertinya tidak ada /var/lib/dpkg/alternatives.
Hibou57
1
Jawaban yang bagus, Terima kasih! Satu tambahan: pada Debian dan Armbian itu /etc/alternativesbukan/var/lib/alternatives
Alexey Vesnin
4

Jawaban paling sederhana adalah ...

ls /etc/alternatives
Michael Hampton
sumber
1
Itu selalu lebih jelas ketika Anda sudah tahu jawabannya :)
gparent
Itu juga tebakan pertama saya. Tapi itu tidak memuaskan saya. Daftar ini terlalu panjang berisi tautan utama dan slave sama sekali.
uvsmtid
-1

Di Ubuntu 12.04 (mungkin beberapa versi sebelumnya juga, untuk diperiksa) dan mungkin Debian juga (untuk diperiksa):

ls /var/lib/dpkg/alternatives

Daftar hanya untuk mendapatkan nama alternatif yang dapat dikonfigurasi, karena entri dalam direktori ini bukan tautan. Ngomong-ngomong, mungkin ada file terkompresi dalam direktori ini, jadi nama-nama yang tercantum di sana, tidak selalu dapat digunakan apa adanya. Ex. Saya punya/var/lib/dpkg/alternatives/psql.1.gz

Hibou57
sumber
Tidak terlalu membantu, karena pertanyaannya dengan jelas menyatakan bahwa itu berlaku untuk RedHat Enterprise Linux. Cara mengonfigurasi RHEL dijelaskan dengan benar dalam jawaban lainnya.
Kosi2801