Переводы: English - Italiano - Русский

(!) ?Discussion


Система альтернатив в 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.

См. также


CategorySystemAdministration