Tutoriel Linux

Bloccare l’aggiornamento di un pacchetto Debian, poi sollevare il blocco

Débutant3 min de lecture

Talvolta è necessario mantenere una versione specifica di un pacchetto Debian, dopo un incidente applicativo o il tempo di verificare un aggiornamento su una macchina di prova. apt-mark hold blocca le modifiche automatiche a quel pacchetto. Blocca anche la sua rimozione.

Usalo per un’eccezione identificata, con un motivo e una data di riesame. Lasciare un pacchetto di sicurezza bloccato per mesi finisce per creare un’area cieca negli aggiornamenti.

Tux con un pacchetto Debian bloccato poi riattivato
Blocca una versione finché non la testi, poi rimuovi il blocco non appena la correzione è convalidata.

Identificare il pacchetto e la versione installata

Inizia controllando il nome esatto del pacchetto. Una ricerca nei repository non dice sempre cosa è realmente installato sul server.

dpkg-query -W -f='${Package} ${Version}n' nome-del-pacchetto
apt-cache policy nome-del-pacchetto

Il primo comando mostra la versione locale. Il secondo confronta questa versione con i candidati noti da APT. Se il pacchetto è legato a un servizio, annota anche il sintomo e la versione che funziona prima di bloccarlo.

Un hold non sostituisce la comprensione di una dipendenza. Se blocchi openssl, linux-image o una libreria utilizzata da più applicazioni, guarda cosa la prossima aggiornamento voleva modificare prima di congelare il pacchetto.

Bloccare l’aggiornamento con apt-mark hold

Il comando richiede diritti di amministratore. Sostituisci nome-del-pacchetto con il nome rilevato nel passaggio precedente.

sudo apt-mark hold nome-del-pacchetto
sudo apt-mark showhold

showhold deve visualizzare il pacchetto. APT rispetta quindi questa etichettatura durante le operazioni di aggiornamento regolari. Puoi comunque controllare cosa farebbe prima di accettare un aggiornamento:

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

L’opzione -s simula l’operazione. Non scarica né installa pacchetti. Verifica che il pacchetto bloccato rimanga alla sua versione prevista e che le dipendenze non spingano APT verso una situazione incoerente.

Non confondere hold e pacchetto installato manualmente

apt-mark manual impedisce soprattutto la auto-rimozione di una dipendenza. Non blocca il suo aggiornamento. Al contrario, apt-mark hold modifica la selezione dpkg del pacchetto per impedire la sua installazione, aggiornamento o rimozione automatica.

Puoi verificare questa selezione con dpkg:

dpkg --get-selections nome-del-pacchetto
dpkg --get-selections | grep ' hold$'

Questa distinzione evita un falso senso di sicurezza. Un pacchetto contrassegnato come manual può molto bene passare a una nuova versione durante apt upgrade.

Rimuovere il hold dopo il test

Quando la correzione è convalidata su una macchina di test, rimuovi il blocco e controlla di nuovo la lista. Non avviare un aggiornamento globale solo per sbloccare un singolo pacchetto.

sudo apt-mark unhold nome-del-pacchetto
sudo apt-mark showhold
sudo apt install nome-del-pacchetto

L’ultimo comando mira solo al pacchetto interessato. Ricontrolla i pacchetti aggiuntivi proposti da APT prima di confermare. Per un pacchetto sensibile, successivamente riavvia il servizio interessato e controlla i suoi log. La pagina di manuale apt-mark di Debian dettaglia anche le selezioni hold, install, remove e purge.

Se il hold era stato imposto dopo un aggiornamento difettoso, annota nel tuo ticket o nella tua documentazione: il pacchetto, la versione congelata, il motivo, la data del test e la condizione che consente la rimozione del blocco. Questa traccia evita che un altro amministratore rimuova il hold senza sapere perché esistesse.

Quando è necessario rimuovere un pacchetto dalla lista?

Ritorna sugli hold ad ogni ciclo di manutenzione. Un blocco temporaneo può diventare pericoloso quando un aggiornamento corregge una falla o un’incompatibilità di dipendenze. Controlla gli annunci Debian o l’editore del software, testa la nuova versione fuori produzione, poi utilizza apt-mark unhold non appena il problema iniziale è risolto.

Per installare un pacchetto .deb locale e riparare correttamente le dipendenze, consulta anche la nostra guida su dpkg e APT. Se automatizzi le correzioni di sicurezza, l’articolo su unattended-upgrades su Debian spiega i controlli da mantenere prima di lasciare che il compito funzioni da solo.