Сформирован релиз инструментария для управления пакетами APT 3.0.0 (Advanced Package Tool), который вобрал изменения, накопленные в экспериментальной ветке 2.9. Новый выпуск принят в ветку Debian Unstable и в ближайшее время будет интегрирован в репозиторий Debian Testing, в котором развивается релиз Debian 13 и уже используется экспериментальная ветка APT 2.9, а также будет добавлен в пакетную базу Ubuntu.
Среди наиболее важных изменений:
- Переработан интерфейс пользователя, в котором реализовано более наглядное отображение списка зависимостей, необходимых для загрузки при установке пакета. Если раньше имена пакетов с зависимостями выводились сплошным списком, то теперь они разбиваются на колонки в стиле утилиты “ls -C”, а разные блоки вывода подсвечиваются своими цветами (например, удаляемые пакеты выделяются красным, а устанавливаемые – зелёным цветом). При выводе убраны дублирующиеся упоминания дополнительных и новых пакетов (объединены секции “NEW packages” и “additional packages”). Для управления расцветкой добавлены настройки “APT::Color::*” и “APT::Configuration::color”, а также опции “–color” и “–no-color”.
- Реализовано автоматическое разделение на страницы вывода команд “show”, “policy”, “list”, “search” и “showsrc”. Разбивка на страницы включается через настройку Binary::apt::Pager, а приложение для разделения страниц определяется через переменную окружения PAGER.
- Реализован улучшенный движок разрешения зависимостей Solver3 (включается через опцию “–solver 3.0”), в котором для разрешения конфликтов между зависимостями задействован алгоритм поиска с возвратом (backtracking). В новом движке также улучшен выбор версий, обеспечена поддержка выполнения обновлений в несколько стадий, значительно повышена производительность (apt-test теперь выполняется в два раза быстрее), добавлена опция “–no-strict-pinning” для установки экспериментальных версий, добавлена защита от удаления вручную поставленных пакетов, повышена агрессивность автоматического удаления неиспользуемых зависимостей.
Добавлены более понятные обычным пользователям пояснения для ошибок, связанных с зависимостями. - Прекращено использования утилиты apt-key для управления ключами, применяемыми для верификации цифровых подписей пакетов. Утилита apt-key несколько лет назад была объявлена устаревшей в связи с уходом от старой модели проверки целостности пакетов, в которой использовалось общее хранилище ключей (/etc/apt/trusted.gpg) и отсутствовала привязка ключей к репозиториям, т.е. ключ, добавленный для какого-то стороннего репозитория, подходил для проверки пакетов во всех репозиториях. Пришедший на смену apt-key метод работы с ключами подразумевает разделение хранилищ ключей для каждого репозитория (/etc/apt/trusted.gpg.d/ или /etc/apt/keyrings/).
- Добавлена возможность использования утилиты sqv от проекта Sequoia для проверки цифровых подписей вместо вызова gpgv. В список путей для вызова gpg добавлена написанная на языке Rust утилита gpg-sq, принимающая те же аргументы, что и утилита gpg, но имитирующая её работу через Sequoia, реализацию OpenPGP на языке Rust. Вызов gpg-sq является более приоритетным, чем gpg, т.е. для использования gpg-sq вместо gpg достаточно установить соответствующий пакет.
- Добавлен крипто-бэкенд для библиотеки OpenSSL, которая пришла на смену GnuTLS и Gcrypt.
- Обеспечена привязка типов ключей к расширениям файлов: расширение “.asc” связано с ascii-armored ключами, “.gpg” – всегда с бинарными ключами, а все остальные файловые расширения вызовут ошибку. Например, при использовании файла с ключом “/etc/apt/keyrings/winehq-archive.key”, его нужно будет переименовать в “/etc/apt/keyrings/winehq-archive.gpg” и исправить путь в файле в “/etc/apt/sources.list.d/”. Реализована поддержка самостоятельной проверки хранилищ ключей (keyring) и выполнения операции dearmor (преобразование ключа в формате ASCII-armored в бинарный формат) без обращения к apt-key.
- Многие функции переведены на использование класса “std::string” вместо “const char *” (определённый в стандарте С++17 класс std::string_view, более эффективно работающий со строками за счёт использования ссылок на существующие данные и исключения лишнего копирования данных, пока не задействован в коде).
- Предложен абстрактный интерфейс для работы с хэшами, реализованный в рамках работы по избавлению от жёсткой привязки к одной криптографической библиотеке.
- В вывод команды “apt show –full” добавлена информация о закреплении пакетов (pinning), получаемая из полей APT-Pin, APT-Candidate и APT-Release.
- Официально рекомендовано именовать файлы в каталоге /etc/apt/sources.list.d/ именем текущего поставщика в нижнем регистре (“$(dpkg-vendor –query Vendor | tr A-Z a-z).sources”).
- В pkgDepCache добавлена поддержка транзакций и счётчиков обновлений.
- Добавлена опция “–comment” для оставления комментария, сохраняемого в истории выполненных операций.
- Добавлена поддержка HTTP-заголовка Retry-After для оптимизации возобновления прерванных загрузок.
- В команду “apt list” добавлена опция “–target-release”.
- Добавлен новый уровень ошибок “audit”, включаемый через опцию “–audit”.
Дополнительно можно отметить изменения, появившиеся в экспериментальной в ветке APT 2.7 (разработка ветки 2.7 плавно перешла в разработку ветки 2.9), которые станут доступны в Debian 13 (в Debian 12 используется выпуск APT 2.6):
- Добавлена поддержка снапшотов, управляемая опцией “–snapshot” (“-S”), при помощи которой можно обратиться к серверам репозиториев, поддерживающих снапшоты, и выбрать определённое состояние архива репозитория. Например, указав “–snapshot 20250405T081400Z” можно работать со срезом состояния репозитория, зафиксированным 5 апреля 2025 года в 08:14:00. Снапшоты настраиваются в секции APT::Snapshot в файлах sources-list.
- Реализована опция “–update” (“-U”), позволяющая во время выполнения команд установки или обновления пакетов (apt install или apt upgrade) автоматически запустить операцию “apt update” для синхронизации индексов до открытия кэша и обработки sources.list.
- Добавлена команда ‘dist-clean’ для удаления сохранённых в кэше пакетов и списков загруженных пакетов.
Release.
Ссылка here.