4 måder at deaktivere/låse visse pakkeopdateringer ved hjælp af Yum Command


Package Manager er software, der tillader en bruger i tilfælde af installation af ny software, opgradering af systemet eller opdatering af specifik software og sådanne slags ting. I tilfælde af Linux-baserede systemer, hvor en software har mange afhængigheder, der kræves for at være til stede på systemet for en komplet installation af denne software, bliver sådan software som pakkehåndtering et meget nødvendigt værktøj på hvert system.

Hver Linux-distribution leveres med sin standardpakkehåndtering for ovennævnte funktionaliteter, men af alle disse mest fundne er: yum på RHEL- og Fedora-systemer (hvor den i øjeblikket erstattes med DNF fra Fedora 22+ og fremefter) og apt fra Debian.

Hvis du leder efter APT-værktøj til at blokere eller deaktivere bestemte specifikke pakkeopdateringer, skal du læse denne artikel.

Dnf eller Danified yum erstatter yum på Fedora-systemer, som er en anden på vores liste. Hvis disse pakkeadministratorer udforskes korrekt, kan de bruges til følgende funktioner:

  1. Installation af ny software fra lageret.
  2. Løs afhængigheder af softwaren ved at installere disse afhængigheder, før softwaren installeres.
  3. Vedligeholdelse af database med afhængighed af hver software.
  4. Nedgrader version af eksisterende software.
  5. Opgradering af kerneversionen.
  6. Listepakker tilgængelige til installation.

Vi har allerede dækket detaljerede artikler separat om hver enkelt pakkehåndtering med praktiske eksempler. Du skal læse dem for at styre og administrere pakkehåndtering i dine respektive Linux-distributioner.

Læs også:

  1. Beherskelse af Yum Command med disse 20 praktiske eksempler
  2. 27 DNF-kommandoer til at administrere pakker i Fedora 22+ versioner
  3. Lær 25 APT-kommandoer til at styre Ubuntu-pakker

I artiklen vil vi se, hvordan du låser/deaktiverer visse pakkeopdateringer ved hjælp af Yum-pakkehåndtering i RHEL/CentOS- og Fedora-systemer (gældende indtil Fedora 21, senere nyere Fedora-version sendes med dnf som standardpakkehåndtering).

Deaktiver/lås pakkeopdateringer ved hjælp af Yum

Yellow dog Updater, Modified (yum) er pakkehåndteringsværktøj i RedHat-baserede distributioner som CentOS og Fedora. Forskellige strategier, der bruges til at låse/deaktivere pakkeopdateringer ved hjælp af Yum, diskuteres nedenfor:

1. Åbn og rediger filen yum.conf , som findes i /etc/yum.conf eller i /etc/yum/yum.conf.

Det ser ud som 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=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
...

For at ekskludere en bestemt pakke fra installation eller opgradering skal du blot tilføje ekskluderingsvariabel sammen med navnet på den pakke, du vil ekskludere. Hvis jeg f.eks. Vil ekskludere alle python-3 -pakkerne fra at blive opdateret, tilføjer jeg bare følgende linje til yum.conf :

exclude=python-3*

For at mere end en pakke skal ekskluderes, skal du bare adskille deres navne efter mellemrum.

exclude=httpd php 
[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=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
exclude=python-3*        [Exclude Single Package]
exclude=httpd php        [Exclude Multiple Packages]
...

Bemærk: For at inkludere disse pakker skal du ignorere poster i yum.conf ved at bruge “-disableexcludes” og indstille den til alle | main | repoid, hvor 'main' er dem, der er indtastet i yum.conf og 'repoid 'er dem, hvis udelukkelse er angivet i repos.d-kataloget, som forklaret senere.

Lad os nu prøve at installere eller opdatere de angivne pakker og se, at yum-kommandoen vil deaktivere dem installation eller opdatering.

# yum install httpd php

Loaded plugins: fastestmirror, langpacks, versionlock
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
Nothing to do
# yum update httpd php

Loaded plugins: fastestmirror, langpacks, versionlock
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
No packages marked for update

2. Ovenfor var en permanent løsning til at ekskludere en pakke, medmindre filen redigeres, opdateres den pakke ikke. Her er en midlertidig løsning på dette også. Lige på det tidspunkt, hvor du går efter en opdatering, skal du bruge -x switch i yum-kommandoen for at udelukke pakke, som du ikke vil opdatere, som:

# yum -x python-3 update

Ovenstående kommando opdaterer alle pakker, hvis opdateringer er tilgængelige, undtagen python-3 på dit system.

For at ekskludere flere pakker skal du her bruge -x flere gange eller adskille pakkenavne med , i en enkelt switch.

# yum -x httpd -x php update
OR
# yum -x httpd,php update

3. Brug af --exclude switch fungerer på samme måde som -x, du skal bare erstatte -x med –exclude og videregive , adskilt liste over pakkenavne til den.

# yum --exclude httpd,php

4. For enhver pakke, der er installeret fra en ekstern kilde via tilføjelse af et lager, er der en anden måde at stoppe dens opgradering i fremtiden. Dette kan gøres ved at redigere filen .repo , der oprettes i /etc/yum/repos.d/ eller /etc/yum.repos.d biblioteket.

Tilføj ekskluderingsmuligheden med pakkenavnet i repoen. Ligesom: For at udelukke enhver pakke, sig vin fra epel repo, skal du tilføje følgende linje i epel.repo -filen:

[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
exclude=wine

Prøv nu at opdatere vinpakken, du får en fejl som vist nedenfor:

# yum update wine

Loaded plugins: fastestmirror, langpacks, versionlock
epel/x86_64/metalink                                    | 5.6 kB     00:00     
Loading mirror speeds from cached hostfile
 * base: mirror.nbrc.ac.in
 * epel: mirror.wanxp.id
 * extras: mirror.nbrc.ac.in
 * updates: mirror.nbrc.ac.in
No Match for argument: wine
No package wine available.
No packages marked for update

5. En anden måde i yum at maskere versionen af enhver pakke og dermed gøre den utilgængelig til opgradering er at bruge versionlock optionen på yum, men for at gøre dette skal du yum-plugin-versionlock pakke installeret på systemet.

# yum -y install yum-versionlock

For eksempel, for kun at låse versionen af pakken siger httpd til 2.4.6, skal du blot skrive følgende kommando som root.

# yum versionlock add httpd
Loaded plugins: fastestmirror, langpacks, versionlock
Adding versionlock on: 0:httpd-2.4.6-40.el7.centos
versionlock added: 1

For at se låste pakker skal du bruge følgende kommando til at liste de pakker, der er låst i versionen.

# yum versionlock list httpd
Loaded plugins: fastestmirror, langpacks, versionlock
0:httpd-2.4.6-40.el7.centos.*
versionlock list done

Konklusion

Dette er et par tip, der hjælper dig med at deaktivere/låse pakkeopdateringer ved hjælp af yum-pakkehåndtering. Hvis du har andre tricks til at gøre de samme ting, kan du kommentere dem med os.