Kako onemogućiti ažuriranje paketa koristeći YUM/DNF u RHEL Linuxu


DNF (Dandified Yum) je verzija sljedeće generacije YUM-a (Yellowdog Updater, modificirani), je open-source default menadžer paketa za Red Hat bazirane Linux distribucije, koji se koristi za preuzimanje, instaliranje, nadogradnju, uklanjanje, i traženje paketa iz zvaničnih softverskih repozitorijuma i repozitorijuma trećih strana.

Prilikom ažuriranja sistema, ponekad, ne ažuriramo određene pakete kao što su Apache server (HTTP), MySQL, PHP, ili bilo koje druge veće aplikacije, jer ažuriranje takvog softvera može pokvariti trenutno pokrenute web aplikacije na serveru i uzrokovati velike probleme. Preporučljivo je zaustaviti ažuriranja za takav softver dok se aplikacija ne zakrpi sa novim ažuriranjima.

U ovom članku ćemo vam pokazati kako možemo isključiti (onemogućiti) određena ažuriranja paketa koristeći YUM i DNF paket menadžer na RPM distribucijama kao što je RHEL , CentOS, Fedora, Rocky Linux, i AlmaLinux. Također možemo isključiti ili onemogućiti određena ažuriranja paketa iz spremišta trećih strana.

Sintaksa isključivanja bi bila sljedeća.

exclude=package package1 packages*

Gornja exclude direktiva je definirana u /etc/yum.conf ili /etc/dnf/dnf.conf konfiguracijskom fajlu sa listom paketa isključiti iz ažuriranja ili instalacija.

Gornja sintaksa će isključiti „paket“, „paket1“ i listu ažuriranja ili instalacija „paketa“. Svaka ključna riječ treba biti odvojena razmakom za isključivanje paketa.

Kako isključiti pakete u YUM ili DNF

Da biste isključili (onemogućili) ažuriranja određenih paketa, otvorite datoteku pod nazivom /etc/yum.conf ili /etc/dnf/dnf.conf sa vašim izborom uređivača.

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

Dodajte sljedeći red na dno datoteke sa ključnom riječi izuzmi kao što je prikazano ispod.

[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

U gornjem primjeru, red exclude će onemogućiti ažuriranja za “httpd” “php” i “mysql” paketi. Pokušajmo instalirati ili ažurirati jedan od njih pomoću naredbe YUM kao što je prikazano ispod.

yum update httpd
OR
dnf update httpd
Sample Output
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 isključiti pakete iz EPEL Repo-a

Da biste isključili instalacije ili ažuriranja paketa iz EPEL spremišta, otvorite datoteku pod nazivom /etc/yum.repos.d/epel.repo.

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

Dodajte red za izuzimanje tako što ćete navesti pakete koji će biti izuzeti iz ažuriranja.

[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

Sada pokušajte ažurirati gore navedene datoteke iz EPEL spremišta koristeći naredbu yum/dnf kao što je prikazano.

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

Također možete koristiti yum/dnf opciju komandne linije da isključite pakete bez njihovog dodavanja u datoteke spremišta.

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

Da biste isključili listu paketa, koristite naredbu kako slijedi.

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

Na ovaj način možete isključiti ažuriranja za sve pakete koje želite. Postoji mnogo drugih načina na koje to možete učiniti, na primjer, nedavno smo sastavili članak o 4 korisna načina da blokirate/onemogućite ili zaključate određene pakete pomoću yum komande u Linuxu.