Гид по технологиям

update-alternatives в Ubuntu и Debian: как управлять альтернативами

6 min read Linux Обновлено 03 Jan 2026
update-alternatives в Ubuntu и Debian
update-alternatives в Ubuntu и Debian

Обложка: логотип Linux и концепция свободы выбора приложений

Linux ориентирован на свободу выбора. В отличие от проприетарных систем, где часто заранее задано одно приложение по умолчанию (например, браузер), в Linux вы можете иметь несколько реализаций одной и той же роли и легко переключаться между ними. update-alternatives управляет этим механизмом через символические ссылки.

Объяснение термина: альтернатива — это группа взаимозаменяемых программ, объединённых общей функцией (например, «editor» или «x-www-browser»).

Рассмотрим простой пример: команда editor, используемая в терминале.

whereis editor
editor: /usr/bin/editor /usr/share/man/man1/editor.1.gz

Если вы откроете системный файл через sudo editor /etc/fstab, командная оболочка запустит ту программу, на которую указывает ссылка editor:

sudo editor /etc/fstab

На одной из тестовых систем это открылось в nano:

Редактирование /etc/fstab в nano

Команда /usr/bin/editor — это не сама программа. Это символическая ссылка на /etc/alternatives/editor. Каталог /etc/alternatives хранит «промежуточные» ссылки, указывающие на фактические исполняемые файлы. Получается: ссылка (в PATH) → ссылка (в /etc/alternatives) → реальная программа.

Инструмент update-alternatives управляет этими связями: он создаёт, удаляет и переназначает ссылки. Дальше — практические примеры.

Частые команды и шаблон использования

Основная форма команды выглядит так:

sudo update-alternatives [option] [alternative(s)]
  • option — действие, которое вы хотите выполнить;
  • alternative(s) — программа или группы, с которыми работаете.

Для просмотра подробной информации используйте display:

update-alternatives --display editor

Вывод update-alternatives --display для editor

Информация может быть громоздкой (включая ссылки на man-страницы и локализации). Более простая и понятная команда — list:

update-alternatives --list editor

Список альтернатив для editor

Вы увидите доступные реализации — nano, vim и т.д. Чтобы поменять выбор через интерактивное меню:

sudo update-alternatives --config editor

Интерактивный выбор альтернативы для editor

Если знаете точный путь, можно установить альтернативу напрямую:

sudo update-alternatives --set editor /usr/bin/vim.basic

Полезные системные группы альтернатив

Некоторые группы полезно знать заранее:

  • Java: переключение между версиями Java
update-alternatives --config java

Некоторые приложения требуют конкретной версии Java. На Ubuntu можно установить несколько версий OpenJDK из репозиториев и вручную добавить Oracle JRE. В сложных случаях удобно использовать отдельную утилиту update-java-alternatives, которая синхронизирует несколько Java-альтернатив.

Список альтернатив Java

  • Веб-браузер:
update-alternatives --config x-www-browser
update-alternatives --config gnome-www-browser
  • Плагины Flash (когда они ещё нужны):
update-alternatives --config mozilla-flashplugin

Чтобы увидеть все альтернативы и их текущие установки:

update-alternatives --get-selections

Важно: многие пакеты автоматически добавляют свои записи в систему альтернатив при установке. Но вы можете добавлять и свои группы — ниже подробная инструкция.

Создание собственных групп альтернатив

Добавлять альтернативы можно вручную. Представьте, что вы хотите создать команду 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;
  • добавляется реализация /usr/bin/lowriter с приоритетом 40;
  • по умолчанию система будет в автоматическом режиме и выбирать реализацию с наибольшим приоритетом.

Добавим затем текстовый процессор в консоли:

sudo update-alternatives --install /usr/bin/word-processor x-word-processor /usr/bin/wordgrinder 20

Теперь вы можете переключаться через –config или принудительно установить конкретную реализацию через –set.

Добавление альтернативы в группу x-word-processor

Внимание: если вы создаёте собственную группу, вы отвечаете за актуальность путей. Если удалите программу, не удалив её запись в альтернативе, ссылка может указывать на несуществующий файл.

Удаление альтернатив и групп

Чтобы удалить одну реализацию из группы:

sudo update-alternatives --remove x-word-processor /usr/bin/wordgrinder

Чтобы удалить всю группу вместе со всеми ссылками:

sudo update-alternatives --remove-all x-word-processor

Эти команды удаляют только записи в системе альтернатив. Они не удаляют сами пакеты или исполняемые файлы.

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

Когда update-alternatives полезен и когда он подводит

Когда он полезен:

  • стандартные системные роли (editor, java, x-www-browser) — лёгкое переключение;
  • тестирование разных реализаций без переустановки пакетов;
  • создание «виртуальных» команд для унификации вызовов в скриптах.

Ограничения и случаи, когда он не подойдёт:

  • графические окружения часто имеют собственные механизмы выбора приложений (например, настройки GNOME или KDE), которые могут переопределять системные ссылки;
  • программы, ожидающие определённый путь или имя файла, могут некорректно работать при смене реализации (особенно если интерфейсы отличаются);
  • если вы вручную изменяете файлы в /etc/alternatives, можно случайно нарушить целостность связей.

Ментальные модели и эвристики

  • Приоритет — числовое значение: выше — предпочтительнее в режиме auto.
  • Auto vs manual: auto выбирает по приоритету; manual фиксирует выбранную реализацию.
  • Всегда думайте «команда в PATH → /etc/alternatives → реальная программа».

Эвристики:

  • Для скриптов используйте явные пути или убедитесь, что нужная альтернатива установлена в manual-режиме.
  • Для интерактивной работы применяйте config и проверяйте результат через –display.

Быстрая методология: как добавить, переключить и удалить

Шаги добавления новой альтернативы:

  1. Определите виртуальное имя команды (например, word-processor).
  2. Добавьте первую реализацию через –install с разумным приоритетом.
  3. Добавьте дополнительные реализации аналогично.
  4. Проверьте список через –list или –display.
  5. Переключите в manual-режим через –config, если нужно закрепить выбор.

Шаги удаления:

  1. Переключитесь на другую реализацию, если удаляемая активна.
  2. Выполните –remove для конкретного пути.
  3. Если группа больше не нужна — –remove-all.

Чек-листы по ролям

Чек-лист для системного администратора:

  • проверить текущие альтернативы: update-alternatives –get-selections;
  • удостовериться, что приоритеты заданы корректно;
  • зафиксировать критичные команды в manual-режиме;
  • перед удалением пакета удалить соответствующие альтернативы.

Чек-лист для разработчика:

  • использовать явные пути в CI, если результат должен быть детерминированным;
  • предусмотреть fallback, если альтернативы могут менять среду выполнения;
  • документировать зависимости на системных командах.

Чек-лист для настольного пользователя:

  • для смены браузера используйте –config x-www-browser;
  • проверяйте, не конфликтует ли системный GUI с настройками альтернатив;
  • при создании пользовательских групп — держите в актуальном состоянии пути к программам.

Шпаргалка команд (cheat sheet)

  • Показать список реализаций для группы:
update-alternatives --list 
  • Показать состояние:
update-alternatives --display 
  • Интерактивно выбрать реализацию:
sudo update-alternatives --config 
  • Принудительно установить реализацию:
sudo update-alternatives --set  /path/to/program
  • Добавить реализацию:
sudo update-alternatives --install    
  • Удалить реализацию:
sudo update-alternatives --remove  
  • Удалить всю группу:
sudo update-alternatives --remove-all 

Отладка и частые проблемы

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

Решение: запустите –display для проверки; если путь отсутствует — выполните –remove или –remove-all и заново добавьте корректный путь.

Проблема: GNOME/KDE не используют системную альтернативу.

Пояснение: окружения рабочего стола могут хранить свои настройки по умолчанию и игнорировать системные ссылки. Изменяйте настройки через GUI либо проверьте специфические группы (например, gnome-www-browser).

Проблема: Java-приложение запускается другой версией JVM.

Решение: используйте update-java-alternatives для синхронизации связанных Java-альтернатив.

Примеры использования в реальных сценариях

Сценарий тестирования: вам нужно протестировать, как скрипт работает с vim и nano. Добавьте обе реализации (если их нет), затем переключайтесь через –config. Это удобнее и чище, чем править PATH вручную.

Сценарий деплоя: Вы выпускаете скрипт, который вызывает word-processor. Добавьте в документацию требование: «система должна иметь альтернативу x-word-processor, настроенную на /usr/bin/lowriter» — или используйте контейнер, где окружение детерминировано.

Решение выбора: простая логика выбора (Mermaid)

flowchart TD
  A[Нужна команда в PATH?] --> B{Существует группа альтернатив?}
  B -- Да --> C{Требуется конкретная реализация?}
  B -- Нет --> D[Создать группу через --install]
  C -- Да --> E[Использовать --set или --config]
  C -- Нет --> F[Оставить авто-режим по приоритету]
  E --> G[Проверить через --display]
  F --> G
  D --> G

Критерии приёмки

  • команда в PATH запускает ожидаемую программу;
  • альтернативы не ссылаются на отсутствующие файлы;
  • приоритеты настроены и документированы для критичных ролей;
  • изменения проверены в целевых средах (рабочий стол, сервер, CI).

Галерея пограничных случаев

  • Альтернатива указывает на скрипт-обёртку, который далее перенаправляет вызов — это нормально, но усложняет трассировку.
  • Несколько пакетов заявляют одну и ту же альтернативу с разными приоритетами — при установке/удалении приоритеты меняются, и система может переключиться автоматически.
  • Симметричные имена групп в кастомных и системных пакетах — старайтесь уникализировать имена кастомных групп (например, x- префикс).

Итог и рекомендации

update-alternatives — простой и мощный механизм для управления тем, какая реализация программы запускается по общему имени. Он полезен для тестирования, миграции и поддержания консистентности в системах с несколькими реализациями. Создавайте собственные группы осторожно, документируйте приоритеты и регулярно проверяйте целостность ссылок.

Если у вас есть примеры нестандартных групп альтернатив или советы по использованию в продакшене — поделитесь в комментариях.

Image Credit: momente via Shutterstock.com

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство