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: