Product SiteDocumentation Site

Глава 6. Обслуживание и обновление: инструменты APT

6.1. Содержимое файла sources.list
6.1.1. Синтаксис
6.1.2. Репозитории для пользователей Stable
6.1.3. Репозитории для пользователей Testing/Unstable
6.1.4. Использование альтернативных зеркал
6.1.5. Неофициальные ресурсы: mentors.debian.net
6.1.6. Кэширующий прокси для пакетов Debian
6.2. Команды aptitude, apt-get и apt
6.2.1. Инициализация
6.2.2. Установка и удаление
6.2.3. Обновление системы
6.2.4. Параметры конфигурации
6.2.5. Управление приоритетами пакетов
6.2.6. Работа с несколькими дистрибутивами
6.2.7. Трекинг автоматически устанавливаемых пакетов
6.2.8. APT шаблоны
6.3. Команда apt-cache
6.3.1. The apt-cache policy Command
6.4. The apt-file Command
6.5. Графические оболочки: aptitude, synaptic
6.5.1. программа aptitude
6.5.2. Программа synaptic
6.6. Проверка подлинности пакета
6.7. Обновление Одного Стабильного Дистибутива в Следующий
6.7.1. Рекомендованный порядок действий
6.7.2. Решение проблем после обновления
6.7.3. Cleaning Up after an Upgrade
6.8. Содержание системы с периодическими обновлениями
6.9. Автоматические Обновления
6.9.1. Конфигурирование dpkg
6.9.2. Настройка APT (конфигурирование)
6.9.3. Настройка debconf
6.9.4. Управление Взаимодействием Через Командную Строку
6.9.5. Чудо-комбинация
6.10. Поиск пакетов
Debian популярен среди администраторов благодаря лёгкости установки программного обеспечения и простоте обновления всей системы. Это уникальное преимущество обусловлено, главным образом, программой APT, которую администраторы Falcot Corp изучали с энтузиазмом.
APT — это аббревиатура от Advanced Packaging Tool (англ. "улучшенный инструмент для работы с пакетами"). «Улучшенным» его делает подход к работе с пакетами. APT не обрабатывает их по отдельности, а рассматривает их множество как единое целое и обеспечивает наилучшую из возможных комбинаций пакетов из тех, что доступны и совместимы согласно зависимостям.
APT необходимо предоставить список источников пакетов (репозиториев): в файле /etc/apt/sources.list перечислены различные репозитории, в которых публикуются пакеты Debian. Затем APT импортирует список пакетов, опубликованных каждым из этих источников. Это производится путём загрузки файлов Packages.xz или Packages.gz или .bz2 (с использованием другого метода сжатия) в случае источника бинарных пакетов и путем анализа их содержимого. В случае источника исходных пакетов APT загружает Sources.xz файлы или вариант, использующий другой метод сжатия. Если уже имеется старая копия этих файлов, APT может обновить её, загрузив только различия (см. СОВЕТ Инкрементальные обновления).

6.1. Содержимое файла sources.list

6.1.1. Синтаксис

Каждая активная строка в файле /etc/apt/sources.list представляет собой исходный текст пакета (репозитория) и состоит как минимум из трёх частей, разделённых пробелами. Полное описание формата файла и принятых композиций для записи см. в source.list(5).

Пример 6.1. Пример формата записи в /etc/apt/sources.list

deb url distribution component1 component2 component3 [..] componentX
deb-src url distribution component1 component2 component3 [..] componentX
Первое поле показывает тип источника:
deb
источник пакетов (репозиторий) скомпилированных пакетов
deb-src
источник пакетов (репозиторий) исходных пакетов
Второе поле содержит основной URL источника (если включены имена файлов, представленных в Packages.gz, необходим полный и корректный URL). Здесь может быть источник с зеркалом Debian или любой другой архив пакетов, поставляемых третьей стороной. URL может начинаться с file:// - локальный источник из иерархии файловой системы, с http:// - источник, доступный на веб-сервере, или с ftp:// - источник, доступный на ftp-сервере. URL также может начинаться с cdrom: для дистрибутивов на дисках CD-ROM/DVD-ROM/Blu-ray, встречается не так часто, как методы установки по сети. Больше методов, таких как ssh:// или tor+http(s):// поддерживаются и описаны в sources.list(5) или в соответствующей apt-transport-method документации к пакетам.
Синтаксис последнего поля зависит от структуры хранилища. В простейших случаях здесь может быть проста показана подпапка (с требуемыми конечными слэшами) требуемого источника (часто это просто “./”, которое показывает отсутствие подпапки — пакет расположен прямо на указанном URL). Но в общем случае хранилища структурированы как зеркала Debian, с множеством дистрибутивов и множеством компонентов в каждом из них. В этих случаях поле содержит имя выбранного дистрибутива (по его “кодовому имени” — см. список на врезке СООБЩЕСТВО Брюс Перенс, скандальный лидер — или по соответствующему “выпуску” — (oldoldstable, oldstable, stable, testing, unstable). Затем следуют доступные компоненты (или разделы) (выбранные из main, contrib и non-free.
Записи cdrom описывают диски CD/DVD-ROM, которые у вас есть. В отличие от других записей, CD-ROM не всегда доступны, т.к. диск должен быть вставлен в привод и обычно только один диск может быть прочитан за раз. Поэтому эти источники управляются несколько другим путём и добавляются с помощью программы apt-cdrom, которая выполняется с параметром add. После запуска данная программа просит пользователя вставить диск в привод, а затем просматривает содержимое диска, ища файлы Packages. Затем она использует эти файлы для обновления базы данных доступных пакетов (подобная операция обычно выполняется с помощью команды apt update). После этого APT просит вставить диск, если потребуется один из пакетов на диске.

6.1.2. Репозитории для пользователей Stable

Здесь представлен стандартный файл sources.list для систем, базирующихся на версии Debian Stable:

Пример 6.2. Файл /etc/apt/sources.list для пользователей Debian Stable

# Security updates
deb http://security.debian.org/ bullseye-security main contrib non-free
deb-src http://security.debian.org/ bullseye-security main contrib non-free

## Debian mirror

# Base repository
deb https://deb.debian.org/debian bullseye main contrib non-free
deb-src https://deb.debian.org/debian bullseye main contrib non-free

# Stable updates
deb https://deb.debian.org/debian bullseye-updates main contrib non-free
deb-src https://deb.debian.org/debian bullseye-updates main contrib non-free

# Stable backports
deb https://deb.debian.org/debian bullseye-backports main contrib non-free
deb-src https://deb.debian.org/debian bullseye-backports main contrib non-free
В этом файле перечислены все источники пакетов, связанные с версией Debian Bullseye (текущей Stable в соответствии с данной записью). Мы предпочли явное название “bullseye” вместо соответствующего обозначения “stable“ (stable, stable-updates, stable-backports), потому что мы не хотим столкнуться с ситуацией изменения основного дистрибутива не под нашим управлением после выхода следующей стабильной версии.
Most packages will come from the “base repository”, which contains all packages but is seldom updated (about once every 2 months for a “point release”). The other repositories are partial (they do not contain all packages) and can host updates (packages with newer version) that APT might install. The following sections will explain the purpose and the rules governing each of those repositories.
Обратите внимание, что когда требуемая версия пакета доступна на нескольких хранилищах, первый из списка в файле sources.list будет использован. Из-за этого неофициальные источники обычно добавляют в конец файла.
В качестве примечания следует отметить, что большая часть сказанного в этом разделе о версии Stable также относится и к версии Oldstable, которая является просто более старой версией Stable, поддерживаемой параллельно текущей.

6.1.2.1. Обновления безопасности

Debian серьезно относится к безопасности. Известные уязвимости программного обеспечения в Debian отслеживаются в Security Bug Tracker и обычно устраняются в разумные сроки. Обновления безопасности размещаются не в обычной сети зеркал Debian, а на security.debian.org на небольшом наборе машин, управляемых Системными администраторами Debian). Этот архив содержит обновления безопасности (подготовленные Командой Безопасности Debian и/или сопровождающими пакетов) для дистрибутивов Stable и Oldstable.
На сервере также могут быть размещены обновления безопасности для версии Testing, но это случается не очень часто, поскольку эти обновления попадают через постоянный поток обновлений, приходящий от Unstable.
For serious issues, the security team issues a Debian Security Advisory (DSA) and announces it together with the security update on the mailing list (archive).

6.1.2.2. Стабильные обновления

Стабильные обновления не чувствительны к безопасности, но считаются достаточно важными, чтобы их можно было отправить пользователям до следующего выпуска стабильной точки.
Этот репозиторий обычно содержит исправления критических и серьезных ошибок, которые не удалось исправить до выпуска или которые были внесены в последующих обновлениях. В зависимости от срочности он также может содержать обновления для пакетов, которые со временем должны меняться, например таких как правила определения спама spamassassin, база вирусов clamav, правила перехода на летнее-зимнее время для всех часовых поясов (tzdata), ESR версия Firefox (firefox-esr) или кропитографичесвкие ключи debian-archive-keyring.
На практике этот репозиторий является подмножеством репозитория proposed-updates, тщательно отобранного Stable Release Managers. Все обновления анонсируются в списке рассылки (archive) и будут включены в следующую Stable точку выпуска в любом случае.

6.1.2.3. Предлагаемые обновления

После выхода дистрибутив Stable обновляется примерно раз в 2 месяца. В репозитории proposed-updates производится подготовка ожидаемых обновлений (под наблюдением Управляющих Стабильного Релиза).
Обновления безопасности и стабильные обновления, описанные в предыдущих разделах, всегда включены в этот репозиторий, но это ещё не всё, поскольку сопровождающие пакетов также имеют возможность исправлять важные ошибки, которые не заслуживают немедленного выпуска.
Каждый может использовать это хранилище для проверки обновлений перед их официальным выпуском. В приведённом ниже фрагменте используется псевдоним bullseye-proposed-updates, который является и более ясным, и более содержательным, поскольку также существует и buster-proposed-updates (для обновлений Oldstable):
deb https://deb.debian.org/debian bullseye-proposed-updates main contrib non-free

6.1.2.4. Stable Backports

В хранилище stable-backports расположены “пакеты с обратной совместимостью”. Это определение относится к пакетом какого-то существующего программного обеспечения, которые были перекомпилированы для устаревшего дистрибутива, обычно для Stable.
Когда дистрибутив немного устаревает, множество проектов разработки ПО выпускает новые версии, которые уже не совместимы с текущей версией Stable (которая дорабатывается только чтобы решить наиболее важные проблемы, такие как проблемы безопасности ). Поскольку выпуски Testing и Unstable могут быть более опасными, сопровождающие пакетов иногда предлагают перекомпилированное для версии Stable программное обеспечение, которое полезно тем, что ограничивает потенциальную неустойчивость при небольшом числе выбранных пакетов. Страница https://backports.debian.org предоставляет дополнительную информацию.
ПО с обратной совместимостью из stable-backports всегда создаётся из пакетов, доступных в Testing. Этим обеспечивается то, что всё установленное ПО с обратной совместимостью будет доступно для обновления для соответствующей стабильной версии при одновременной доступности следующего стабильного выпуска Debian.
Несмотря на то, что данный репозиторий предоставляет новые версии пакетов, APT не будет устанавливать их, если вы не дадите для этого конкретных инструкций (или если вы уже не сделали это с предыдущей версией данного бэкпорта):
$ sudo apt-get install package/bullseye-backports
$ sudo apt-get install -t bullseye-backports package

6.1.3. Репозитории для пользователей Testing/Unstable

Здесь представлен стандартный файл sources.list для системы, запускающей версию Testing или Unstable Debian:

Пример 6.3. Файл /etc/apt/sources.list для пользователей Debian Testing/Unstable

# Unstable
deb https://deb.debian.org/debian unstable main contrib non-free
deb-src https://deb.debian.org/debian unstable main contrib non-free

# Testing
deb https://deb.debian.org/debian testing main contrib non-free
deb-src https://deb.debian.org/debian testing main contrib non-free

# Testing security updates
deb http://security.debian.org/ testing-security main contrib non-free
deb-src http://security.debian.org/ testing-security main contrib non-free

# Stable
deb https://deb.debian.org/debian stable main contrib non-free
deb-src https://deb.debian.org/debian stable main contrib non-free

# Stable security updates
deb http://security.debian.org/ stable-security main contrib non-free
deb-src http://security.debian.org/ stable-security main contrib non-free
С таким файлом sources.list APT будет устанавливать пакеты из Unstable. Если вам это не требуется, используйте настройку APT::Default-Release (см. Раздел 6.2.3, «Обновление системы»), чтобы сообщить APT о необходимости брать пакеты из другого дистрибутива (наиболее вероятно Testing в данном случае).
Совершенно обоснованным является включение всех этих хранилищ, даже когда достаточно только одного. Пользователи Testing оценят возможность выбрать хороший исправленный пакет из Unstable, в случае когда версия Testing содержит надоевшую ошибку. С другой стороны, пользователи Unstable, пострадавшие от неожиданных сбоев в пакетах, имеют возможность откатить пакеты до их (предположительно рабочей) версии Testing.
С включением Stable более спорно, но часто это даёт возможность доступа к некоторым пакетам, которые были удалены из разрабатываемых версий. Также это даёт уверенность, что вы получаете самые свежие обновления для пакетов, которые не изменялись с выпуска последней стабильной версии.

6.1.3.1. Репозиторий Experimental

Архив Experimental (экспериментальных) пакетов представлен на всех зеркалах Debian и содержит пакеты, которые до сих пор не вошли в версию Unstable из-за их качества, не отвечающего стандарту — это зачастую версии разрабатываемого ПО или предварительные версии (альфа, бета, кандидат для выпуска…). Пакет также может быть отправлен сюда после последующих доработок, которые могут привести к проблемам. После этого сопровождающий пытается разрешить эти проблемы, пользуясь помощью продвинутых пользователей, которые могут подсказать правильное решение. После этой первой стадии пакет перемещается в Unstable, где он получает гораздо большую аудиторию и где он будет протестирован гораздо более детально.
Experimental обычно используется теми, кто не боится сломать свою систему, а затем восстановить её. Этот дистрибутив даёт возможность импортировать пакет, с которым пользователь хочет попробовать поработать или в котором у него возникла необходимость. Это как раз показывает подход Debian к таким пакетам, поскольку добавление этого репозитория в файл APT sources.list не приводит к постоянному использованию этих пакетов. Вот строка, которая должна быть добавлена:
deb https://deb.debian.org/debian experimental main contrib non-free

6.1.4. Использование альтернативных зеркал

Примеры sources.list в этой главе относятся к репозиториям пакетов, размещённым на deb.debian.org. Эти URL-адреса перенаправят вас на серверы, находящиеся рядом с вами и управляемые сетями доставки контента (CDN), основная роль которых заключается в хранении множества копий файлов по всему миру и скорейшей доставке их пользователям. Компании CDN, с которыми работает Debian, являются партнёрами Debian и бесплатно предлагают свои услуги Debian. Хотя ни один из этих серверов не находится под прямым контролем Debian, тот факт, что весь архив запечатан подписями GPG, делает это не проблемой.
Придирчивые пользователи, недовольные производительностью deb.debian.org могут попробовать найти зеркало получше в официальном списке зеркал:
Но если вы не знаете, какое зеркало подойдет вам лучше всего, этот список бесполезен. К счастью для вас, Debian поддерживает записи DNS в виде ftp.country-code.debian.org (например, ftp.us.debian.org для США, ftp.fr.debian.org для Франции). и т. д.), которые охватывают многие страны и указывают на одно (или несколько) лучших зеркал, доступных в этой стране.
Альтернативой deb.debian.org раньше был httpredir.debian.org. Этот сервис определит ближайшее к вам зеркало (среди списка официальных зеркал, в основном использующих GeoIP) и перенаправит запросы APT на это зеркало. Эта служба устарела из соображений надёжности, и теперь httpredir.debian.org предоставляет ту же службу на основе CDN, что и deb.debian.org.

6.1.5. Неофициальные ресурсы: mentors.debian.net

Существует множество неофициальных источников пакетов Debian, созданных опытными пользователями, которые перекомпилировали какое-то программное обеспечение — Ubuntu сделала это популярным благодаря своему сервису (PPA) Персонального Архива Пакетов) программистами, которые делают свои творения доступными для всех и даже разработчиками Debian, которые предлагают предварительные версии своих пакетов в Интернете.
Сайтmentors.debian.net интересен тем (хотя он только предоставляет пакеты с исходными кодами), что на нём собираются пакеты, созданные кандидатами на статус официальных разработчиков Debian или добровольцами, которые хотят создавать пакеты Debian без прохождения через этот процесс интеграции в сообщество разработчиков. Эти пакеты сделаны доступными без каких-либо гарантий относительно их качества; будьте уверены, что вы проверили их происхождение и целостность, а затем тестируйте их перед тем, как рассматривать вопрос их использования в работе.
Устанавливая пакет, вы даёте права администратора (root) его создателю, поскольку содержимое сценариев инициализации выполняется под этим пользователем. Официальные пакеты Debian создаются добровольцами, которые были прошли рассмотрение и включение в сообщество, и которые могут подписывать свои пакеты, так что их происхождение и целостность могут быть проверены.
В целом, будьте осторожны с пакетами, происхождение которых вам не известно, и которые на размещены на официальных серверах Debian: оцените степень доверия к их создателю и проверьте целостность пакета.

6.1.6. Кэширующий прокси для пакетов Debian

В случае, когда целая сеть машин настроена на использование одного удалённого сервера для загрузки одних и тех же пакетов, каждый администратор знает, что полезно иметь промежуточный прокси -сервер, работающий как локальный кэш для данной сети (см. врезку СЛОВАРЬ Кэш).
Вы можете настроить APT для использования в качестве "стандартного" прокси (см. Раздел 6.2.4, «Параметры конфигурации» для стороны APT-а и Раздел 11.6, «HTTP/FTP Proxy» для стороны прокси), но экосистема Debian предлагает лучшее решение этой проблемы. Специальные программы, представленные в этом разделе быстрее, чем простой прокси-кэш, потому что они зависят от специальных структур APT репозиториев (например они знают, когда отдельные файлы являются устаревшими или нет, и таким образом устанавливают время, в течение которого они хранятся).
apt-cacher и apt-cacher-ng работают как обычные прокси-кэш серверы. Файл APTsources.list остаётся неизменным, но APT настраивается для использования их в качестве прокси для исходящих запросов.
approx, с другой стороны, действует как HTTP сервер, который “зеркалирует” любое число репозиториев на своих URL верхнего уровня. Сопоставление путей между теми директориями верхнего уровня и удалёнными URL репозиториев находятся в файле /etc/approx/approx.conf:
# <name>   <repository-base-url>
debian     https://deb.debian.org/debian
security   http://security.debian.org/debian-security
approx по умолчанию запускается на порту 9999 через сокет systemd и требует от пользователей настроить свои sources.list файлы, чтобы указать на сервер:
# Sample sources.list pointing to a local approx server
deb http://localhost:9999/security bullseye-security main contrib non-free
deb http://localhost:9999/debian   bullseye main contrib non-free