Tutoriel Linux

Zablokować aktualizację pakietu Debian, a następnie znieść blokadę

Débutant3 min de lecture

Musisz czasami zachować dokładną wersję pakietu Debian po incydencie aplikacyjnym lub w celu sprawdzenia aktualizacji na maszynie testowej. apt-mark hold zablokuje automatyczne zmiany dotyczące tego pakietu. Zablokuje również jego usunięcie.

Użyj go dla zidentyfikowanego wyjątku, z uzasadnieniem i datą przeglądu. Pozostawienie pakietu zabezpieczeń zablokowanego przez miesiące ostatecznie tworzy martwy punkt w aktualizacjach.

Tux z zablokowanym, a następnie ponownie aktywowanym pakietem Debian
Zablokuj wersję na czas testowania, a następnie usuń blokadę, gdy poprawka zostanie zatwierdzona.

Identyfikacja pakietu i zainstalowanej wersji

Rozpocznij od sprawdzenia dokładnej nazwy pakietu. Wyszukiwanie w repozytoriach nie zawsze mówi, co jest faktycznie zainstalowane na serwerze.

dpkg-query -W -f='${Package} ${Version}n' nazwa-pakietu
apt-cache policy nazwa-pakietu

Pierwsze polecenie wyświetla wersję lokalną. Drugie porównuje tę wersję z kandydatami znanymi przez APT. Jeśli pakiet jest związany z usługą, zanotuj również objaw i wersję, która działa przed jego zablokowaniem.

Blokada nie zastępuje zrozumienia zależności. Jeśli zablokujesz openssl, linux-image lub bibliotekę używaną przez wiele aplikacji, sprawdź, co następna aktualizacja chciała zmienić przed zamrożeniem pakietu.

Zablokować aktualizację za pomocą apt-mark hold

Polecenie wymaga uprawnień administratora. Zamień nazwa-pakietu na nazwę zapisaną w poprzednim kroku.

sudo apt-mark hold nazwa-pakietu
sudo apt-mark showhold

showhold powinno wyświetlić pakiet. APT będzie respektować tę oznaczenie podczas standardowych operacji aktualizacji. Możesz jednak kontrolować, co by zrobił przed zaakceptowaniem aktualizacji:

sudo apt update
apt list --upgradable
sudo apt-get -s upgrade

Opcja -s symuluje operację. Nie pobiera ani nie instaluje pakietu. Sprawdź, czy zablokowany pakiet pozostaje na oczekiwanej wersji i aby zależności nie popychały APT w stronę niespójnej sytuacji.

Nie mylić hold z pakietem zainstalowanym ręcznie

apt-mark manual przede wszystkim zapobiega automatycznemu usunięciu zależności. Nie blokuje jednak jego aktualizacji. W przeciwnym razie apt-mark hold modyfikuje wybór dpkg pakietu, aby uniemożliwić jego instalację, aktualizację lub automatyczne usunięcie.

Możesz sprawdzić ten wybór za pomocą dpkg:

dpkg --get-selections nazwa-pakietu
dpkg --get-selections | grep ' hold$'

To rozróżnienie zapobiega fałszywemu poczuciu bezpieczeństwa. Pakiet oznaczony jako manual może bardzo dobrze przejść na nową wersję podczas apt upgrade.

Usunąć blokadę po teście

Gdy poprawka zostanie zatwierdzona na maszynie testowej, usuń blokadę, a następnie ponownie sprawdź listę. Nie uruchamiaj ogólnej aktualizacji tylko po to, aby odblokować pojedynczy pakiet.

sudo apt-mark unhold nazwa-pakietu
sudo apt-mark showhold
sudo apt install nazwa-pakietu

Ostatnie polecenie dotyczy tylko odpowiedniego pakietu. Przejrzyj dodatkowe pakiety oferowane przez APT przed potwierdzeniem. Dla wrażliwego pakietu zrestartuj następnie odpowiednią usługę i sprawdź jej dzienniki. Strona podręcznika apt-mark Debian szczegółowo opisuje również wybory hold, install, remove i purge.

Jeśli blokada została nałożona po zepsutej aktualizacji, zachowaj w swoim zgłoszeniu lub dokumentacji: pakiet, zablokowana wersja, powód, data testu i warunek, który pozwala na odblokowanie. Taki zapis zapobiega temu, aby inny administrator usunął blokadę bez wiedzy, dlaczego istniała.

Kiedy należy usunąć pakiet z listy?

Wracaj do blokad w każdym cyklu konserwacyjnym. Czasowe zablokowanie może stać się niebezpieczne, gdy aktualizacja poprawia lukę lub niezgodność zależności. Sprawdź ogłoszenia Debian lub wydawcę oprogramowania, przetestuj nową wersję poza produkcją, a następnie użyj apt-mark unhold, gdy tylko pierwotny problem zostanie rozwiązany.

Aby zainstalować lokalny pakiet .deb i poprawnie naprawić zależności, zapoznaj się również z naszym poradnikiem na temat dpkg i APT. Jeśli automatyzujesz poprawki zabezpieczeń, artykuł na temat niezajętych aktualizacji w Debianie wyjaśnia kontrole, które należy zachować przed pozwoleniem, aby zadanie działało samodzielnie.

sudo apt update && sudo apt upgrade