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

update-alternatives в Ubuntu: управление альтернативами программ

6 min read Linux Обновлено 28 Dec 2025
update-alternatives в Ubuntu — быстрое руководство
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 или другой редактор, выбранный в группе альтернатив.

Открытие /etc/fstab в выбранном редакторе

Базовые команды и пример использования

Общий синтаксис большинства команд:

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, которая упрощает эту задачу.

Список доступных Java-альтернатив

  • Веб-браузер:
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.

Добавленная группа x-word-processor с двумя альтернативами

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

Удаление конкретного варианта:

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.

Мини-методология добавления кастомной альтернативы

  1. Проверить существующие группы: update-alternatives –get-selections.
  2. Подготовить реальные исполняемые файлы и убедиться в их работоспособности.
  3. Добавить вариант через –install с корректным приоритетом.
  4. Выбрать режим auto или вручную (–config/–set).
  5. Протестировать и документировать.

Короткий глоссарий

  • Альтернатива — группа взаимозаменяемых программ, управляемая 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

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

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

Включить тёмную тему в Pinterest — инструкция
Инструкции

Включить тёмную тему в Pinterest — инструкция

Пользовательский курсор в Windows
Настройка

Пользовательский курсор в Windows

Как узнать, установлен ли в Mac Intel или Apple Silicon
Mac

Как узнать, установлен ли в Mac Intel или Apple Silicon

Evernote → OneNote на Mac: как мигрировать
Продуктивность

Evernote → OneNote на Mac: как мигрировать

Как делиться экраном в Zoom — способы и советы
Руководство

Как делиться экраном в Zoom — способы и советы

Как укротить Twitter — практические приёмы
Социальные сети

Как укротить Twitter — практические приёмы