Alternatives

Материал из ALT Linux Wiki

Название пакета

alternatives

Назначение

Система альтернатив предназначена для того, чтобы из нескольких установленных альтернативных программ выбрать одну, которая будет исполняться по умолчанию. Подобной программой может быть, например, текстовый редактор, браузер, почтовый клиент и другие. В системе заданы ряд переменных альтернатив, список которых можно увидеть в директории /etc/alternatives/links или с помощью команды alternatives-list. Альтернативы по своей сути являются символическими ссылками, указывающими на конкретную программу, исполняемую при запуске указанной альтернативы (если точнее, то альтернатива ссылается на ссылку, находящуюся в директории /etc/alternatives/links, а уже эта ссылка ссылается на реальную программу). А утилиты просто перенаправляют ссылку, на которую указывает конкретная переменная альтернативы, на заданную программу.

Обратите внимание, что система альтернатив не является аналогом типов MIME, то есть соотнесения типа файла к открывающей этот файл программе. Настройки типов MIME производятся в соответствующей графической среде, например KDE или Xfce

Команды из пакета

alternatives-auto

Изменяет значение переменной альтернативе, указанной в качестве аргумента, на значение по умолчанию. В качестве аргумента должно быть передано значение переменной альтернативы с полным путем.

# alternatives-auto /usr/bin/x-www-browser
alternatives-auto: Do not forget to run alternatives-update to apply changes.

Аналогичный результат получается, если вручную удалить соответствующую строку из файла/etc/alternatives/manual

При запуске команды без аргументов никакие действия не выполняются.

alternatives-list

Выводит список доступных переменных альтернатив (первый столбец) и текущие заданные им значения (последний столбец). Запускается без аргументов.

$ alternatives-list
...
/usr/bin/x-www-browser points to /usr/bin/firefox
/usr/bin/cancel points to /usr/bin/cancel-cups
/usr/bin/alterator-browser-qt points to /usr/bin/alterator-browser-qt5
/usr/lib64/cifs-utils/idmap-plugin points to /usr/lib64/cifs-utils/idmapwb.so
/usr/lib/openssh/ssh-askpass points to /usr/lib/openssh/plasma5-ksshaskpass
/usr/bin/vim points to /usr/bin/vim-enhanced

Также существующие на данный момент переменные альтернативы можно увидеть в директории /etc/alternatives/links

alternatives-manual

Устанавливает значение переменной альтернативе, указанной в первом аргументе, в значение, указанное во втором аргументе. Оба аргумента должны быть полными путями.

# alternatives-manual /usr/bin/x-www-browser /usr/bin/firefox  
alternatives-manual: Do not forget to run alternatives-update to apply changes.

После успешного завершения команды для внесения изменений в систему следует запустить alternatives-update В качестве второго аргумента может выступать не любая программа, а только та, для которой в каком-либо из файлов в директории /etc/alternatives/packages.d присутствует строка, соотнесенная с желаемой переменной альтернативой. Результат успешного назначения программы переменной альтернативе заносится в файл /etc/alternatives/manual, однако, в процессе выполнения команды alternatives-update строка может быть автоматически удалена из файла, например, если программа не существует или отсутствует в директории /etc/alternatives/packages.d.

alternatives-update

Запускается без аргументов. Создает и обновляет все переменные альтернативы в соответствии с конфигурацией, заданной настройками альтернатив, расположенными в директории /etc/alternatives.

alternatives-validate

Запускается без аргументов. Проверяет конфигурационные файлы в директории /etc/alternatives/packages.d на правильность.

Создание новой переменной альтернативы

Для того, чтобы создать новую переменную, следует либо добавить ее в новую строчку к уже существующему файлу в директории /etc/alternatives/packages.d (если файл для запускаемой программы уже существует), либо создать новый файл (если его нет). Файл состоит из трех столбцов. В первом столбце записана переменная альтернатива, во втором программа (вместе с путем), на которую будет создана символическая ссылка. В третьем столбце указывают приоритет, который присваивается данной программе. Чем выше число, тем выше приоритет. Например:

 /usr/bin/xbrowser       /usr/bin/firefox        200
 /usr/bin/x-www-browser  /usr/bin/firefox        200

После этого проверить правильность заполнения файла командой:

# alternatives-validate

а затем выполнить:

# alternatives-update

По умолчанию переменной альтернативе назначается та программа из всех, соотнесенных с данной переменной альтернативой в файлах, находящихся в директории /etc/alternatives/packages.d, у которой указан больший приоритет (чем больше число, тем выше приоритет).

Удаление переменной альтернативы

Для удаления переменной альтернативы следует из файлов в директории /etc/alternatives/packages.d удалить все строки, в которых указана данная переменная. После этого выполнить

# alternatives-update

Переменные альтернативы (символические ссылки) как в директории /etc/alternatives/links, так и в целевом пути переменной альтернативы будут удалены автоматически.

Отличия от системы альтернатив Debian и его производных

Пользователям, знакомым с аналогичной системой альтернатив по дистрибутиву Debian или производным от него, следует иметь в виду, что в дистрибутиве Alt Linux команды и их синтаксис отличаются. Хотя в пакете присутствует команда update-alternatives, совпадающая по названию с командой из Debian, она по умолчанию является символической ссылкой на /bin/true, что означает, что запуск этой команды всегда сразу же приводит к успешному завершению программы, а сама команда ничего не делает.