Skip to content

APM ​

APM (Atomic Package Manager) является менеджером системы в ALT Atomic. Он объединяет управление пакетами RPM, репозиториями, контейнерами Distrobox и атомарным образом системы. В обычных системах семейства Альт APM выступает как пакетный менеджер.

APM можно использовать как консольную утилиту с интерактивными диалогами, а также через D-Bus и HTTP API. Набор доступных команд зависит от системы. Поддержка атомарных образов определяется автоматически, а модуль Distrobox доступен при установленном Distrobox.

Установка ​

В ALT Atomic менеджер системы APM предустановлен и готов к работе, поэтому отдельная установка не требуется.

В обычных операционных системах семейства Альт установите пакет из репозитория Сизиф.

shell
su -
apt-get update
apt-get install apm
shell
epm -i apm

Использование в обычных системах

В обычных системах семейства Альт APM можно использовать для управления системными пакетами и репозиториями. Модуль Distrobox доступен, если Distrobox установлен в системе.

Операции apply, status, update, history и switch доступны только в атомарных системах. Для обновления обычной системы используйте apm system update и apm system upgrade. Пересборка образа и перезагрузка для применения нового образа в этом случае не требуются.

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

shell
apm --help
apm system --help

Основные модули командной строки.

КомандаНазначение
apm systemУправление системными пакетами и образом системы
apm repoУправление репозиториями и заданиями
apm distroboxУправление контейнерами Distrobox и пакетами в них
apm versionПоказать версию APM

Для модулей доступны сокращённые имена s для system, r для repo и d для distrobox.

Системные пакеты ​

Команды поиска и просмотра информации не требуют прав суперпользователя. Для установки, удаления пакетов и обновления системы используйте sudo или сеанс root.

Обновление списка пакетов ​

Обновите индексы репозиториев и локальную базу пакетов APM следующей командой.

shell
sudo apm system update

Поиск и информация о пакете ​

Для быстрого поиска по имени пакета используйте команду search.

shell
apm system search firefox

Чтобы искать только среди установленных пакетов, добавьте --installed или -i.

shell
apm system search firefox --installed

Для просмотра информации о пакете используйте команду info.

shell
apm system info firefox

Для полного вывода добавьте --full.

Получение списка пакетов ​

Команда list поддерживает фильтрацию, сортировку и постраничный вывод. Например, первые десять установленных пакетов можно получить следующим образом.

shell
apm system list --filter installed=true --limit 10

Для поиска по точному имени используйте фильтр name.

shell
apm system list --filter name=firefox

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

shell
apm system list --sort size --order DESC --limit 10

Несколько параметров --filter объединяются условием «И». Для условия «ИЛИ» используйте --or-filter. Операторы фильтров и примеры их использования приведены в справке.

shell
apm system list --help

Установка пакетов ​

Установите один или несколько пакетов, перечислив их через пробел.

shell
sudo apm system install firefox
sudo apm system install firefox chromium

Перед выполнением APM показывает изменения и запрашивает подтверждение. Чтобы смоделировать установку без изменения системы, используйте параметр --simulate.

shell
sudo apm system install firefox --simulate

Для автоматического подтверждения используйте --yes или -y.

Локальные пакеты RPM ​

Вместо имени пакета из репозитория можно передать путь к локальному файлу RPM.

shell
sudo apm system install ./my-package.rpm

Можно указать несколько файлов через пробел или сочетать их с именами пакетов из репозитория.

shell
sudo apm system install ./my-package.rpm ./another-package.rpm

Для предварительной проверки транзакции без установки используйте параметр --simulate.

shell
sudo apm system install ./my-package.rpm --simulate

Чтобы обновить такой пакет, установите более новую версию файла RPM той же командой. Удаление выполняется по имени установленного пакета, а не по пути к файлу.

shell
sudo apm system remove my-package

Внимание

Доверенным источником пакетов для системы является подписанный репозиторий или подписанный образ. Локальный файл RPM таким источником не является. Используйте локальную установку только при крайней необходимости.

Перед установкой проверьте происхождение файла и совместимость пакета с выпуском и архитектурой системы. Если для пакета требуются дополнительные зависимости, APM попытается установить их из подключённых репозиториев. Если нужных пакетов там нет, установка завершится ошибкой.

В атомарной системе локальный файл RPM не включается в образ автоматически. Для воспроизводимой установки такого пакета необходимо описать копирование файла и его установку в конфигурации сборки образа.

Удаление пакетов ​

Для удаления пакета используйте команду remove.

shell
sudo apm system remove firefox

Для удаления пакета вместе с зависимостями, которые больше не нужны, используйте параметр --depends или -d.

shell
sudo apm system remove firefox --depends

Внимание

Перед подтверждением удаления проверьте список затрагиваемых пакетов. Вместе с выбранным пакетом могут быть удалены зависящие от него приложения и системные компоненты. Это может нарушить работу системы.

Особенности удаления в атомарной системе ​

В атомарной системе команда remove удаляет пакет из текущего окружения, но не изменяет образ. После удаления изменение необходимо зафиксировать в образе и перезагрузить систему.

shell
sudo apm system image apply
sudo reboot

Команда apply переносит выбранные изменения пакетов в декларативную конфигурацию /etc/apm/image.yml, собирает новый локальный образ и переключает на него систему через bootc. Новый образ становится активным после перезагрузки. Если не выполнить apply, после перезагрузки удалённый пакет вернётся.

Параметр --depends действует только на текущую транзакцию. Автоматически удалённые зависимости не записываются в /etc/apm/image.yml. Чтобы исключить их из нового образа, перечислите их в списке remove в конфигурации сборки образа.

При необходимости используйте откат образа.

Внимание

Образ собирается заново из базового образа и конфигурации, а не из текущего состояния файловой системы. Удаление применяется к пакетам базового образа или к пакетам, установленным предыдущими модулями конфигурации. Если пакет был добавлен через список install, APM исключает его из этого списка. Все необходимые компоненты и настройки образа должны быть описаны в /etc/apm/image.yml, иначе они не попадут в следующий образ.

Переустановка пакетов ​

Для переустановки пакета используйте команду reinstall.

shell
sudo apm system reinstall firefox

В атомарной системе переустановка выполняется только в текущем окружении и не записывается в /etc/apm/image.yml.

Обновление обычной системы ​

Сначала обновите индексы репозиториев и локальную базу пакетов.

shell
sudo apm system update

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

shell
sudo apm system upgrade --simulate

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

shell
sudo apm system upgrade

В обычной системе APM обновляет установленные пакеты RPM через APT, аналогично команде apt-get dist-upgrade. Обновление изменяет текущую систему. Новый образ и автоматическая точка отката при этом не создаются. Обновление ядра выполняется отдельно штатными средствами ALT Linux.

Работа с атомарным образом ​

Следующие команды доступны при запуске APM в атомарной системе, например ALT Atomic.

Просмотр состояния и истории ​

Для просмотра текущего образа и состояния локальной конфигурации используйте команду status.

shell
sudo apm system image status

Для просмотра истории изменений образа используйте команду history.

shell
sudo apm system image history

Для ограничения количества записей используйте --limit.

shell
sudo apm system image history --limit 5

Декларативная настройка ​

Состав образа можно изменить вручную в /etc/apm/image.yml.

yaml
image: altlinux.space/alt-atomic/onyx/stable:latest
modules:
  - name: My custom packages
    type: packages
    body:
      install:
        - hello
        - tmux

В поле image укажите базовый OCI-образ. После редактирования примените конфигурацию и перезагрузите систему.

shell
sudo apm system image apply
sudo reboot

Обновление атомарного образа ​

Команда upgrade обновляет образ системы. При обновлении локально собранного образа APM учитывает конфигурацию /etc/apm/image.yml. Если система использует образ из реестра без локальной сборки, обновление выполняется через bootc upgrade.

shell
sudo apm system upgrade

Можно также использовать явную команду image update.

shell
sudo apm system image update

После успешного обновления перезагрузите систему.

shell
sudo reboot

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

Смена базового образа ​

Команда switch переключает систему на другой совместимый OCI-образ. Адрес образа указывается в формате <реестр>/<образ>:<тег>.

shell
sudo apm system image switch <реестр>/<образ>:<тег>
sudo reboot

Локальные модули из /etc/apm/image.yml сохраняются и применяются к новому базовому образу. Новый образ становится активным после перезагрузки.

Перед сменой образа проверьте его происхождение и совместимость с вашей системой. Для возврата к предыдущему развёртыванию используйте откат образа.

Откат образа ​

Для отката на предыдущее развёртывание выполните bootc rollback и перезагрузите систему.

shell
sudo bootc rollback
sudo reboot

Предыдущий образ также можно выбрать в меню загрузчика GRUB.

Откат не изменяет /etc/apm/image.yml. Если удаление пакета или смена образа останутся в конфигурации, следующий apply или update может применить их повторно.

Управление группами пользователей ​

В ALT Atomic менеджер системы APM может добавлять существующих пользователей в группы по правилам из YAML-файлов. Конфигурация читается из двух каталогов.

  • /usr/share/apm/grpconf.d/ содержит правила, поставляемые с образом.
  • /etc/apm/grpconf.d/ содержит локальные правила, которые сохраняются при обновлении образа.

Например, файл /etc/apm/grpconf.d/my-groups.yml может добавлять пользователя user в группы docker и libvirt.

yaml
sync:
  groups:
    - docker
    - libvirt
  users:
    - name: user

Примените правила следующей командой.

shell
sudo apm system image sync-groups

Чтобы изменения вступили в силу для текущего пользователя, завершите его сеанс и войдите в систему заново.

В списке users можно выбирать пользователей по имени (name), точному UID (uid) или диапазону UID (uid_range). Если список не указан, правило применяется ко всем пользователям из группы wheel с UID от 1000 до 60000. APM не создаёт пользователей и группы. Они должны уже существовать в системе.

Повторный запуск sync-groups безопасен. Команда не создаёт дубликаты записей и также исправляет расхождения GID с образом. Кроме того, синхронизация автоматически выполняется при загрузке системы службой sync-users.service.

Информация

Команда sync-groups доступна только в атомарных системах. В обычных системах семейства Альт этот механизм не используется.

Управление репозиториями ​

Модуль repo позволяет просматривать и изменять источники пакетов APT.

Для просмотра активных репозиториев используйте команду list.

shell
apm repo list

Для просмотра всех репозиториев, включая неактивные, добавьте параметр --all.

shell
apm repo list --all

Для просмотра доступных веток используйте команду branches.

shell
apm repo branches

Добавьте репозиторий по имени ветки или номеру задания.

shell
sudo apm repo add sisyphus
sudo apm repo add 365300

Удалите задание из списка источников.

shell
sudo apm repo remove 365300

Удалите все репозитории оптических дисков и заданий.

shell
sudo apm repo clean

Для установки пакетов из задания без постоянного подключения его репозитория используйте команду test.

shell
sudo apm repo test 365300

APM временно подключает задание, обновляет список пакетов и устанавливает входящие в него пакеты. После завершения операции задание отключается. Перед подтверждением проверьте список изменений.

В атомарной системе установленные таким образом пакеты не добавляются в /etc/apm/image.yml и остаются только в текущем окружении.

Для проверки операции без внесения изменений команды add, remove, set и clean поддерживают параметр --simulate.

Внимание

Изменение ветки или подключение заданий может повлиять на стабильность системы. Используйте только доверенные репозитории. После изменения источников обновите список пакетов командой sudo apm system update.

Distrobox ​

Если в системе установлен Distrobox, APM позволяет создавать контейнеры и управлять их пакетами без непосредственного вызова пакетного менеджера внутри контейнера. Эти команды выполняются от пользователя.

Создание и удаление контейнера ​

Создайте контейнер на базе ALT Linux.

shell
apm distrobox container create --image alt --name alt-container

Для создания контейнера доступны следующие образы.

Значение --imageКраткое описаниеИмя контейнера по умолчанию
altКонтейнер на базе ALT Linuxatomic-alt
ubuntuКонтейнер на базе Ubuntuatomic-ubuntu
archКонтейнер на базе Arch Linuxatomic-arch

Собственное имя контейнера можно задать с помощью параметра --name.

Для просмотра списка контейнеров используйте команду container list.

shell
apm distrobox container list

Для удаления контейнера используйте команду container remove.

shell
apm distrobox container remove --name alt-container

Внимание

Удаление контейнера приводит к необратимому удалению его файловой системы. Перед выполнением команды сохраните нужные данные.

Управление пакетами в контейнере ​

Для установки пакета используйте команду install.

shell
apm distrobox install hello --container alt-container

По умолчанию приложение экспортируется на хост. Чтобы оставить его только внутри контейнера, добавьте --no-export.

Для поиска и просмотра информации используйте команды search и info.

shell
apm distrobox search hello --container alt-container
apm distrobox info hello --container alt-container

Для получения списка пакетов контейнера используйте команду list.

shell
apm distrobox list --container alt-container

Для удаления пакета используйте команду remove.

shell
apm distrobox remove hello --container alt-container

Чтобы удалить экспортированное приложение только на хосте, оставив пакет в контейнере, используйте --only-host.

Для синхронизации списка установленных пакетов с базой APM используйте команду update.

shell
apm distrobox update --container alt-container

Формат вывода и конфигурация ​

По умолчанию APM выводит отформатированный текст. Для использования в скриптах и интеграции с другими программами доступен JSON.

shell
apm --format json system info firefox

Краткая форма параметра -f json. Для текстового вывода можно выбрать представление tree или plain с помощью глобального параметра --format-type.

Основной файл настроек находится в /etc/apm/config.yml. Он не создаётся по умолчанию и используется как в обычных, так и в атомарных системах. В нём можно задать формат текстового вывода, цветовую схему и пути к базам данных.

Параметр pathImageFile в config.yml задаёт путь к файлу описания образа, по умолчанию /etc/apm/image.yml. Этот файл используется при сборке образа командой image build и при управлении локальным образом в атомарной системе.

Дополнительные материалы ​

Опубликовано под лицензией GPL-3.0+. Содержание доступно по лицензии CC BY-SA 4.0, если не указано иное.