Skip to main content

Глава 3. Управление программными пакетами

Учебная методичка. Ubuntu Server 26.04.1 LTS (Resolute Raccoon). Сведения сверены с официальной документацией; команды проверены на виртуальной машине Ubuntu Server 26.04.1 LTS с APT 3.2.0 и Snap 2.77.1 — 7 октября 2026 года.

Цель и результаты обучения

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

После изучения материала студент должен уметь:

  • объяснять назначение пакета, репозитория, зависимостей и пакетного менеджера;
  • различать DEB и Snap и выбирать соответствующий инструмент управления;
  • находить пакет, проверять его версию и источник;
  • отличать обновление индекса от обновления установленных программ;
  • читать источники APT в формате deb822 и объяснять назначение Signed-By;
  • управлять установкой, обновлением и удалением Snap.

Учебный стенд: Ubuntu Server в Oracle VirtualBox. Основной пользователь — student, пароль — 123456. Имя узла — 562-01–562-13 по номеру рабочего места от входа. Адаптер 1 — сетевой мост с DHCP; адаптер 2 — NAT без настройки IPv4 и IPv6 в Ubuntu. Пакеты загружаются через мост. Команды с sudo выполняют из сеанса student. Записи student1, student2, student3 для установки системных пакетов не нужны.

Примеры показывают отдельные операции. Выполняйте проверки и запуск программ после их установки. Пакеты из примеров не следует удалять, если они уже используются в другом задании. Перед выполнением команд создайте снимок VM; основную запись, сеть и службу SSH сохраняйте.

1. Как распространяется программное обеспечение

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

Пакет может содержать исполняемые файлы, библиотеки, документацию, настройки и сценарии установки. Имя пакета не обязательно совпадает с именем запускаемой команды. Одна программа может быть разделена на несколько пакетов, а пакет — предоставлять несколько команд.

При установке APT проверяет доступность запрошенного пакета и совместимых зависимостей. Зависимость означает, что одному пакету для работы требуется другой пакет с определёнными условиями, например минимальной версией. Рекомендуемые и предлагаемые пакеты не равнозначны обязательным зависимостям: стандартные настройки APT обычно устанавливают Recommends, но не весь список Suggests.

В стабильном выпуске Ubuntu обновления исправляют уязвимости и ошибки. Версия приложения может сохраняться в рамках одной основной ветви, а исправления переноситься в неё отдельно. Поэтому меньший номер версии относительно сайта разработчика сам по себе не доказывает отсутствие исправлений. Существенные изменения стабильного выпуска проходят процедуру SRU — Stable Release Updates. Обновления стабильных выпусков Ubuntu.

Выучить: пакет, зависимость и репозиторий

Программный пакет — единица поставки программных файлов и сведений, необходимых для их установки и управления.

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

Репозиторий — источник пакетов и сведений о них. Зеркало — сервер с копией содержимого репозитория.

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

2. DEB, APT, dpkg и Snap

2.1. Пакеты DEB

Ubuntu использует формат Debian package, файлы которого имеют расширение .deb. Ядро, большая часть базовой системы и многие серверные приложения устанавливаются в этом формате. Совпадение формата с Debian не означает совместимость любого пакета Debian с Ubuntu: важны выпуск, архитектура и зависимости.

Основные инструменты:

Инструмент Назначение
dpkg Установка и удаление DEB, ведение локальной базы пакетов; самостоятельно не загружает недостающие зависимости из репозиториев
dpkg-query Получение сведений из локальной базы dpkg
apt Удобный интерактивный интерфейс APT: поиск, установка, обновление и удаление
apt-get, apt-cache Специализированные инструменты APT, в том числе для сценариев
apt-mark Управление отметками ручной/автоматической установки и удержания пакетов

apt не является простой сокращённой записью apt-get: их значения по умолчанию и отдельные операции различаются. Для ручной работы удобно использовать apt; в сценариях предпочитают специализированные инструменты с более стабильным интерфейсом. Справка apt, использование в сценариях.

2.2. Пакеты Snap

Snap — формат приложений, обслуживаемых службой snapd. Приложение поставляется с необходимыми ему компонентами; часть среды может предоставляться отдельным базовым snap или подключаемыми ресурсами. Поэтому выражение «все зависимости всегда внутри одного файла» неточно.

DEB и Snap имеют отдельные средства учёта. Команда apt upgrade не обновляет установленные приложения Snap. Наличие приложения в обоих форматах может привести к выбору разных исполняемых файлов, настроек и каталогов данных. Изоляция Snap уменьшает часть проблем с библиотеками, но не исключает конфликты сетевых портов, ресурсов или взаимодействия служб.

Признак DEB Snap
Управление APT и dpkg snap и snapd
Источник Настроенные источники APT, локальный DEB Обычно Snap Store
Зависимости Обычно другие системные пакеты Включённые компоненты, базовые snaps и подключаемые ресурсы
Обновление APT, в том числе unattended-upgrades Автоматическое обновление snapd и команда refresh
Ограничение доступа приложения Не определяется самим форматом DEB Зависит от режима confinement и интерфейсов

При выборе учитывайте требования приложения, издателя, доступный канал обновлений и режим доступа. Утверждение, что один формат всегда лучше другого, не подходит для учебной методички. Архитектура Snap, ограничения Snap.

Запомнить: три разных роли

.deb — формат пакета. dpkg — инструмент управления локальными DEB. APT — система работы с источниками, версиями и зависимостями DEB.

snapd — служба управления Snap. DEB и Snap обновляются своими инструментами; наличие одной системы управления не заменяет другую.

3. Поиск пакетов и проверка источника

Сначала обновляют индекс доступных пакетов:

sudo apt update

Команда получает сведения из настроенных источников. Она не устанавливает новые версии программ. Если часть источников недоступна, APT может сохранить старые сведения. Поэтому нужно прочитать завершение команды и сообщения об ошибках, а не считать любое появление списка пакетов успешным обновлением.

Для примеров используем tree — вывод дерева каталогов, и hello — простую демонстрационную программу. Они доступны в Ubuntu 26.04; tree находится в компоненте universe. Пакет tree, пакет hello.

apt search '^tree$'
apt show tree
apt-cache policy tree
apt-cache depends tree

search ищет по заданному выражению. show показывает описание и сведения о пакете. policy позволяет сопоставить установленную версию, версию-кандидат и источники. depends показывает зависимости по данным индекса. Справка apt-cache.

В выводе apt-cache policy:

  • Installed — установленная версия либо (none);
  • Candidate — версия, которую APT выбирает для установки с учётом настроек;
  • таблица версий — доступные варианты и их источники.

В APT 3 некоторые длинные выводы, например apt show, могут открываться в программе просмотра. Для выхода из обычного просмотрщика нажимают q; появление просмотрщика не является зависанием команды.

Пакеты можно также искать на packages.ubuntu.com, обязательно выбирая нужный выпуск. Сведения о пакете для jammy или noble нельзя автоматически переносить на resolute.

Записать: порядок выбора пакета

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

apt search — поиск; apt show — сведения; apt-cache policy — версии и источники. Имя пакета и имя команды могут различаться.

4. Установка, проверка и удаление DEB

4.1. Установка из репозитория

Перед фактическим изменением системы можно просмотреть план:

sudo apt-get --simulate install tree hello

Режим --simulate показывает предполагаемые операции без их выполнения. Это не проверка фактической загрузки файлов и не гарантия будущего результата: между просмотром плана и установкой содержимое репозитория может измениться.

Установка:

sudo apt install tree hello

Прочитайте, какие пакеты будут установлены, обновлены или удалены, и сколько места потребуется. Для основной работы не используйте -y: этот параметр автоматически отвечает «да» на стандартное подтверждение и лишает студента этапа анализа плана. Он не устраняет все возможные запросы конфигурации.

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

dpkg-query -W tree hello
command -v tree
tree --version
hello

Эти команды идут после установки. Если пакет уже был установлен, APT может сообщить, что его версия актуальна; это нормальный результат.

4.2. Установка локального DEB

Для локального файла удобно использовать APT: он может загрузить необходимые зависимости из настроенных источников. Шаблон команды:

sudo apt install ./ИМЯ_ФАЙЛА.deb

Префикс ./ обозначает путь к файлу в текущем каталоге. Его имя заменяют реальным именем скачанного файла. Для предварительного просмотра метаданных применяют dpkg-deb --info, для просмотра списка файлов — dpkg-deb --contents. Сам просмотр не делает пакет доверенным.

sudo dpkg -i файл.deb также устанавливает локальный пакет, но не получает недостающие зависимости самостоятельно. Если операция не завершена, сначала изучают сообщение и план исправления, а не повторяют случайные команды с принудительными параметрами. Справка dpkg, справка apt-get.

4.3. Remove и purge

sudo apt remove tree

remove удаляет пакет, сохраняя обрабатываемые пакетной системой конфигурационные файлы, если они есть. Для удаления таких остатков применяют:

sudo apt purge tree

purge можно применить и после remove. Это не универсальное удаление всех данных приложения: файлы в домашнем каталоге, данные вне управления пакета и результаты работы программы могут остаться. Дополнительные действия зависят от сценариев конкретного пакета. У tree может не быть сохраняемых настроек, поэтому видимое различие между remove и purge в этом примере невелико.

sudo apt reinstall tree повторно устанавливает пакет и может восстановить его поставляемые файлы, но не является универсальной командой восстановления пользовательских данных и настроек.

Выучить: install, remove, purge

install — установить пакет и разрешить зависимости. remove — удалить пакет с сохранением предусмотренных конфигурационных файлов. purge — удалить также конфигурационные остатки, учитываемые пакетной системой.

Удаление пакета, удаление данных приложения и удаление ненужных зависимостей — разные операции.

5. Обновления, перезапуск служб и APT 3

5.1. Update и upgrade

sudo apt update
apt list --upgradable
sudo apt --simulate upgrade
sudo apt upgrade

Здесь сначала обновляется индекс, затем просматриваются доступные обновления и план, после чего устанавливаются новые версии. Учтите, что apt-get upgrade и apt upgrade отличаются: интерактивный apt upgrade может установить новые зависимости, но не удаляет существующие пакеты. Поэтому предварительный план выше получен для той же команды apt upgrade, которая будет выполнена после проверки.

apt full-upgrade может удалять установленные пакеты, если это требуется для разрешения зависимостей. Команда не выполняет переход с Ubuntu 26.04 на следующий выпуск ОС. Переход между выпусками — отдельная процедура. В основном задании full-upgrade не требуется.

Часть обновлений распространяется поэтапно — phased updates. APT может временно не предлагать их конкретной машине. Это не обязательно ошибка или признак повреждённого пакета. Проверяют сообщения, apt-cache policy и удержания apt-mark showhold; не следует автоматически форсировать отложенные обновления. Поэтапное распространение обновлений.

5.2. Автоматические обновления и службы

Стандартная Ubuntu Server использует unattended-upgrades для автоматической установки разрешённых обновлений, обычно обновлений безопасности. Фактическое поведение зависит от профиля установки и конфигурации. Проверить наличие пакета и расписание:

dpkg-query -W unattended-upgrades
systemctl list-timers --all apt-daily.timer apt-daily-upgrade.timer

Во время такой работы другая операция APT может ждать освобождения блокировки. Не удаляйте файлы блокировок, чтобы одновременно запустить второй пакетный менеджер: сначала нужно дождаться завершения текущей операции и исследовать причину задержки.

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

Для учебной VM держите доступной консоль VirtualBox. Если система сообщает о необходимости перезагрузки, завершите текущую пакетную операцию и сохраните работу, затем выполните sudo reboot. Наличие файла /run/reboot-required — один из стандартных признаков необходимости перезагрузки; его отсутствие не заменяет анализ конкретного обновления.

5.3. Что нового в APT 3

В Ubuntu 26.04 применяется APT 3. Интерфейс вывода и механизм разрешения зависимостей могут отличаться от предыдущих версий APT. Проверить установленную версию: apt --version.

На проверенном стенде установлена версия APT 3.2.0. В сводке плана могут отображаться поля Upgrading — обновление, Installing — установка, Removing — удаление, Not Upgrading — пакеты без обновления в этой операции. Формат отличается от прежнего вывода APT; перед подтверждением оценивайте сами предлагаемые действия. Числа зависят от состояния системы и актуального индекса, поэтому их не нужно сверять с фиксированным числом из примера.

APT также предоставляет интерфейс истории операций:

apt history-list

Для просмотра выбранной операции используют apt history-info НОМЕР, подставляя фактический номер из списка. Команды отмены и повторного применения истории не равнозначны снимку VM: они меняют пакеты, но не гарантируют восстановление всех данных, настроек и выполненных сценариями действий. В этом занятии используются только просмотр истории и снимки VirtualBox. Изменения APT в Ubuntu 26.04.

Выучить: update и upgrade

apt update обновляет сведения о доступных пакетах. apt upgrade обновляет установленные пакеты.

Установка пакетов может запустить или перезапустить службы. Перезагрузка после обновления ядра переключает систему на новое ядро; версия работающего ядра проверяется uname -r.

6. Источники APT: deb822 и подписи

6.1. Где находятся источники

На новых установках Ubuntu 24.04 и последующих выпусков основные источники обычно описаны в /etc/apt/sources.list.d/ubuntu.sources в формате deb822. На обновлённых или специально настроенных системах могут встречаться другие файлы. Старые однострочные .list ещё могут использоваться; основной пример методички — .sources.

ls -l /etc/apt/sources.list.d/
cat /etc/apt/sources.list.d/ubuntu.sources

Путь /etc/apt/sources.list не следует считать единственным или обязательным местом настройки. Структура архива Ubuntu.

Ниже приведён пример для чтения, а не команда замены конфигурации. Адрес зеркала и набор компонентов на вашем стенде могут отличаться:

Types: deb
URIs: http://archive.ubuntu.com/ubuntu/
Suites: resolute resolute-updates resolute-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg

Types: deb
URIs: http://security.ubuntu.com/ubuntu/
Suites: resolute-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
Поле Назначение
Types Тип данных: deb — бинарные пакеты, deb-src — исходные пакеты
URIs Адрес источника
Suites Выпуск и соответствующие области архива
Components Компоненты архива, которые индексирует APT
Signed-By Ключ или набор ключей для проверки именно этого источника
Enabled: no Отключение конкретного блока deb822

Блоки разделяются пустой строкой. Кодовое имя Ubuntu 26.04 — resolute; jammy относится к 22.04, noble — к 24.04. Нельзя смешивать выпуски ради получения одного более нового пакета.

Области архива: основной выпуск resolute, обновления безопасности resolute-security, рекомендуемые исправления resolute-updates, выборочные обратные переносы resolute-backports. resolute-proposed предназначен для проверки обновлений и не включается в обычный учебный стенд. Формат источников APT.

6.2. Компоненты архива

Компонент Общая характеристика
main Открытое ПО базового состава, поддерживаемое Canonical
restricted Поддерживаемое Canonical ПО с ограничениями свободного лицензирования, в том числе отдельные драйверы
universe Открытое ПО, обычно поддерживаемое сообществом; дополнительные условия покрытия безопасности могут предоставляться Ubuntu Pro
multiverse ПО, не отвечающее всем требованиям свободного ПО; нужно отдельно учитывать лицензирование и поддержку

«Несвободное» не означает обязательно «платное», а принадлежность к universe не означает отсутствие любых обновлений. Сроки и условия поддержки конкретного пакета проверяют отдельно. Компоненты и поддержка пакетов.

6.3. Signed-By вместо apt-key

В APT 3 команда apt-key удалена. Старые инструкции с apt-key add в этой методичке не используются. Для локально добавляемых ключей применяют /etc/apt/keyrings, для ключей, управляемых пакетами, — обычно /usr/share/keyrings. Ключ связывают с определённым источником через Signed-By; deb822 также позволяет встроить открытый ключ непосредственно в блок.

APT проверяет подпись метаданных репозитория и связанную цепочку контрольных сумм. Это не проверка отдельной подписи каждого DEB и не аудит исходного кода программы. Подпись подтверждает происхождение данных от доверенного ключа, поэтому выбор владельца репозитория остаётся важным. Не исправляйте ошибки ключей отключением проверки подлинности. Аутентификация архивов APT.

Выучить: источник и подпись

deb822 — формат описания источников APT отдельными именованными полями. Файл .sources может содержать несколько блоков.

Signed-By ограничивает набор ключей, которыми APT проверяет данный источник. Подпись репозитория не доказывает отсутствие ошибок или вредоносного кода в программе.

Записать: обычный путь основных источников — /etc/apt/sources.list.d/ubuntu.sources; кодовое имя выпуска — resolute.

7. Дополнительные репозитории и PPA

Дополнительный репозиторий позволяет получить программу или версию, отсутствующую в официальных источниках. Он также может заменить системные пакеты и выполнять установочные сценарии с административными правами. До подключения проверяют владельца, наличие пакетов для Ubuntu 26.04, поддерживаемые архитектуры, способ получения ключа и порядок обновления.

PPA (Personal Package Archive) — размещаемый в Launchpad дополнительный архив пакетов. Наличие PPA на Launchpad не означает поддержку его содержимого Canonical или совместимость со всеми выпусками Ubuntu.

В Ubuntu для подключения обычно используют add-apt-repository из пакета software-properties-common. Шаблон, который не нужно выполнять без выбранного и проверенного архива:

sudo add-apt-repository ppa:ВЛАДЕЛЕЦ/АРХИВ

Утилита добавляет описание источника и необходимые сведения о ключе. Следуйте текущей инструкции владельца; не выбирайте старый выпуск в настройке PPA, если для resolute пакет не опубликован. После изменения проверяют файлы источников, выполняют sudo apt update и изучают apt-cache policy нужного пакета. Управление PPA в Launchpad.

Удаление или отключение источника прекращает получение из него будущих версий, но не удаляет установленные из него пакеты и не возвращает автоматически официальные версии. Такой возврат — отдельная операция с проверкой зависимостей и доступных версий. Добавление источника также не гарантирует, что unattended-upgrades начнёт обновлять его пакеты: учитываются разрешённые источники автоматических обновлений.

В основной практической работе сторонние репозитории и PPA не добавляются: достаточно официальных пакетов Ubuntu. Особенности сторонних репозиториев.

Запомнить: отключение источника

PPA — дополнительный архив DEB в Launchpad. Отключить репозиторий, удалить пакет и вернуть другую версию пакета — три разных действия.

Для .sources поле Enabled: no отключает соответствующий блок. Не отключайте основные источники Ubuntu во время упражнения.

8. Управление Snap

8.1. Проверка среды и режимов доступа

Проверьте наличие клиента и службы:

snap version
snap list

В разных профилях установки snapd может отсутствовать. Если команда не найдена, установите snapd через APT; если клиент показывает недоступность службы, изучите systemctl status snapd.socket snapd.service. После установки может понадобиться новый сеанс, чтобы пути команд были обновлены.

Режимы confinement:

Режим Значение
strict Ограниченный доступ к системе; дополнительные возможности предоставляются интерфейсами
classic Доступ близок к обычному приложению без строгой изоляции Snap
devmode Режим разработки, в котором ограничения не применяются как в strict

Не добавляйте --classic или --devmode только для обхода ошибки установки. Сначала нужно понять, зачем приложению такие полномочия. Режимы confinement.

8.2. Поиск, установка и запуск

Демонстрационный snap — hello-world:

snap find hello-world
snap info hello-world
sudo snap install hello-world
snap list hello-world
snap run hello-world

Сначала прочитайте сведения об издателе, каналах и режиме доступа; затем устанавливайте. Запуск идёт после установки. Для изучения пакетного менеджера достаточно демонстрационной программы, выводящей приветствие. Учебное введение в Snap, страница hello-world в Snap Store.

Канал позволяет выбрать линию публикации snap, например latest/stable; в общем виде он включает track, risk и необязательный branch. stable, candidate, beta, edge обозначают уровни публикации. Версия — обозначение версии приложения от издателя, ревизия — идентификатор конкретной сборки в Snap Store. Эти значения не обязательно совпадают. Каналы Snap.

Для определения фактически выбираемой команды используйте command -v ИМЯ или type -a ИМЯ. Если установлены DEB и Snap одной программы, путь имеет значение. Команда snap run явно обращается к приложению Snap.

8.3. Обновление и удаление

snap refresh --time
sudo snap refresh hello-world
snap changes
sudo snap remove hello-world
snap saved

Snapd обычно обновляет snaps автоматически по расписанию. refresh --time показывает сведения о расписании; refresh без имени проверяет обновления всех snaps, а с именем — указанного. snap changes показывает выполняемые и завершённые операции. Не заменяйте программу во время важной работы без понимания её поведения при обновлении. Управление обновлениями Snap.

При обычном удалении Snap в Ubuntu Server автоматически создаётся снимок внутренних данных, который по умолчанию хранится 31 день; настройка может отличаться. snap saved показывает сохранённые снимки. Опция snap remove --purge пропускает создание нового снимка при удалении, но не является командой удаления всех ранее сохранённых снимков и всех внешних файлов приложения. Снимки данных Snap.

Выучить: refresh и confinement

Confinement — режим ограничения доступа snap к системе. strict и classic предоставляют разные условия доступа.

snap refresh обновляет snaps; apt upgrade обновляет DEB. Снимок данных Snap и снимок VM в VirtualBox сохраняют разные объекты и не заменяют друг друга.