Została wydana wersja narzędzia do zarządzania pakietami APT 3.0.0 (Advanced Package Tool), które zawiera zmiany zgromadzone w eksperymentalnej gałęzi 2.9. Nowa wersja została zaakceptowana do gałęzi Debian Unstable i wkrótce zostanie zintegrowana z repozytorium Debian Testing, w którym rozwija się wydanie Debian 13 i już używana jest eksperymentalna gałąź APT 2.9, a także zostanie dodana do bazy pakietów Ubuntu.
Do najważniejszych zmian należą:
- Przeprojektowano interfejs użytkownika, w którym wdrożono bardziej przejrzyste wyświetlanie listy zależności potrzebnych do pobrania podczas instalacji pakietu. Jeśli wcześniej nazwy pakietów z zależnościami były wyświetlane w jednolitym zestawieniu, to teraz są one dzielone na kolumny w stylu narzędzia „ls -C”, a różne bloki wyjścia są podświetlane swoimi kolorami (np. pakiety do usunięcia są zaznaczone na czerwono, a instalowane na zielono). Przy wyjściu usunięto zduplikowane wzmianki o dodatkowych i nowych pakietach (połączono sekcje „NEW packages” i „additional packages”). Do zarządzania kolorem dodano ustawienia „APT::Color::*” oraz „APT::Configuration::color”, a także opcje „—color” i „—no-color”.

- Zaimplementowano automatyczne paginowanie wyjścia poleceń „show”, „policy”, „list”, „search” i „showsrc”. Paginacja jest włączana poprzez ustawienie Binary::apt::Pager, a aplikacja do paginacji jest definiowana przez zmienną środowiskową PAGER.
- Zrealizowano ulepszony silnik rozwiązywania zależności Solver3 (włączany przez opcję „—solver 3.0”), w którym do rozwiązania konfliktów między zależnościami wykorzystano algorytm przeszukiwania z powrotem (backtracking). W nowym silniku poprawiono również wybór wersji, zapewniono wsparcie dla przeprowadzania aktualizacji w kilku etapach, znacznie zwiększono wydajność (apt-test teraz działa dwa razy szybciej), dodano opcję „—no-strict-pinning” do instalacji wersji eksperymentalnych, wprowadzono ochronę przed ręcznym usuwaniem zainstalowanych pakietów oraz zwiększono agresywność automatycznego usuwania nieużywanych zależności. Dodano bardziej zrozumiałe dla zwykłych użytkowników wyjaśnienia błędów związanych z zależnościami.
- Zarządzanie kluczami używanymi do weryfikacji cyfrowych podpisów pakietów za pomocą narzędzia apt-key zostało zaprzestane. Narzędzie apt-key zostało uznane za przestarzałe kilka lat temu w związku z odejściem od starego modelu weryfikacji integralności pakietów, który wykorzystywał wspólne repozytorium kluczy (/etc/apt/trusted.gpg) i nie pozwalał na przypisanie kluczy do repozytoriów, co oznacza, że klucz dodany do zewnętrznego repozytorium mógł służyć do weryfikacji pakietów we wszystkich repozytoriach. Nowa metoda zarządzania kluczami, wprowadzona w miejsce apt-key, polega na rozdzieleniu repozytoriów kluczy dla każdego repozytorium (/etc/apt/trusted.gpg.d/ lub /etc/apt/keyrings/).
- Dodano możliwość korzystania z narzędzia sqv z projektu Sequoia do weryfikacji cyfrowych podpisów zamiast wywołania gpgv. Do listy ścieżek dla wywołania gpg dodano napisane w języku Rust narzędzie gpg-sq, które przyjmuje te same argumenty co narzędzie gpg, ale naśladuje jego działanie przez Sequoia, implementację OpenPGP w języku Rust. Wywołanie gpg-sq ma wyższy priorytet niż gpg, co oznacza, że wystarczy zainstalować odpowiedni pakiet, aby używać gpg-sq zamiast gpg.
- Dodano wsparcie dla backendu kryptograficznego w bibliotece OpenSSL, który zastępuje GnuTLS i Gcrypt.
- Zapewniono przypisanie typów kluczy do rozszerzeń plików: rozszerzenie „.asc” związane jest z kluczami ascii-armored, „.gpg” — zawsze z kluczami binarnymi, a wszelkie inne rozszerzenia plików spowodują wystąpienie błędu. Na przykład, korzystając z pliku z kluczem „/etc/apt/keyrings/winehq-archive.key”, należy go zmienić na „/etc/apt/keyrings/winehq-archive.gpg” i poprawić ścieżkę w pliku „/etc/apt/sources.list.d/”. Wprowadzono wsparcie dla samodzielnego sprawdzania repozytoriów kluczy (keyring) oraz realizacji operacji dearmor (konwersja klucza w formacie ASCII-armored do formatu binarnego) bez korzystania z apt-key.
- Wiele funkcji przetłumaczono na użycie klasy „std::string” zamiast „const char *” (określona w standardzie C++17 klasa std::string_view, której działanie ze stringami jest bardziej efektywne dzięki użyciu referencji do istniejących danych oraz unikaniu zbędnego kopiowania danych, dopóki nie będzie użyta w kodzie).
- Zaproponowano abstrakcyjny interfejs do pracy z haszami, wdrożony w ramach prac nad pozbyciem się sztywnego powiązania z jedną biblioteką kryptograficzną.
- Do wyjścia polecenia „apt show —full” dodano informacje o przypinaniu pakietów (pinning), uzyskiwane z pól APT-Pin, APT-Candidate i APT-Release.
- Zaleca się oficjalne nazywanie plików w katalogu /etc/apt/sources.list.d/ nazwą bieżącego dostawcy w małych literach („$(dpkg-vendor —query Vendor | tr A-Z a-z).sources”).
- W pkgDepCache dodano wsparcie dla transakcji i liczników aktualizacji.
- Dodano opcję „—comment” do pozostawienia komentarza, który jest przechowywany w historii wykonanych operacji.
- Dodano wsparcie dla nagłówka HTTP Retry-After w celu optymalizacji wznowienia przerwanych pobrań.
- Do komendy „apt list” dodano opcję „—target-release”.
- Dodano nowy poziom błędów „audit”, który można włączyć za pomocą opcji „—audit”.
Dodatkowo warto zaznaczyć zmiany, które pojawiły się w eksperymentalnej gałęzi APT 2.7 (rozwój gałęzi 2.7 płynnie przeszedł w rozwój gałęzi 2.9), które będą dostępne w Debianie 13 (w Debianie 12 używana jest wersja APT 2.6):
- Dodano wsparcie dla migawków, zarządzane przez opcję „—snapshot” („-S”), dzięki której można zwrócić się do serwerów repozytoriów wspierających migawki i wybrać określony stan archiwum repozytorium. Na przykład, podając „—snapshot 20250405T081400Z”, można pracować z migawką stanu repozytorium zarejestrowaną 5 kwietnia 2025 roku o godzinie 08:14:00. Migawki konfiguruje się w sekcji APT::Snapshot w plikach sources-list.
- Zrealizowano opcję „—update” („-U”), która pozwala podczas wykonywania poleceń instalacji lub aktualizacji pakietów (apt install lub apt upgrade) automatycznie uruchomić operację „apt update” w celu synchronizacji indeksów przed otwarciem pamięci podręcznej i przetworzeniem sources.list.
- Dodano polecenie ‘dist-clean’ do usuwania zapisanych w pamięci podręcznej pakietów i list pobranych pakietów.
Źródło: opennet.ru

