Ricerca nel sito web

Come disabilitare gli aggiornamenti dei pacchetti utilizzando YUM/DNF in RHEL Linux


DNF (Dandified Yum) è la versione di nuova generazione di YUM (Yellowdog Updater, Modified), è un gestore di pacchetti predefinito open source per distribuzioni Linux basate su Red Hat, utilizzato per ottenere, installare, aggiornare, rimuovere, e interrogare i pacchetti dai repository software ufficiali e dai repository di terze parti.

Durante l'aggiornamento del sistema, a volte, non aggiorniamo alcuni pacchetti come Apache Server (HTTP), MySQL, PHP, o qualsiasi altra applicazione importante, poiché l'aggiornamento di tale software potrebbe interrompere le applicazioni Web attualmente in esecuzione su un server e causare gravi problemi. Si consiglia di interrompere gli aggiornamenti per tale software finché l'applicazione non viene aggiornata con nuovi aggiornamenti.

In questo articolo ti mostreremo come escludere (disabilitare) determinati aggiornamenti di pacchetti utilizzando il gestore pacchetti YUM e DNF su distribuzioni basate su RPM come RHEL , CentOS, Fedora, Rocky Linux e AlmaLinux. Possiamo anche escludere o disabilitare determinati aggiornamenti dei pacchetti da eventuali repository di terze parti.

La sintassi di esclusione sarebbe la seguente.

exclude=package package1 packages*

La direttiva exclude di cui sopra è definita nel file di configurazione /etc/yum.conf o /etc/dnf/dnf.conf con l'elenco dei pacchetti da escludere dagli aggiornamenti o dalle installazioni.

La sintassi precedente escluderà "pacchetto", "pacchetto1" e l'elenco degli aggiornamenti o delle installazioni del "pacchetto". Ogni parola chiave deve essere separata con uno spazio per l'esclusione dei pacchetti.

Come escludere i pacchetti in YUM o DNF

Per escludere (disabilitare) aggiornamenti di pacchetti specifici, apri il file chiamato /etc/yum.conf o /etc/dnf/dnf.conf con l'editor che preferisci.

vi /etc/yum.conf
OR
vi /etc/dnf/dnf.conf

Aggiungi la seguente riga in fondo al file con la parola chiave exclude come mostrato di seguito.

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

This is the default, if you make this bigger yum won't see if the metadata 
is newer on the remote and so you'll "gain" the bandwidth of not having to
download the new metadata and "pay" for it by yum not having correct
information.
 It is esp. important, to have correct metadata, for distributions like
Fedora which don't keep old packages around. If you don't like this checking
interupting your command line usage, it's much better to have something
manually check the metadata once an hour (yum-updatesd will do this).
metadata_expire=90m

PUT YOUR REPOS HERE OR IN separate files named file.repo
in /etc/yum.repos.d

## Exclude following Packages Updates ##
exclude=httpd php mysql

Nell'esempio sopra, la riga exclude disabiliterà gli aggiornamenti per “httpd” “php” e “mysql” Pacchetti. Proviamo a installarne o aggiornarne uno utilizzando il comando YUM come mostrato di seguito.

yum update httpd
OR
dnf update httpd
Uscita del campione
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.01link.hk
 * extras: centos.01link.hk
 * updates: mirrors.hns.net.in
base                                                   | 3.7 kB     00:00
extras                                                 | 3.0 kB     00:00
updates                                                | 3.5 kB     00:00
updates/primary_db                                     | 2.7 MB     00:16
Setting up Update Process
No Packages marked for Update

Come escludere i pacchetti da EPEL Repo

Per escludere installazioni o aggiornamenti di pacchetti dal repository EPEL, aprire il file chiamato /etc/yum.repos.d/epel.repo.

vi /etc/yum.repos.d/epel.repo

Aggiungi la riga di esclusione specificando i pacchetti da escludere dagli aggiornamenti.

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
## Exclude following Packages Updates ##
exclude=perl php python

Ora prova ad aggiornare i file sopra specificati dal repository EPEL utilizzando il comando yum/dnf come mostrato.

dnf update perl php python
OR
yum update perl php python
Uscita del campione
Last metadata expiration check: 0:00:37 ago on Wednesday 17 November 2021 03:41:28 AM EST.
Package perl available, but not installed.
No match for argument: perl
No match for argument: php
No match for argument: python
Error: No packages marked for upgrade.

Puoi anche utilizzare l'opzione della riga di comando yum/dnf per escludere i pacchetti senza aggiungerli ai file del repository.

yum --exclude=httpd update
Or
dnf --exclude=httpd update

Per escludere un elenco di pacchetti, utilizzare il comando come segue.

yum --exclude=mysql\* --exclude=httpd\* update
Or
dnf --exclude=mysql\* --exclude=httpd\* update

In questo modo puoi escludere gli aggiornamenti per tutti i pacchetti che desideri. Esistono molti altri modi per farlo, ad esempio recentemente abbiamo compilato un articolo su 4 modi utili per bloccare/disabilitare o bloccare determinati pacchetti utilizzando il comando yum in Linux.