Czy istnieje sposób, aby wyświetlić wszystkie konfigurowalne `alternatywy` (dowiązania symboliczne dla podobnych poleceń) w systemie?

24

alternativesKomenda (pakiet chkconfig) na RHEL / Fedora zarządza dowiązania które łączą nazwę rodzajową do jednej z alternatywnych implementacji. Na przykład mtagrupa dowiązań symbolicznych może być dostarczona przez Sendmail i Postfix (w celu zaimplementowania np. sendmailPolecenia):

alternatives --display mta

Chociaż mogę --displaygrupę dowiązań symbolicznych, najpierw muszę odgadnąć jej nazwę (tj mta.).

Czy mogę po prostu wymienić wszystkie możliwe konfigurowalne grupy dowiązań symbolicznych (jak mta) do wyboru?

Powodem jest to, że czasami zapominam niektóre nazwy grup.

uvsmtid
źródło

Odpowiedzi:

25

W Debianie (ale nie w Fedorze ani RHEL), aby zobaczyć listę wszystkich „głównych alternatywnych nazw”:

update-alternatives --get-selections

--get-selections wymienia alternatywne nazwy główne i ich status.

I dla każdego z wymienionych możesz uruchomić --list $ALTERNATIVE_NAMEnp

update-alternatives --list editor

--list name Wyświetl wszystkie cele grupy łączy.

Jeśli chcesz zobaczyć listę wszystkich alternatyw w odpowiednich grupach, możesz uruchomić następujące polecenie w fishpowłoce:

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

Składnia (ba | z)? Sh powinna być podobna.

Aby zmienić alternatywy, uruchom sudo update-alternatives --config $ALTERNATIVE_NAME

kzh
źródło
1
Na mojej Fedorze 12 update-alternativesjest dowiązaniem do alternatives: /usr/sbin/update-alternatives -> alternatives. Tak więc opcja --get-selectionsniczego nie pokazuje (wyjdź z błędem pokazującym użycie).
uvsmtid
1
Nie przeczytałem pytania poprawnie. Przepraszam. To jest dla Debiana. Próbowałem znaleźć to samo co ty i nie potrafię znaleźć odpowiedzi. Zastanawiam się, czy powinienem usunąć swoją odpowiedź?
kzh
Zależy od Ciebie. Jeśli uważasz, że jest to poprawne w pewnych okolicznościach i może być przydatne dla każdego innego, warto po prostu to zostawić.
uvsmtid
16

Dokładna odpowiedź to:

ls /var/lib/alternatives

Katalog /etc/alternativesutrzymuje płaską długą listę wszystkich dowiązania mieszających panów i niewolników razem. Dowiązań symbolicznych Slave nie można używać z alternatives --display [symlink]poleceniami.

W tym samym czasie katalog /var/lib/alternativeszawiera informacje o stanie (w tym relację master-slave) dla każdej grupy na skróconej liście nazw plików, z których wszystkie mogą być bezpośrednio używane z --displayopcją. Na przykład /var/lib/alternatives/java:

alternatives --display java
uvsmtid
źródło
4
Na Ubuntu 12.04 /var/lib/alternativeswydaje się, że nie ma /var/lib/dpkg/alternatives.
Hibou57
1
Świetna odpowiedź, dzięki! Jeden dodatek: w Debianie i Armbian to /etc/alternativeszamiast/var/lib/alternatives
Alexey Vesnin
4

Najprostszą odpowiedzią byłoby ...

ls /etc/alternatives
Michael Hampton
źródło
1
Zawsze jest to bardziej oczywiste, gdy znasz już odpowiedź :)
gparent
To było również moje pierwsze przypuszczenie. Ale mnie to nie zadowoliło. Lista jest za długa i zawiera łącza master i slave.
uvsmtid
-1

W systemie Ubuntu 12.04 (może to być także kilka wcześniejszych wersji do sprawdzenia) i prawdopodobnie także Debian (do sprawdzenia):

ls /var/lib/dpkg/alternatives

Wymień to, aby uzyskać konfigurowalne nazwy alternatywne, ponieważ wpisy w tych katalogach nie są linkami. Nawiasem mówiąc, w tym katalogu może znajdować się skompresowany plik, więc wymienione tam nazwy nie zawsze mogą być używane jako takie, jakie są. Dawny. mam/var/lib/dpkg/alternatives/psql.1.gz

Hibou57
źródło
Nie bardzo pomocne, ponieważ pytanie wyraźnie stwierdza, że ​​dotyczy ono RedHat Enterprise Linux. Sposób konfiguracji RHEL jest poprawnie opisany w innych odpowiedziach.
Kosi2801,