Slik deaktiverer du pakkeoppdateringer ved å bruke YUM/DNF i RHEL Linux


DNF (Dandified Yum) er neste generasjons versjon av YUM (Yellowdog Updater, Modified), er en åpen kildekode-standardpakkebehandling for Red Hat-baserte Linux-distribusjoner, som brukes til å hente, installere, oppgradere, fjerne, og spørre etter pakker fra de offisielle programvaredepotene og tredjepartsrepositoriene.

Mens vi oppdaterer systemet, oppdaterer vi noen ganger ikke visse pakker som Apache Server (HTTP), MySQL, PHP, eller andre store applikasjoner, fordi oppdatering av slik programvare kan ødelegge nettapplikasjoner som kjører på en server og forårsake store problemer. Det anbefales å stoppe oppdateringer for slik programvare til applikasjonen blir oppdatering med nye oppdateringer.

I denne artikkelen vil vi vise deg hvordan vi kan ekskludere (deaktivere) visse pakkeoppdateringer ved å bruke YUM- og DNF-pakkebehandlingen på RPM-baserte distribusjoner som RHEL , CentOS, Fedora, Rocky Linux, og AlmaLinux. Vi kan også ekskludere eller deaktivere visse pakkeoppdateringer fra tredjeparts depoter.

Ekskluderingssyntaksen vil være som følger.

exclude=package package1 packages*

ekskluder-direktivet ovenfor er definert i /etc/yum.conf eller /etc/dnf/dnf.conf konfigurasjonsfilen med listen over pakker å ekskludere fra oppdateringer eller installasjoner.

Syntaksen ovenfor vil ekskludere "pakke", "pakke1", og listen over "pakke"-oppdateringer eller installasjoner. Hvert nøkkelord bør skilles med plass for ekskludering av pakker.

Hvordan ekskludere pakker i YUM eller DNF

For å ekskludere (deaktivere) spesifikke pakkeoppdateringer, åpne filen /etc/yum.conf eller /etc/dnf/dnf.conf med ditt valg av editor.

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

Legg til følgende linje nederst i filen med ekskluder søkeord som vist nedenfor.

[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

I eksemplet ovenfor vil linjen ekskludere deaktivere oppdateringer for «httpd» «php» og «mysql» pakker. La oss prøve å installere eller oppdatere en av dem ved å bruke YUM-kommandoen som vist nedenfor.

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

Hvordan ekskludere pakker fra EPEL Repo

For å ekskludere pakkeinstallasjoner eller -oppdateringer fra EPEL-depotet, åpne deretter filen som heter /etc/yum.repos.d/epel.repo.

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

Legg til ekskluderingslinjen ved å spesifisere pakker som skal ekskluderes fra oppdateringene.

[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

Prøv nå å oppdatere de ovenfor angitte filene fra EPEL-depotet ved å bruke yum/dnf-kommandoen som vist.

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

Du kan også bruke kommandolinjealternativet yum/dnf for å ekskludere pakker uten å legge dem til i depotfilene.

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

For å ekskludere en liste over pakker, bruk kommandoen som følger.

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

På denne måten kan du ekskludere oppdateringer for alle pakker du ønsker. Det er mange andre måter du kan gjøre det på, for eksempel har vi nylig kompilert en artikkel om 4 nyttige måter å blokkere/deaktivere eller låse bestemte pakker ved å bruke yum-kommandoen i Linux.