4 načini onemogočanja/zaklepanja nekaterih posodobitev paketov z uporabo ukaza Yum


Package Manager je programska oprema, ki omogoča uporabniku v primeru namestitve nove programske opreme, nadgradnje sistema ali posodobitve katere koli posebne programske opreme in takšnih stvari. V primeru sistemov, ki temeljijo na Linuxu, pri katerih ima ena programska oprema veliko odvisnosti, ki morajo biti prisotne v sistemu za popolno namestitev te programske opreme, postane tak programska oprema, kot je upravitelj paketov, zelo potrebno orodje za vsak sistem.

Vsaka distribucija Linuxa ima privzeti upravitelj paketov za zgoraj navedene funkcionalnosti, med vsemi temi pa je največ najdenih: yum v sistemih RHEL in Fedora (kjer ga trenutno nadomešča z DNF od Fedore 22+ naprej) in apt od Debiana.

Če iščete orodje APT za blokiranje ali onemogočanje določenih posodobitev paketov, preberite ta članek.

Dnf ali Danified yum nadomešča yum v sistemih Fedora, ki je še en na našem seznamu. Če jih pravilno raziskujete, lahko te upravitelje paketov uporabite za naslednje funkcije:

  1. Namestitev nove programske opreme iz skladišča.
  2. Odpravite odvisnosti programske opreme tako, da jih namestite pred namestitvijo.
  3. Vzdrževanje baze podatkov o odvisnostih posamezne programske opreme.
  4. Zmanjšajte različico obstoječe programske opreme.
  5. Nadgradnja različice jedra.
  6. Seznam paketov, ki so na voljo za namestitev.

Podrobne članke o posameznih upraviteljih paketov smo že pokrili s praktičnimi primeri, preberite jih, da jih boste lahko nadzorovali in upravljali v svojih distribucijah Linuxa.

Preberite tudi:

  1. Obvladovanje ukaza Yum s temi 20 praktičnimi primeri
  2. 27 ukazov DNF za upravljanje paketov v različicah Fedora 22+
  3. Naučite se 25 ukazov APT za upravljanje paketov Ubuntu

V članku bomo videli, kako zakleniti/onemogočiti nekatere posodobitve paketov z uporabo upravitelja paketov Yum v sistemih RHEL/CentOS in Fedora (velja do Fedore 21, novejša različica Fedore je privzeta z dnf kot privzeti upravitelj paketov).

Onemogoči/zakleni posodobitve paketov z uporabo Yum

Updater za spremenjene rumene pse (yum) je orodje za upravljanje paketov v distribucijah na osnovi RedHat, kot sta CentOS in Fedora. Spodaj so obravnavane različne strategije, ki se uporabljajo za zaklepanje/onemogočanje posodobitev paketov z uporabo Yum:

1. Odprite in uredite datoteko yum.conf , ki se nahaja v /etc/yum.conf ali v /etc/yum/yum.conf.

Videti je spodaj:

[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
...

Če želite izključiti določen paket iz namestitve ali nadgradnje, morate dodati spremenljivko exclude skupaj z imenom paketa, ki ga želite izključiti. Na primer, če želim iz posodobitve izključiti vse pakete python-3 , potem bom dodal naslednjo vrstico yum.conf :

exclude=python-3*

Če želite izključiti več paketov, samo ločite njihova imena s presledkom.

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]
...

Opomba: če želite vključiti te pakete, pri čemer ignorirate vnose v yum.conf , uporabite\"- disableexcludes" in nastavite na all | main | repoid, pri čemer so 'main' tisti, ki so vneseni v yum.conf in ' repoid 'so tisti, katerih izključitev je določena v imeniku repos.d, kot je razloženo kasneje.

Zdaj poskusimo namestiti ali posodobiti določene pakete in poglejte, da jih bo ukaz yum onemogočil pri namestitvi ali posodabljanju.

# 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. Zgoraj je bila trajna rešitev za izključitev paketa, saj se paket ne bo posodabljal, če datoteke ne uredite. Tu je tudi začasna rešitev za to. Ravno v času, ko se odločite za katero koli posodobitev, uporabite ukaz -x v ukazu yum, da izključite paket, ki ga ne želite posodobiti, na primer:

# yum -x python-3 update

Zgornji ukaz bo posodobil vse pakete, katerih posodobitve so na voljo, razen python-3 v vašem sistemu.

Tukaj za izključitev več paketov večkrat uporabite -x ali ločite imena paketov z , v enem stikalu.

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

3. Uporaba stikala --exclude deluje enako kot -x, samo -x je treba nadomestiti z –exclude in mu dodati seznam imen paketov, ločenih , .

# yum --exclude httpd,php

4. Za vsak paket, nameščen iz katerega koli zunanjega vira z dodajanjem repozitorija, obstaja še en način, da ustavite njegovo nadgradnjo v prihodnosti. To lahko storite z urejanjem datoteke .repo , ki je ustvarjena v imeniku /etc/yum/repos.d/ ali /etc/yum.repos.d.

V repo dodajte možnost izključitve z imenom paketa. Tako kot: če želite izključiti kakršen koli paket recimo vino iz epel repo, dodajte naslednjo vrstico v datoteko epel.repo :

[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

Zdaj poskusite posodobiti vinski paket, dobili boste napako, kot je prikazano spodaj:

# 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. Drug način, s katerim yum prikrije različico katerega koli paketa, zaradi česar ni na voljo za nadgradnjo, je uporaba možnosti versionlock yum, vendar za to morate imeti yum-plugin-versionlock paket nameščen v sistemu.

# yum -y install yum-versionlock

Če želite na primer zakleniti različico paketa recimo samo httpd na 2.4.6, preprosto zapišite naslednji ukaz kot root.

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

Če si želite ogledati zaklenjene pakete, uporabite naslednji ukaz, v katerem bodo navedeni paketi, ki imajo zaklenjeno različico.

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

Zaključek

Tu je nekaj nasvetov, ki vam bodo pomagali onemogočiti/zakleniti posodobitve paketov z upraviteljem paketov yum. Če imate še kakšen trik, da bi naredili iste stvari, jih lahko komentirate pri nas.