Kako onemogočiti posodobitve paketov z uporabo YUM/DNF v RHEL Linux


Distribucije Linuxa, ki temeljijo na Red Hat, ki se uporablja za pridobivanje, namestitev, nadgradnjo, odstranjevanje in poizvedovanje po paketih iz uradnih repozitorijev programske opreme in repozitorijev tretjih oseb.

Med posodabljanjem sistema včasih ne posodobimo določenih paketov, kot so strežnik Apache (HTTP), MySQL, PHP ali katera koli druga večja aplikacija, ker lahko posodabljanje takšne programske opreme poškoduje trenutno delujoče spletne aplikacije na strežniku in povzroči velike težave. Priporočljivo je, da ustavite posodobitve za takšno programsko opremo, dokler se aplikacija ne popravi z novimi posodobitvami.

V tem članku vam bomo pokazali, kako lahko izključimo (onemogočimo) določene posodobitve paketov z upravljalnikom paketov YUM in DNF v distribucijah, ki temeljijo na RPM, kot so RHEL, CentOS, Fedora, Rocky Linux in AlmaLinux. Prav tako lahko izključimo ali onemogočimo določene posodobitve paketov iz repozitorijev tretjih oseb.

Sintaksa izključitve bi bila naslednja.

exclude=package package1 packages*

Zgornja izključitvena direktiva je definirana v konfiguracijski datoteki /etc/yum.conf ali /etc/dnf/dnf.conf s seznamom paketov, ki jih je treba izključiti iz posodobitev ali namestitev.

Zgornja sintaksa bo izključila »paket«, »paket1« in seznam posodobitev ali namestitev »paketa«. Vsaka ključna beseda mora biti ločena s presledkom za izključitev paketov.

Kako izključiti pakete v YUM ali DNF

Če želite izključiti (onemogočiti) posebne posodobitve paketov, odprite datoteko z imenom /etc/yum.conf ali /etc/dnf/dnf.conf z izbranim urejevalnikom.

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

Dodajte naslednjo vrstico na dno datoteke s ključno besedo izključi, kot je prikazano spodaj.

[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

V zgornjem primeru bo vrstica exclude onemogočila posodobitve za pakete »httpd«, »php« in »mysql«. Poskusimo namestiti ali posodobiti enega od njih z ukazom YUM, kot je prikazano spodaj.

# yum update httpd
OR
# dnf update httpd
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

Kako izključiti pakete iz EPEL Repo

Če želite izključiti namestitve ali posodobitve paketov iz skladišča EPEL, odprite datoteko z imenom /etc/yum.repos.d/epel.repo.

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

Dodajte vrstico za izključitev tako, da navedete pakete, ki jih želite izključiti iz posodobitev.

[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

Zdaj poskusite posodobiti zgoraj navedene datoteke iz skladišča EPEL z ukazom yum/dnf, kot je prikazano.

# dnf update perl php python
OR
# yum update perl php python
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.

Uporabite lahko tudi možnost ukazne vrstice yum/dnf, da izključite pakete, ne da bi jih dodali v datoteke repozitorija.

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

Če želite izključiti seznam paketov, uporabite naslednji ukaz.

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

Na ta način lahko izključite posodobitve za vse pakete, ki jih želite. Obstaja veliko drugih načinov, na katere lahko to storite, na primer, pred kratkim smo sestavili članek o 4 uporabnih načinih za blokiranje/onemogočanje ali zaklepanje določenih paketov z ukazom yum v Linuxu.