Система альтернатив в Debian
Система альтернатив в Debian позволяет нескольким программам, выполняющим одни и те же либо сходные задачи, зарегистрироваться как альтернативные приложения. Такие приложения могут быть установлены одновременно, однако одно из них будет назначено по умолчанию. Например, во многих системах установлено сразу несколько текстовых редакторов. Программа vi — классический пример редактора, существующего в различных реализациях: nvi, elvis, vim, и т. д. Но которая из них будет выполняться по умолчанию?
Система альтернатив в Debian призвана решить задачу выбора предпочитаемой программы по умолчанию. Управление альтернативами осуществляется утилитой update-alternatives, которая создаёт, удаляет, изменяет или отображает символические ссылки, составляющие систему альтернатив Debian. Приоритеты задаются создателями пакетов. Альтернатива с наивысшим приоритетом определяет программу по умолчанию, если используется автоматический режим. Кроме того, администратор может переопределить автоматический выбор, включив ручной режим.
Система альтернатив Debian первоначально создавалась собственно для Debian, однако в дальнейшем была перенята другими дистрибутивами GNU/Linux. К примеру, Red Hat сейчас использует форк этого кода для управления системным ПО, таким как /usr/sbin/sendmail. В RHEL/Fedora /usr/sbin/sendmail — это символическая ссылка либо на классический Sendmail, либо на Postfix — альтернативные реализации почтового агента (MTA). Фактически группа альтернатив там называется mta.
Ниже приводится ссылка на обсуждение предмета статьи в списке рассылки пользователей Debian (по-английски). Это обсуждение является хорошим введением в управление альтернативами в Debian.
Однострочные команды управления альтернативами
Длинная однострочная команда, выводящая все альтернативные символические ссылки Debian, настроенные вручную.
for i in $(ls /etc/alternatives); do LANG=C update-alternatives --display $i 2>/dev/null; done | awk '/manual.mode/{print $1}'
Если вы хотите сбросить их все в автоматический режим, то это можно сделать по тому же списку. В ином случае отфильтруйте нужные элементы командой grep.
for i in $(ls /etc/alternatives); do LANG=C update-alternatives --display $i 2>/dev/null; done | awk '/manual.mode/{print $1}' | xargs -L 1 sudo update-alternatives --auto
Пример настройки
Настроим редактор по умолчанию.
# ls -l /etc/alternatives/editor lrwxrwxrwx 1 root root 18 Jun 27 19:12 /etc/alternatives/editor -> /usr/bin/vim.basic
# update-alternatives --config editor There are 5 choices for the alternative editor (providing /usr/bin/editor). Selection Path Priority Status ------------------------------------------------------------ 0 /bin/nano 40 auto mode 1 /bin/ed -100 manual mode 2 /bin/nano 40 manual mode 3 /usr/bin/emacs23 0 manual mode 4 /usr/bin/mcedit 25 manual mode * 5 /usr/bin/vim.basic 30 manual mode Press enter to keep the current choice[*], or type selection number: 2 update-alternatives: using /bin/nano to provide /usr/bin/editor (editor) in manual mode.
В этом примере видно что до команды update-alternatives --config editor редактором был vim (/usr/bin/vim.basic), который мы поменяли на nano (/bin/nano).
# ls -l /usr/bin/editor lrwxrwxrwx 1 root root 24 Jun 27 19:03 /usr/bin/editor -> /etc/alternatives/editor # ls -l /etc/alternatives/editor lrwxrwxrwx 1 root root 9 Jun 27 19:03 /etc/alternatives/editor -> /bin/nano
Теперь при вызове visudo будет открываться nano.
См. также
galternatives — графическая утилита настройки системы альтернатив