Interested Article - Alternatives

Alternatives — механизм выбора предпочтительного ПО среди нескольких вариантов в некоторых дистрибутивах Linux .

Впервые появился в Debian , откуда попал в дистрибутивы, производные от Debian (такие, как Ubuntu). Также был перенесён в Red Hat Linux , откуда попал во многие RPM -based дистрибутивы.

История

Определённые функции могут предоставляться несколькими программами, однако, в силу тех или иных причин, в качестве «главной» (основной) может использоваться только одна. Например, «слушать» какой-либо порт в один момент времени может только одна программа, таким образом, например, в качестве почтового сервера (принимающего почту по стандартному порту SMTP ) может работать только одна программа. Аналогично, разные почтовые серверы имеют различное устройство, однако все они должны предоставлять интерфейс программы sendmail .

Изначально для этого использовались создаваемые вручную символические ссылки (например, /usr/bin/sendmail делался симлинком на соответствующую программу из пакета программ почтового сервера (такого, как Exim , Postfix и т. д.).

В дальнейшем этот метод был расширен на многие применения и был стандартизирован.

update-alternatives написан Яном Джексоном (Ian Jackson) в 1995 и входит в состав пакета dpkg (менеджера пакетов Debian) и является его неотъемлемой частью.

Принципы работы

Update-alternatives управляет симлинками с заранее оговоренных имён на реальные приложения. Например, /usr/bin/x-www-browser (графический браузер) может указывать на /usr/bin/ firefox , /usr/bin/ konqueror , /usr/bin/ opera или на другой браузер. Программе, которой нужно вызвать браузер, не нужно знать о всём многообразии браузеров или предоставлять особую настройку выбора браузера, эта программа просто вызывает /usr/bin/x-www-browser, когда нужно, а правильно выбранная альтернатива предоставляет возможность администратору системы указать, каким именно этот браузер должен быть.

В рамках модели alternatives общее имя (такое, как /usr/bin/ sendmail , /usr/bin/ed, /usr/bin/x-www-browser) указывает не на нужный файл напрямую, а на имя в каталоге альтернатив , которое, в свою очередь уже является симлинком на файл, предоставляющий нужную функциональность. Общее имя не обязательно должно быть программой, например, это может быть страница справки, шрифта, словаря и т. д.

При установке каждого пакета, который предоставляет специфичную функциональность, вызывается update-alternatives, который сохраняет информацию о появлении (исчезновении) какой-либо альтернативы. Обычно вызов осуществляется в секциях postinst (скрипт после установки) или prerm (скрипт до удаления). Если удаляется последний из пакетов, предоставляющих функциональность, характерную для общего имени, то симлинк и общее имя удаляются. (Например, на сервере без графической оболочки может не быть /usr/bin/x-www-browser, при отсутствующей программе рисования диаграмм не будет ссылки /usr/bin/dia и т. д.)

Дополнительно, существует возможность группировать зависимости, указывая основные ссылки (master) и вторичные (slave). Каждая ссылка может быть автоматической или заданной вручную (manual). Когда группа ссылок находится в автоматическом режиме, система управления альтернативами самостоятельно решает, какая программа является предпочтительной. В ручном режиме альтернатива задаётся системным администратором и не меняется. В автоматическом режиме выбор предпочтительной программы осуществляется на основании приоритета .

Терминология

  • общее имя (generic name) — имя, для которого формируется несколько альтернатив, например, /usr/bin/editor.
  • симлинк (symlink) — символическая ссылка в каталоге альтернатив.
  • альтернатива (alternative) — имя специфичной программы, предоставляющей функциональность для общего имени.
  • каталог альтернатив (alternative directory) — каталог с симлинками на альтернативы (в debian — /etc/alternatives)
  • административный каталог (administrative directory) — каталог с информацией update-alternatives о статусе альтернатив (в debian — /var/lib/dpkg/alternatives)
  • группа ссылок (link group) — набор связанных симлинков на альтернативы, которые должны меняться синхронно
  • основная ссылка (master link) — ссылка, определяющая значения вторичных ссылок
  • вторичные ссылки (slave link) — ссылки в группе ссылок, зависящие от первичной ссылки
  • автоматический режим (automatic mode) — режим, при котором выбор альтернативы для общего имени производится исходя из приоритетов
  • ручной режим (manual mode) — режим, при котором выбор альтернативы для общего имени производится администратором вручную

Примеры общих имён

  • cc (компилятор языка Си в системе, обычно gcc)
  • ftp (ftp-клиент)
  • editor (редактор, обычно vi, vim, nano или emacs)
  • x-window-manager (оконный менеджер в X-server )
  • x-www-browser (браузер в X-server )
  • www-browser (текстовый браузер)
  • pager (программа «листания» текста, такая как more, less)
  • x-terminal-emulator (эмулятор терминала для X-server)
  • desktop-splash (изображение, показываемое при загрузке gnome)
  • x-cursor-theme (вид курсора в X-server)

/usr/bin/gcc

Несмотря на то, что /usr/bin/gcc обычно является симлинком на одну из версий gcc (например, на /usr/bin/gcc-4.3), update-alternatives не поддерживает его как общее имя (хотя, например, поддерживает /usr/bin/cc). Это связано с несовместимостью различных версий gcc между собой и важностью соблюдения конкретной версии gcc для работоспособности всей системы. Определением того, какой компилятор в данной системе является «основным» занимается разработчик дистрибутива линукс.

Источники

Источник —

Same as Alternatives