Пакетный менеджер APT: установка, обновление и проверка источника
APT разрешает зависимости и устанавливает пакеты из настроенных репозиториев Debian/Ubuntu. Надёжная работа начинается не с команды install, а с понимания источника,…
APT разрешает зависимости и устанавливает пакеты из настроенных репозиториев Debian/Ubuntu. Надёжная работа начинается не с команды install, а с понимания источника, версии-кандидата и различия между обновлением индекса и обновлением пакетов.
Индекс, кандидат и установленная версия
apt-get update скачивает метаданные репозиториев, но не обновляет установленные программы. apt-cache policy показывает установленную версию, candidate и приоритет источников.
apt-cache policy curl
grep -R --no-messages --include='sources.list' --include='*.list' --include='*.sources' -E '^[[:space:]]*(deb |Types:|URIs:|Suites:|Components:|Enabled:)' /etc/aptСтроки, начинающиеся с deb, относятся к традиционным однострочным .list, а поля с двоеточием — к deb822-файлам .sources, которые используются современными Debian и Ubuntu. Перед изменением сервера зафиксируйте candidate и источник. Сторонний repository расширяет доверенную цепочку и может заменить системный пакет; добавлять его только ради более нового номера рискованно.
Предварительный расчёт изменений
Интерактивная команда apt удобна человеку, а apt-get имеет более стабильный CLI для скриптов. Simulation показывает план без записи.
sudo apt-get update
apt-get --simulate install curl
apt-cache show curl | sed -n '1,20p'После проверки выполняют sudo apt-get install --no-install-recommends curl, если дополнительные recommended packages не нужны. Не добавляйте -y до того, как автоматизация умеет проверять неожиданные удаления и смену major-компонентов.
Обновление и воспроизводимость
upgrade обновляет пакеты без удаления установленных, а full-upgrade может удалять или добавлять зависимости для завершения перехода. На production сначала нужны snapshot/backup, окно изменений и план восстановления. Старую версию не всегда можно вернуть: repository мог удалить артефакт, а миграция данных могла быть необратима.
В Docker build индекс и install выполняют в одном RUN, иначе закэшированный индекс ссылается на уже недоступные пакеты. При строгой воспроизводимости используют snapshot repository и проверяемые версии.
Ошибка и диагностика
Unable to locate package может означать устаревший индекс, неверное имя, отсутствующий компонент или архитектуру. Проверьте status apt-get update, apt-cache policy, sources и dpkg --print-architecture. Не скачивайте случайный .deb из поиска: источник и подпись важнее удобства.
Практика
Не меняя систему, исследуйте apt-cache policy для двух пакетов и выполните simulation установки одного из них. Запишите, какие зависимости добавились бы, сколько места нужно и из какого repository придёт candidate. Найдите отличие installed от candidate, если пакет уже установлен.
Что важно запомнить
updateобновляет индекс, а не сами установленные пакеты.- Перед install проверяйте candidate, origin и simulated transaction.
- Пакетный rollback не гарантирован; изменение требует резервной точки и проверки совместимости.