Rock Alternative Music Prize
- 1 year ago
- 0
- 0
|
В статье есть список
источников
, но
не хватает
сносок
.
|
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). Когда группа ссылок находится в автоматическом режиме, система управления альтернативами самостоятельно решает, какая программа является предпочтительной. В ручном режиме альтернатива задаётся системным администратором и не меняется. В автоматическом режиме выбор предпочтительной программы осуществляется на основании приоритета .
Несмотря на то, что /usr/bin/gcc обычно является симлинком на одну из версий gcc (например, на /usr/bin/gcc-4.3), update-alternatives не поддерживает его как общее имя (хотя, например, поддерживает /usr/bin/cc). Это связано с несовместимостью различных версий gcc между собой и важностью соблюдения конкретной версии gcc для работоспособности всей системы. Определением того, какой компилятор в данной системе является «основным» занимается разработчик дистрибутива линукс.