APT 3.0.0: Революция в управлении пакетами с новым интерфейсом и улучшенным движком зависимостей

4 апреля 2025 года был выпущен инструментарий для управления пакетами APT 3.0.0 (Advanced Package Tool). Это обновление включило все изменения, которые были в экспериментальной версии 2.9. Исходный код этой разработки написан на языках C++ и Shell и распространяется под лицензией GNU General Public License.

Новая версия APT была включена в ветку Debian Unstable и вскоре станет частью репозитория Debian Testing, который поддерживает релиз Debian 13, уже использующий экспериментальную ветку APT 2.9, и также будет добавлена в пакетную базу Ubuntu.

Согласно данным OpenNET, среди основных изменений APT 3.0.0:

– Интерфейс пользователя был переработан, что позволяет более ясно отображать список зависимостей, необходимых для установки пакета. Ранее имена пакетов зависимостей выводились в виде сплошного списка, теперь они организованы в колонки, подобно утилите «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 была признана устаревшей вследствие перехода к новому методу проверки целостности пакетов, который предполагает разделение ключей по репозиториям;

– Добавлена возможность заимствования утилиты sqv из проекта Sequoia для проверки цифровых подписей вместо вызова gpgv. В список команд для вызова gpg добавлена утилита gpg‑sq, написанная на языке Rust, которая принимает те же параметры, что и gpg, но использует реализацию OpenPGP от Sequoia. Она имеет больший приоритет при вызовах, так что для её использования достаточно установить соответствующий пакет;

– Введён новый крипто-бэкенд для библиотеки OpenSSL, заменивший GnuTLS и Gcrypt;

– Установлена привязка типов ключей к расширениям файлов: «.asc» относится к ascii‑armored ключам, «.gpg» — всегда к бинарным ключам, а все остальные расширения приведут к ошибке. Например, файл с ключом «/etc/apt/keyrings/winehq‑archive.key» должен быть переименован в «/etc/apt/keyrings/winehq‑archive.gpg», а путь в файле «/etc/apt/sources.list.d/» исправлен;

– Реализована поддержка самостоятельной проверки хранилищ ключей и операции dearmor (преобразование ключей из формата ASCII в бинарный) без обращения к apt‑key;

– Многие функции перешли на использование класса «std::string» вместо «const char *», что обеспечило большую эффективность работы со строками;

– Предложен абстрактный интерфейс для работы с хэшами в рамках работы по избавлению от жёсткой привязки к одной криптографической библиотеке;

– В вывод команды «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».