update-alternatives в Ubuntu: управление альтернативами программ
update-alternatives — это стандартный инструмент в Debian/Ubuntu для управления символическими ссылками, которые определяют, какая программа запускается по командному имени (например, editor или x-www-browser). Используйте –display и –list, чтобы увидеть текущее состояние, –config для интерактивного выбора, –set для явной установки, –install для добавления и –remove/–remove-all для удаления. В статье есть шпаргалка, схема принятия решения и контрольные списки для админов и разработчиков.

Зачем нужен update-alternatives
Linux даёт свободу выбора. В отличие от проприетарных ОС, где почти всегда есть «дефолтное» приложение для каждой задачи, в Debian-подобных дистрибутивах может быть несколько программ одного типа. update-alternatives управляет набором символических ссылок в /etc/alternatives и связывает их с командами в PATH. Это позволяет вам переключать, какая реальная программа будет запускаться под заданным именем.
Короткое определение: update-alternatives — утилита для управления системными «альтернативами» (группами символьных ссылок), которые указывают на реальные исполняемые файлы.
Important: изменения через update-alternatives затрагивают только ссылки, а не сами пакеты. Удаление альтернативы не удалит программу.
Как устроена система альтернатив
В системе есть три уровня ссылок:
- /usr/bin/<имя> — ссылка в PATH, которую вы вызываете.
- /etc/alternatives/<имя> — центральная ссылка, на которую указывает /usr/bin/<имя>.
- реальная программа, например /usr/bin/nano или /usr/bin/vim.basic.
Таким образом команда — это ссылка на ссылку на реальный исполняемый файл.
Пример: команда editor.
whereis editor
editor: /usr/bin/editor /usr/share/man/man1/editor.1.gzЕсли вы запустите:
sudo editor /etc/fstabто откроется текстовый редактор. Но какой именно? По умолчанию это может быть nano, vim или другой редактор, выбранный в группе альтернатив.
Базовые команды и пример использования
Общий синтаксис большинства команд:
sudo update-alternatives [option] [alternative(s)]Здесь alternative(s) — это группа альтернатив (например, editor), а option — действие (display, list, config, set, install, remove и т.д.).
Посмотреть текущую информацию о группе editor:
update-alternatives --display editorЭто покажет, на что указывает /usr/bin/editor, а также набор доступных вариантов и приоритеты.
Чтобы получить более компактный список путей, используйте:
update-alternatives --list editorЧтобы интерактивно выбрать вариант:
sudo update-alternatives --config editorЕсли вы уже знаете, что хотите установить, можно указать путь явно:
sudo update-alternatives --set editor /usr/bin/vim.basicПолезные группы альтернатив
Некоторые группы альтернатив уже используются в системе, и переключение их полезно в повседневной работе:
- Java:
update-alternatives --config javaНа системах с несколькими JRE/JDK это позволяет выбрать, какая среда будет использована по умолчанию. Учтите, что для Java есть несколько связанных групп (java, javac, javaws и т. п.), которые часто нужно обновлять согласованно. Для удобства существует утилита update-java-alternatives, которая упрощает эту задачу.
- Веб-браузер:
update-alternatives --config x-www-browser
update-alternatives --config gnome-www-browser- Плагины типа flash:
update-alternatives --config mozilla-flashpluginЧтобы увидеть все существующие группы и их текущие значения:
update-alternatives --get-selectionsСоздание собственных групп альтернатив
Системные пакеты обычно добавляют группы сами при установке. Но вы можете создать свои. Важно: вы отвечаете за поддержание таких групп — нужно добавлять и удалять записи вручную.
Пример: создаём группу x-word-processor с приложением LibreOffice Writer:
sudo update-alternatives --install /usr/bin/word-processor x-word-processor /usr/bin/lowriter 40Что делает эта команда:
- создаёт ссылку /usr/bin/word-processor (в PATH);
- регистрирует группу x-word-processor в /etc/alternatives;
- добавляет вариант /usr/bin/lowriter с приоритетом 40.
Добавим текстовый процессор в текстовом режиме с меньшим приоритетом:
sudo update-alternatives --install /usr/bin/word-processor x-word-processor /usr/bin/wordgrinder 20По умолчанию группа работает в режиме auto: система выбирает вариант с наивысшим приоритетом. Переключиться на другой вручную можно через –config или –set.
Удаление альтернатив и групп
Удаление конкретного варианта:
sudo update-alternatives --remove x-word-processor /usr/bin/wordgrinderУдаление всей группы:
sudo update-alternatives --remove-all x-word-processorВажно: эти команды удаляют только записи в системе альтернатив, но не удаляют сами пакеты/исполняемые файлы.
Когда update-alternatives может подвести (ограничения и подводные камни)
- При удалении реального исполняемого файла вы можете получить «битую» альтернативу. Всегда проверяйте, что пути актуальны.
- Пакеты из репозиториев могут при обновлении перезаписывать / менять поведение альтернатив; если у вас кастомная конфигурация, проверьте её после обновления пакетов.
- Несколько связанных альтернатив (например, java/javac) нужно менять согласованно; иначе приложения могут ломаться.
- При ручном добавлении альтернатив с одинаковым приоритетом итоговый выбор в auto-режиме может быть неочевиден.
Практические сценарии и альтернативные подходы
- Если вам нужно переключать окружения для локальной разработки, рассмотрите использование явных оболочек/скриптов, которые экспортируют PATH с конкретными путями, вместо глобального изменения альтернатив.
- Для контейнеров и CI чаще проще установить нужную версию по-умолчанию в образе, чем полагаться на глобальные альтернативы.
- Если требуется переключать сразу несколько взаимосвязанных альтернатив (например, несколько компонентов Java), используйте update-java-alternatives.
Шпаргалка: часто используемые команды
- Показать детально:
update-alternatives --display - Список путей:
update-alternatives --list - Интерактивный выбор:
sudo update-alternatives --config - Установить явно:
sudo update-alternatives --set /path/to/program - Добавить вариант:
sudo update-alternatives --install /path/in/bin /path/to/program - Удалить вариант:
sudo update-alternatives --remove /path/to/program - Удалить всю группу:
sudo update-alternatives --remove-all - Показать все группы и значения:
update-alternatives --get-selectionsМодель принятия решения: когда менять альтернативу
- Если текущая программа не удовлетворяет требованиям (функции, версия, безопасность).
- Если нужно тестировать поведение приложения с другой реализацией (например, несколько JDK).
- Когда желаете стандартизировать окружение на нескольких хостах.
Mermaid-диаграмма выбора:
flowchart TD
A[Нужно ли менять поведение команды?] -->|Да| B{Существует ли альтернатива в системе?}
A -->|Нет| Z[Оставить как есть]
B -->|Да| C[Использовать --config или --set]
B -->|Нет| D{Добавить новую альтернативу?}
D -->|Да| E[--install ]
D -->|Нет| F[Использовать локальные скрипты/виртуальные окружения]
C --> G[Проверить работу и зависимости]
G --> H[Документировать изменения] Контрольные списки по ролям
Системный администратор:
- Проверить версии пакетов перед изменением альтернатив.
- Синхронизировать изменения между серверами (инвентарь/скрипты).
- Обновить документацию и уведомить команду об изменениях.
- Тестировать критические службы после переключения.
Разработчик/DevOps:
- Использовать локальные виртуальные окружения для теста.
- При автоматизации CI явно указывать JAVA_HOME/PATH, а не полагаться на глобальные альтернативы.
- Вносить изменения в контроль версий конфигурации (скрипты деплоя).
Критерии приёмки
- Команда в PATH запускает ожидаемую программу.
- Связанные компоненты (если есть) работают корректно после переключения.
- Документация обновлена и зафиксирована в changelog.
Мини-методология добавления кастомной альтернативы
- Проверить существующие группы: update-alternatives –get-selections.
- Подготовить реальные исполняемые файлы и убедиться в их работоспособности.
- Добавить вариант через –install с корректным приоритетом.
- Выбрать режим auto или вручную (–config/–set).
- Протестировать и документировать.
Короткий глоссарий
- Альтернатива — группа взаимозаменяемых программ, управляемая update-alternatives.
- Приоритет — числовое значение, по которому auto-режим выбирает вариант (выше — предпочтительнее).
- Auto-режим — режим, в котором система автоматически выбирает вариант с наивысшим приоритетом.
Безопасность и приватность
- Убедитесь, что вы указываете корректные пути к исполняемым файлам и доверяете их происхождению.
- Не добавляйте в альтернативы исполняемые файлы из ненадёжных источников.
- Изменение глобальных альтернатив может повлиять на службы и скрипты, которые полагаются на конкретное поведение команды.
Советы по миграции и совместимости
- При переносе конфигурации на новый хост экспортируйте список с –get-selections и применяйте его осторожно. Эта команда помогает собрать текущее состояние, но при восстановлении убедитесь, что все пути существуют на целевой системе.
- На серверах предпочитайте явно устанавливать необходимые пакеты и версии вместо полагания на ручное переключение альтернатив.
Итак: update-alternatives — простой, но мощный инструмент для управления тем, какая программа запускается по общему имени. Он сохраняет гибкость системы и помогает стандартизировать поведение на множестве машин.
Краткое резюме
- update-alternatives управляет символическими ссылками в /etc/alternatives.
- Основные команды: –display, –list, –config, –set, –install, –remove.
- Создавать собственные группы полезно, но нужно поддерживать их вручную.
- Тестируйте и документируйте изменения.
Notes: поделитесь в комментариях, как вы используете update-alternatives в своей работе — полезные приёмы и уроки приветствуются.
Image Credit: momente via Shutterstock.com
Похожие материалы
Включить тёмную тему в Pinterest — инструкция
Пользовательский курсор в Windows
Как узнать, установлен ли в Mac Intel или Apple Silicon
Evernote → OneNote на Mac: как мигрировать
Как делиться экраном в Zoom — способы и советы