Глава 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 сохраняют разные объекты и не заменяют друг друга.