Есть ли способ перечислить все настраиваемые «альтернативы» (символические ссылки для похожих команд) в системе?

24

Команда alternatives(пакет chkconfig) в RHEL / Fedora управляет символическими ссылками, которые связывают общее имя с одной из альтернативных реализаций. Например, mtaгруппа символических ссылок может быть предоставлена ​​Sendmail и Postfix (для реализации, например, sendmailкоманда):

alternatives --display mta

В то время как я могу --displayгруппу символических ссылок, мне нужно сначала угадать его имя (т.е. mta).

Могу ли я просто перечислить все возможные настраиваемые группы символических ссылок (например mta) для выбора?

Причина в том, что я иногда забываю названия некоторых групп.

uvsmtid
источник

Ответы:

25

В Debian (но не в Fedora или RHEL), чтобы увидеть список всех «основных альтернативных имен»:

update-alternatives --get-selections

--get-selections список основных альтернативных имен и их статус.

И для каждого из перечисленных, вы можете запустить --list $ALTERNATIVE_NAME, например,

update-alternatives --list editor

--list name Показать все цели группы ссылок.

Если вы хотите увидеть список всех альтернатив в соответствующих группах, вы можете запустить в fishоболочке следующее :

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

Синтаксис (ba | z)? Sh должен быть примерно таким же.

Чтобы изменить альтернативы, запустите sudo update-alternatives --config $ALTERNATIVE_NAME

КЖ
источник
1
На моем Fedora 12 update-alternativesявляется символической ссылкой на alternatives: /usr/sbin/update-alternatives -> alternatives. Таким образом, опция --get-selectionsничего не показывает (выход с ошибкой, показывающей использование).
uvsmtid
1
Я не прочитал вопрос правильно. Сожалею. Это для Debian. Я пытался найти то же самое, что и ты, и я не могу с этим ответить. Интересно, я должен удалить свой ответ?
кж
Вам решать. Если вы думаете, что это правильно в некоторых обстоятельствах и может быть полезно для кого-то еще, стоит просто оставить это.
uvsmtid
16

Точный ответ:

ls /var/lib/alternatives

Справочник /etc/alternativesсодержит плоский длинный список всех симлинок смесительных мастер и раб вместе. Ведомые символические ссылки не могут быть использованы с alternatives --display [symlink]командой.

В то же время каталог /var/lib/alternativesсодержит информацию о состоянии (включая отношения «ведущий-ведомый») для каждой группы в сокращенном списке имен файлов, все из которых можно напрямую использовать с --displayопцией. Например, /var/lib/alternatives/java:

alternatives --display java
uvsmtid
источник
4
На Ubuntu 12.04 нет /var/lib/alternatives, вроде бы /var/lib/dpkg/alternatives.
Hibou57
1
Отличный ответ, спасибо! Одно дополнение: на Debian и Armbian это /etc/alternativesвместо/var/lib/alternatives
Алексей Веснин
4

Самый простой ответ был бы ...

ls /etc/alternatives
Майкл Хэмптон
источник
1
Это всегда более очевидно, когда вы уже знаете ответ :)
gparent
Это было также мое первое предположение. Но это не удовлетворило меня. Список слишком длинный, содержащий основные и подчиненные ссылки.
Uvsmtid
-1

В Ubuntu 12.04 (могут быть также некоторые предыдущие версии, которые нужно проверить) и, возможно, также в Debian (чтобы проверить):

ls /var/lib/dpkg/alternatives

Перечислите это просто, чтобы получить настраиваемые альтернативные имена, так как записи в этих каталогах не являются ссылками. Кстати, в этом каталоге может быть сжатый файл, поэтому имена, перечисленные там, не всегда могут использоваться как есть. Ex. у меня есть/var/lib/dpkg/alternatives/psql.1.gz

Hibou57
источник
Не очень полезно, так как в вопросе четко указано, что это относится к RedHat Enterprise Linux. Способ настройки RHEL правильно описан в других ответах.
Kosi2801