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 несколько лет назад была объявлена устаревшей в связи с уходом от старой модели проверки целостности пакетов, в которой использовалось общее хранилище ключей (/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».
Источник новости: habr.com