Deaktiver visse pakkeopdateringer ved hjælp af YUM i RHEL/CentOS/Fedora


YUM (Yellowdog Updater Modified) er et open source standard pakkehåndteringssystem til flere Linux-varianter som RHEL (Red Hat Enterprise Linux), CentOS (Community Enterprise Operating System) og Fedora. YUM-værktøjet bruges til at installere, opgradere, fjerne rpm-baserede pakker fra distributionslagrene i systemer.

Men engang ønsker vi ikke at opdatere bestemte pakker som Apache Server (HTTP), MySQL, PHP og andre større applikationer, for hvis sådanne opdateringer kan skade web-applikationen, der kører på serveren, eller du kan stoppe opdateringer, indtil applikationen bliver patched med nye opdateringer.

I denne artikel viser vi dig, hvordan vi kan ekskludere (deaktivere) visse pakkeopdateringer ved hjælp af YUMtool. Vi kan ekskludere eller deaktivere visse pakkeopdateringer fra eventuelle tredjepartslagre. Ekskluder syntaksen ville være som følger.

exclude=package package1 packages*

Ovenstående syntaks udelukker "pakke", "pakke1" og liste over "pakke" opdateringer eller installationer. Hvert nøgleord skal adskilles med plads til udelukkelse af pakker.

Sådan udelukkes pakker i YUM

For at ekskludere (deaktivere) specifikke pakkeopdateringer skal du åbne filen kaldet /etc/yum.conf med dit valg af editor.

# vi /etc/yum.conf

Tilføj følgende linje i bunden af filen med ekskluder nøgleord 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 ovenstående eksempel vil linjen ekskludere deaktivere opdateringer til "httpd" "php" og "mysql" pakker. Lad os prøve at installere eller opdatere en af dem ved hjælp af YUM-kommandoen som vist nedenfor.

# yum 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

Sådan udelukkes pakker fra EPEL Repo

For at udelukke pakinstallationer eller opdateringer fra EPEL-arkivet skal du åbne filen kaldet /etc/yum.repos.d/epel.repo.

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

Tilføj ekskluderingslinjen ved at angive pakker, der skal ekskluderes fra opdateringerne.

[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 nu at opdatere ovennævnte filer fra EPEL-arkivet ved hjælp af YUM-kommandoen.

# yum --enablerepo=epel update perl php python
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.hns.net.in
 * epel: ftp.kddilabs.jp
 * extras: mirrors.hns.net.in
 * updates: mirrors.hns.net.in
Setting up Update Process
No Packages marked for Update

Du kan også bruge yum kommandolinjemulighed til at ekskludere pakke uden at føje til arkivfilerne.

# yum --exclude=httpd update

Brug kommandoen som følger for at ekskludere listen over pakker.

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

På denne måde kan du ekskludere opdateringer til de pakker, du ønsker. Der er mange andre måder, du kan gøre, for eksempel har vi for nylig samlet en artikel om 4 nyttige måder at blokere/deaktivere eller låse bestemte pakker ved hjælp af yum-kommandoen i Linux, du skal læse dette her: