Někdy musíte uchovat přesnou verzi balíku Debian, po incidentu s aplikací nebo na čas, abyste ověřili aktualizaci na pilotním stroji. apt-mark hold blokuje automatické změny tohoto balíku. Také brání jeho odstranění.
Používejte ho pro identifikovanou výjimku, s důvodem a datem přezkoumání. Nechat balík zabezpečení zablokovaný na měsíce nakonec vytvoří slepou skvrnu v aktualizacích.

Identifikace balíku a nainstalované verze
Začněte tím, že zkontrolujete přesný název balíku. Vyhledávání v repozitářích ne vždy říká, co je skutečně nainstalováno na serveru.
dpkg-query -W -f='${Package} ${Version}n' název-balíku
apt-cache policy název-balíku
První příkaz zobrazuje lokální verzi. Druhý porovnává tuto verzi se známými kandidáty APT. Pokud je balík spojen se službou, poznamenejte si také symptom a verzi, která funguje, než ho zablokujete.
Hold nenahrazuje pochopení závislosti. Pokud zablokujete openssl, linux-image nebo knihovnu používanou více aplikacemi, podívejte se, co chtěla následující aktualizace změnit, než zamrznete balík.
Blokování aktualizace s apt-mark hold
Příkaz vyžaduje administrátorská práva. Nahraďte název-balíku názvem z předchozího kroku.
sudo apt-mark hold název-balíku
sudo apt-mark showhold
showhold by měl zobrazit balík. APT pak toto označení respektuje během běžných aktualizačních operací. Můžete si však zkontrolovat, co by udělal před tím, než přijmete upgrady:
sudo apt update
apt list --upgradable
sudo apt-get -s upgrade
Možnost -s simuluje operaci. Nenačte ani neinstaluje balík. Zkontrolujte, že zablokovaný balík zůstává na očekávané verzi a že závislosti nenutí APT do nekonzistentní situace.
Nezaměňovat hold a ručně nainstalovaný balík
apt-mark manual zejména zabraňuje automatickému odstranění závislosti. Nezablokuje její aktualizaci. Naopak apt-mark hold mění výběr dpkg balíku, aby zabránil jeho instalaci, upgradu nebo automatickému odstranění.
Tento výběr můžete zkontrolovat pomocí dpkg:
dpkg --get-selections název-balíku
dpkg --get-selections | grep ' hold$'
Toto rozlišení zabraňuje falešnému pocitu bezpečí. Balík označený jako manual může velmi dobře přejít na novou verzi během apt upgrade.
Odstranění hold po testování
Když je oprava potvrzena na testovacím stroji, odstraňte blokaci a poté znovu zkontrolujte seznam. Nespouštějte globální aktualizaci jen kvůli odblokování jednoho balíku.
sudo apt-mark unhold název-balíku
sudo apt-mark showhold
sudo apt install název-balíku
Poslední příkaz cílí pouze na dotyčný balík. Znovu si přečtěte dodatečné balíky navržené APT před potvrzením. Pro citlivý balík restartujte poté službu a zkontrolujte její protokoly. Příručka apt-mark Debianu také podrobně popisuje výběry hold, install, remove a purge.
Pokud byl hold uvalen po rozbité aktualizaci, uchovávejte ve své zprávě nebo dokumentaci: balík, zmraženou verzi, důvod, datum testu a podmínku, která umožňuje odblokování. Tato stopa zabraňuje jinému administrátorovi odstranit hold, aniž by věděl, proč existoval.
Kdy by měl být balík odstraněn ze seznamu?
Vracíte se k holdům při každém cyklu údržby. Dočasná blokace se může stát nebezpečnou, pokud aktualizace opraví zranitelnost nebo nekompatibilitu závislostí. Zkontrolujte oznámení Debianu nebo vydavatele softwaru, testujte novou verzi mimo produkci a poté použijte apt-mark unhold, jakmile je původní problém odstraněn.
Abychom správně nainstalovali lokální balík .deb a opravili závislosti, podívejte se také na naši příručku k dpkg a APT. Pokud automatizujete opravy zabezpečení, článek o unattended-upgrades na Debianu vysvětluje kontroly, které je třeba dodržovat, než necháte úlohu fungovat samostatně.