Linux Guide · 8 min read · Dec 20, 2025
Come Bloccare gli Aggiornamenti di Pacchetti e Kernel in Debian / Ubuntu

APT è probabilmente lo strumento più utile per un utente Linux. Puoi installare, aggiornare e rimuovere qualsiasi software/pacchetto dal tuo sistema Linux con un solo comando. Ma a volte, hai bisogno di un controllo granulare su quale pacchetto vuoi installare o aggiornare e quale pacchetto bloccare dall’aggiornamento automatico. Perché vorresti farlo? A volte scopri che la versione aggiornata di un pacchetto è difettosa. Non vuoi che quel pacchetto venga aggiornato la prossima volta che esegui sudo apt upgrade. E aggiornare ogni pacchetto singolarmente è un dolore.
Questo tutorial tratterà come bloccare determinati pacchetti dall’essere installati o aggiornati e come bloccare versioni specifiche di pacchetti o kernel dall’essere installati.
Nota: È facile dimenticare quali pacchetti hai bloccato dopo un po’ di tempo, anche quando le loro versioni senza bug sono disponibili. Quindi rimani all’erta poiché mantenere i pacchetti bloccati a lungo può introdurre problemi di sicurezza.
Discuteremo due metodi qui. Il primo metodo bloccherà tutte le installazioni e gli aggiornamenti per un certo pacchetto. Il secondo metodo offre un controllo più granulare, consentendoti di bloccare versioni specifiche di un pacchetto.
Requisiti
- Un server con sistema operativo Ubuntu o Debian. È stata utilizzata Ubuntu 22.04 per questo tutorial, ma i comandi qui dovrebbero funzionare bene anche con altri sistemi operativi basati su Debian e versioni precedenti.
- Un utente non root con privilegi sudo.
Metodo 1 (apt-mark)
Per bloccare un pacchetto dall’essere installato, aggiornato o rimosso, possiamo utilizzare il comando apt-mark.
Se vuoi mantenere un pacchetto, ad esempio, htop dall’essere installato, aggiornato o rimosso, usa il seguente comando.
$ sudo apt-mark hold htop
Dovresti vedere il seguente output.
htop set on hold.
Il pacchetto bloccato rimarrà sulla stessa versione anche se aggiorni il tuo sistema. Questo è particolarmente utile per mantenere indietro i driver grafici.
Per rimuovere il blocco sul pacchetto, emetti il seguente comando.
$ sudo apt-mark unhold htop
Dovresti vedere il seguente output.
Canceled hold on htop.
C’è una importante avvertenza su questo. Anche se il pacchetto non verrà aggiornato automaticamente utilizzando il comando sudo apt upgrade o durante l’aggiornamento del sistema, puoi comunque rimuovere manualmente il pacchetto. sudo apt remove funzionerà ancora sui pacchetti bloccati.
Questo metodo li blocca solo dall’essere cambiati automaticamente. Mantenendoli in attesa, rimarranno alle loro versioni attuali a meno che tu non decida di rimuoverli manualmente.
Metodo 2 (/etc/apt/preferences)
Questo metodo comporta la modifica del file /etc/apt/preferences dove puoi specificare esattamente quale versione di quale pacchetto da quale repository è installata.
Ogni pacchetto riceve una priorità numerica in base alla quale APT decide se installare il pacchetto o meno e, in caso affermativo, da quale repository dovrebbe prelevarlo.
Ad esempio, controlliamo alcuni dettagli sul pacchetto nginx. Emetti il seguente comando.
$ apt-cache policy nginx
Dovresti vedere un output simile.
nginx:
Installed: (none)
Candidate: 1.22.1-1~jammy
Version table:
1.22.1-1~jammy 500
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.22.0-1~jammy 500
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.20.2-1~jammy 500
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.18.0-6ubuntu14.3 500
500 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu jammy-security/main amd64 Packages
1.18.0-6ubuntu14 500
500 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 Packages
Vedrai che ci sono due repository da cui nginx si installa. Il primo è il repository di Ubuntu e il secondo è il repository di nginx.
Puoi vedere 500 scritto contro tutti i repository. Questo numero specifica la priorità del pacchetto. Poiché è lo stesso per tutti i repository, le possibilità che nginx provenga da uno dei repository sono le stesse. Quindi come deciderà il sistema quale pacchetto scegliere? Sceglierà la versione più alta disponibile. In questo caso, è 1.22.1. Per Ubuntu, il numero di versione completo diventa 1.22.1-1~jammy.
Se non vuoi aggiornare alla versione 1.22.1 e vuoi bloccarla, allora devi modificare il file /etc/apt/preferences.
Apri il file nell’editor nano.
$ sudo nano /etc/apt/preferences
Questo comando ti aiuterà anche a creare il file se non esisteva nel sistema in precedenza.
Incolla il seguente codice nel file.
Package: nginx
Pin: version 1.22.1-1~jammy
Pin-Priority: -1
Impostare la priorità a qualsiasi valore inferiore a 0 significa che il pacchetto non verrà installato. Se vuoi che un pacchetto venga sempre installato, imposta la sua priorità a 1000 o superiore.
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Controlliamo di nuovo il pacchetto.
$ apt-cache policy nginx
Vedrai il seguente output.
nginx:
Installed: (none)
Candidate: 1.22.0-1~jammy
Version table:
1.22.1-1~jammy -1
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.22.0-1~jammy 500
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.20.2-1~jammy 500
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.18.0-6ubuntu14.3 500
500 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu jammy-security/main amd64 Packages
1.18.0-6ubuntu14 500
500 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 Packages
Noti qualche differenza? La versione di rilascio candidata è scesa da 1.22.1 a 1.22.0. Questo significa che la prossima versione più alta che il sistema installerà ora è 1.22.0. Noterai anche -1 scritto contro l’ultima versione, il che significa che il sistema dovrebbe saltare quella versione.
Salta una versione ma consenti l’altra
Puoi aggiungere più voci per lo stesso pacchetto nel file. Ad esempio, aggiungi il seguente codice al file.
Package: nginx
Pin: version 1.22.1-1~jammy
Pin-Priority: -1
Package: nginx
Pin: version 1.20.2-1~jammy
Pin-Priority: 1000
Qui stiamo dicendo al sistema di saltare la versione 1.22.1 ma di installare sempre la versione 1.20.2.
Controlliamo di nuovo utilizzando il comando apt-cache policy.
nginx:
Installed: (none)
Candidate: 1.20.2-1~jammy
Version table:
1.22.1-1~jammy -1
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.22.0-1~jammy 500
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.20.2-1~jammy 1000
500 http://nginx.org/packages/ubuntu jammy/nginx amd64 Packages
1.18.0-6ubuntu14.3 500
500 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu jammy-security/main amd64 Packages
1.18.0-6ubuntu14 500
500 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 Packages
La versione candidata è ora passata a 1.20.2 invece di 1.22.0.
Cambiare la preferenza del repository
Consideriamo un altro caso. E se volessimo bloccare Nginx dall’installarsi dal suo repository e scegliere invece il repository di Ubuntu? Un modo sarebbe rimuovere il repository di Nginx, ma puoi usare di nuovo il file delle preferenze per scegliere il repository per te.
Inserisci il seguente codice nel file.
Package: nginx
Pin: release o=nginx
Pin-Priority: -1
La parola chiave release specifica semplicemente la prossima versione più alta. o=nginx si riferisce all’origine del pacchetto. Qui è nginx. Questo significa che il sistema non dovrebbe installare il pacchetto nginx dal suo repository. Un altro modo per ottenere lo stesso risultato è utilizzare il seguente codice.
Package: nginx
Pin: release o=jammy
Pin-Priority: 1000
Questa volta abbiamo impostato la priorità 1000 del pacchetto del repository di Ubuntu (jammy). Questo garantirà che Nginx venga sempre installato dal repository di Ubuntu e non da nessun altro luogo.
Non solo puoi specificare l’origine del pacchetto, ma puoi anche aggiungere l’archivio, il componente, l’etichetta e l’architettura del pacchetto che il sistema dovrebbe scegliere utilizzando le seguenti parole chiave sotto la sezione Pin.
- c -> Componente
- a -> Archivio
- o -> Origine
- l -> Etichetta
- n -> Architettura
Bloccare Aggiornamenti di Kernel Specifici
Vediamo come possiamo bloccare aggiornamenti specifici del kernel. Elenca tutti i pacchetti relativi al kernel sul tuo sistema.
$ dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2}'
Vedrai un output simile.
linux-headers-5.15.0-33-generic
linux-image-5.15.0-33-generic
linux-modules-5.15.0-33-generic
linux-modules-extra-5.15.0-33-generic
I seguenti metodi dovranno essere ripetuti per tutti i pacchetti ottenuti qui.
Metodo 1 (apt-mark)
Per prima cosa, controlliamo quale versione del kernel è attiva. Per farlo, esegui il seguente comando.
$ uname -r
Dovresti vedere un output simile.
5.15.0-53-generic
Per impedire che il kernel venga ulteriormente aggiornato, possiamo semplicemente utilizzare il comando apt-mark.
$ sudo apt-mark hold linux-image-$(uname -r)
Dovresti vedere un output simile.
linux-image-5.15.0-53-generic set on hold.
Puoi seguire lo stesso metodo per bloccare le intestazioni del kernel bloccando il pacchetto linux-headers-$(uname -r).
Metodo 2 (/etc/apt/apt.conf.d/50unattended-upgrades)
Il secondo metodo comporta il file /etc/apt/apt.conf.d/50unattended-upgrades.
Aprilo per la modifica.
$ sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Scorri verso il basso fino alla sezione Unattended-Upgrade::Package-Blacklist e modifica come segue.
Unattended-Upgrade::Package-Blacklist {
"linux-generic";
"linux-image-generic";
"linux-headers-generic";
"linux-modules-generic";
"linux-modules-extra-generic";
};
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Metodo 3 (dpkg)
Per mantenere l’aggiornamento del kernel utilizzando dpkg, emetti il seguente comando. Questo comando manterrà tutti i pacchetti relativi al kernel contemporaneamente.
$ for i in $(dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2}'); do echo $i hold | dpkg --set-selections; done
Per rimuovere il blocco, usa il seguente comando.
$ for i in $(dpkg -l "*$(uname -r)*" | grep kernel | awk '{print $2}'); do echo $i install | dpkg --set-selections; done
Metodo 4 (/etc/apt/preferences)
Controlliamo prima i dettagli riguardanti la versione attuale del kernel.
$ apt-cache policy linux-image-$(uname -r)
Dovresti vedere il seguente output.
linux-image-5.15.0-53-generic:
Installed: 5.15.0-53.59
Candidate: 5.15.0-53.59
Version table:
*** 5.15.0-53.59 500
500 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages
500 http://us.archive.ubuntu.com/ubuntu jammy-security/main amd64 Packages
100 /var/lib/dpkg/status
Anche se il kernel 5.15.0.53 è alla sua ultima versione al momento della scrittura di questo tutorial, supponiamo che la prossima versione sia già disponibile (5.15.0.56 è l’attuale versione stabile del kernel Linux).
Per bloccare la prossima versione del kernel, inserisci il seguente codice nel file /etc/apt/preferences.
Package: linux-image-5.15.0-53-generic linux-headers-5.15.0-33-generic linux-modules-5.15.0-33-generic linux-modules-extra-5.15.0-33-generic
Pin: version 5.15.0-53.59
Pin-Priority: -1
Il codice sopra bloccherà Ubuntu dall’installare qualsiasi o tutti gli aggiornamenti al kernel.
Puoi seguire i metodi 2 e 3 per qualsiasi pacchetto regolare, non solo per il kernel.
Conclusione
Questo è tutto per questo tutorial. Ora dovresti essere in grado di bloccare qualsiasi o specifiche versioni di pacchetti che non vuoi vengano installati o aggiornati sul tuo sistema Ubuntu o Debian. Se hai domande, postale nei commenti qui sotto.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.