Linux · 7 min read · Dec 01, 2025
Come Bloccare Aggiornamenti di Pacchetti e Kernel in CentOS / Rocky Linux

Il gestore di pacchetti è 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 ha dei bug. Non vuoi che quel pacchetto venga aggiornato la prossima volta che esegui sudo yum upgrade. E aggiornare ogni pacchetto singolarmente è un problema.
In questo tutorial, copriremo 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’, anche quando le loro versioni senza bug sono disponibili. Quindi rimani all’erta poiché mantenere pacchetti bloccati a lungo può introdurre problemi di sicurezza.
Discuteremo cinque metodi qui. Tutti questi metodi coinvolgeranno il gestore di pacchetti yum ( Yellow dog Updater, Modified) e dnf ( Dandified YUM).
Prerequisiti
- Un server con CentOS o Rocky Linux o Alma Linux. Rocky Linux 9 è stato utilizzato per questo tutorial, ma i comandi qui dovrebbero funzionare bene anche con gli altri sistemi operativi e versioni precedenti.
- Un utente non root con privilegi sudo.
Metodo 1 - Disabilitare Permanentemente Installazioni/Aggiornamenti di Pacchetti (Utilizzando yum.conf)
Per bloccare un pacchetto permanentemente dall’essere installato, aggiornato o rimosso, possiamo utilizzare il file /etc/yum.conf o /etc/dnf/dnf.conf.
Dovrebbe apparire come segue.
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
Se vuoi bloccare un pacchetto, ad esempio, nginx dall’essere installato, aggiornato o rimosso, aggiungi la seguente riga alla fine del file.
exclude=nginx
Se vuoi bloccare tutti i pacchetti nginx, puoi usare il carattere *.
exclude=nginx*
Se vuoi escludere più di un pacchetto, puoi separare i loro nomi con uno spazio.
exclude=nginx php
Il pacchetto bloccato rimarrà sulla stessa versione anche se aggiorni il tuo sistema. Questo è particolarmente utile per mantenere indietro i driver grafici.
Proviamo a installare il pacchetto bloccato, nginx.
$ sudo dnf install nginx
oppure
$ sudo yum install nginx
Otterrai un output simile.
Ultima verifica della scadenza dei metadati: 0:00:21 fa lun 05 dic 2022 10:42:01 AM UTC.
Tutte le corrispondenze sono state filtrate dall'esclusione per l'argomento: nginx
Errore: Impossibile trovare una corrispondenza: nginx
Puoi anche bloccare i pacchetti in base alla loro architettura qui. Ad esempio, se vuoi bloccare i pacchetti a 32 bit, puoi inserire la seguente riga nel file /etc/yum.conf.
exclude=*.i?86 *i686
C’è un’importante avvertenza con questo metodo. Anche se il pacchetto non verrà aggiornato automaticamente utilizzando il comando sudo yum upgrade o durante l’aggiornamento del sistema, puoi comunque rimuovere il pacchetto manualmente. sudo yum remove funzionerà ancora sui pacchetti bloccati.
Questo metodo li blocca solo dall’essere cambiati automaticamente. Mantenendoli in attesa, li manterrà alle loro versioni attuali, a meno che tu non decida di rimuoverli manualmente.
Bloccare Aggiornamenti del Kernel
Per bloccare l’aggiornamento del kernel, usa il seguente comando.
$ sudo dmf --exclude=kernel* update
oppure
$ sudo yum --exclude=kernel* update
Puoi usare kernel* come nome del pacchetto in tutti gli altri metodi per bloccare gli aggiornamenti del kernel.
Metodo 2 - Disabilitare Temporaneamente Installazioni/Aggiornamenti di Pacchetti
Questo metodo prevede l’uso del comando yum con un parametro aggiuntivo.
Al momento dell’aggiornamento di qualsiasi pacchetto, usa l’opzione -x con il tuo comando per bloccare pacchetti specifici che non vuoi aggiornare.
$ sudo dnf -x nginx update
oppure
$ sudo yum -x nginx update
Il comando sopra aggiornerà tutti i pacchetti tranne il pacchetto nginx sul tuo sistema. Per bloccare più pacchetti con un solo comando, usa l’opzione -x più volte.
$ sudo dnf -x nginx -x php update
oppure
$ sudo yum -x nginx -x php update
Puoi anche usare l’opzione –exclude invece di -x nello stesso modo.
$ sudo dnf --exclude nginx, php
oppure
$ sudo yum --exclude nginx, php
Metodo 3 - Utilizzando il Repository (Utilizzando file .repo)
Se hai un pacchetto installato tramite il suo repository, allora c’è un altro modo per impedirne l’aggiornamento. Questo si fa modificando il suo file .repo che puoi trovare nella directory /etc/yum.repos.d.
Supponiamo che il tuo sistema abbia il repository Epel aggiunto e non vuoi installare il pacchetto golang da esso, puoi bloccarlo aggiungendo la riga exclude=certbot nel file /etc/yum.repos.d/epel.repo come mostrato.
[epel]
name=Extra Packages for Enterprise Linux 8 - $basearch
# È molto più sicuro usare il metalink, ma se desideri utilizzare un mirror locale
# inserisci il suo indirizzo qui.
#baseurl=https://download.example/pub/epel/8/Everything/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=$basearch&infra=$infra&content=$contentdir
enabled=1
gpgcheck=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
exclude=certbot
...
Ora, prova a installare il pacchetto certbot che è disponibile tramite il repository Epel.
$ sudo dnf install certbot
oppure
$ sudo yum install certbot
Otterrai un output simile.
Extra Packages for Enterprise Linux 8 - x86_64 20 kB/s | 4.5 kB 00:00
Tutte le corrispondenze sono state filtrate dall'esclusione per l'argomento: certbot
Errore: Impossibile trovare una corrispondenza: certbot
Metodo 4 - Bloccare un intero repository dall’aggiornamento
In alternativa, puoi bloccare un intero repository dall’essere aggiornato.
Per prima cosa, controlliamo tutti i repository sul nostro sistema.
$ dnf repolist
oppure
$ yum repolist
Otterrai un output simile.
repo id repo name
appstream Rocky Linux 8 - AppStream
baseos Rocky Linux 8 - BaseOS
digitalocean-agent DigitalOcean Agent
docker-ce-stable Docker CE Stable - x86_64
epel Extra Packages for Enterprise Linux 8 - x86_64
extras Rocky Linux 8 - Extras
nginx-stable nginx stable repo
Per escludere il repository Epel dall’aggiornamento, usa il seguente comando.
$ sudo dnf update --disablerepo=epel
oppure
$ sudo yum update --disablerepo=epel
Puoi disabilitare più repository separando i loro id con delle virgole.
$ sudo dnf update --disablerepo=epel, extras
oppure
$ sudo yum update --disablerepo=epel, extras
Bloccare Repository tramite il loro file repo
C’è un altro modo per bloccare un repository che prevede la modifica del file repo particolare.
Apriamo il file epel.repo per la modifica.
$ sudo nano /etc/yum.repos.d/epel.repo
Cambia il valore della variabile enabled da 1 a 0.
[epel]
name=Extra Packages for Enterprise Linux 8 - $basearch
# È molto più sicuro usare il metalink, ma se desideri utilizzare un mirror locale
# inserisci il suo indirizzo qui.
#baseurl=https://download.example/pub/epel/8/Everything/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-8&arch=$basearch&infra=$infra&content=$contentdir
enabled=0
gpgcheck=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
...
Salva il file premendo Ctrl + X e inserendo Y quando richiesto.
Ora, proviamo a installare il pacchetto certbot che è disponibile nel repository epel.
$ sudo dnf install certbot
oppure
$ sudo yum install certbot
Otterrai un output simile.
Ultima verifica della scadenza dei metadati: 0:02:10 fa lun 05 dic 2022 10:48:31 AM UTC.
Nessuna corrispondenza per l'argomento: certbot
Errore: Impossibile trovare una corrispondenza: certbot
Metodo 5 - Bloccare Pacchetti a una Versione Particolare (Utilizzando il plugin versionlock)
Versionlock è un plugin per il gestore di pacchetti Yum. Questo plugin non consente ai pacchetti di essere aggiornati a una versione superiore a quella installata al momento del blocco.
Prima, installa versionlock.
$ sudo dnf install dnf-plugin-versionlock
oppure
$ sudo yum install dnf-plugin-versionlock
Questo creerà anche un file /etc/yum/pluginconf.d/versionlock.list sul tuo sistema.
Per bloccare la versione attuale di mariadb-server installata sul tuo sistema, esegui il seguente comando.
$ sudo dnf versionlock mariadb-server
oppure
$ sudo yum versionlock mariadb-server
Otterrai un output simile.
Ultima verifica della scadenza dei metadati: 0:01:05 fa lun 05 dic 2022 12:14:16 PM UTC.
Aggiunta del versionlock su: mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.*
Puoi aggiungere più pacchetti contemporaneamente.
$ sudo dnf versionlock evolution golang
oppure
$ sudo yum versionlock evolution golang
Otterrai un output simile.
Ultima verifica della scadenza dei metadati: 0:01:05 fa lun 05 dic 2022 12:14:16 PM UTC.
Aggiunta del versionlock su: evolution-0:3.28.5-18.el8.*
Aggiunta del versionlock su: golang-0:1.18.4-1.module+el8.7.0+1073+99e3b3cd.*
Proviamo ad aggiornare il pacchetto mariadb-server.
$ sudo dnf update mariadb-server
oppure
$ sudo yum update mariadb-server
Otterrai un output simile.
Ultima verifica della scadenza dei metadati: 0:02:07 fa lun 05 dic 2022 12:14:16 PM UTC.
Pacchetto mariadb-server disponibile, ma non installato.
Nessuna corrispondenza per l'argomento: mariadb-server
Errore: Nessun pacchetto contrassegnato per l'aggiornamento.
Per controllare l’elenco dei pacchetti bloccati tramite il plugin versionlock, usa il seguente comando.
$ dnf versionlock list
oppure
$ yum versionlock list
Otterrai un output simile.
Ultima verifica della scadenza dei metadati: 0:00:05 fa mer 07 dic 2022 02:36:20 AM UTC.
elasticsearch-7.17.5-1.x86_64
mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.*
evolution-0:3.28.5-18.el8.*
golang-0:1.18.4-1.module+el8.7.0+1073+99e3b3cd.*
Per rimuovere il pacchetto dal versionlock, usa il seguente comando.
$ sudo dnf versionlock delete mariadb-server
oppure
$ sudo yum versionlock delete mariadb-server
Otterrai il seguente output.
Eliminazione del versionlock per: mariadb-server-3:10.3.35-1.module+el8.6.0+1005+cdf19c22.*
Per annullare l’elenco e cancellare i blocchi, usa il seguente comando.
$ sudo dnf versionlock clear
oppure
$ sudo yum versionlock clear
In alternativa, puoi modificare il file /etc/yum/pluginconf.d/versionlock.list per bloccare i pacchetti utilizzando il plugin versionlock.
Per aggiungere un pacchetto installato al file, usa il seguente comando.
$ sudo sh -c 'rpm -qa | grep evolution >> /etc/yum/pluginconf.d/versionlock.list'
Il comando sopra blocca il pacchetto evolution aggiungendolo all’elenco. Abbiamo usato rpm -qa | grep evolution per ottenere il nome completo del pacchetto. E il
sudo sh -c comando esegue una shell sudo sotto la quale i comandi per scrivere nel file vengono eseguiti.
Conclusione
Questo è tutto per questo tutorial. Ora dovresti essere in grado di bloccare qualsiasi versione specifica di qualsiasi pacchetto che non vuoi venga installato o aggiornato sul tuo sistema CentOS o Rocky Linux.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.