4 maneres de desactivar/bloquejar determinades actualitzacions de paquets mitjançant l'ordre Yum


El Gestor de paquets és un programari que permet a un usuari en cas d'instal·lació de programari nou, actualització del sistema o actualització de qualsevol programari específic i aquest tipus de coses. En el cas de sistemes basats en Linux en què un programari té moltes dependències que cal que estiguin presents al sistema per a una instal·lació completa d'aquest programari, aquest programari com el gestor de paquets es converteix en una eina molt necessària en tots els sistemes.

Cada distribució de Linux s'envia amb el seu gestor de paquets predeterminat per a les funcionalitats esmentades anteriorment, però de totes aquestes les més trobades són: yum als sistemes RHEL i Fedora (on actualment s'està substituint per DNF a partir de Fedora 22+) i apt des de Debian.

Si busqueu una eina APT per bloquejar o desactivar determinades actualitzacions de paquets específics, hauríeu de llegir aquest article.

Dnf o Danified yum està substituint yum als sistemes Fedora, que és un altre a la nostra llista. Si s'exploren correctament, aquests gestors de paquets es poden utilitzar per a les funcionalitats següents:

  1. S'està instal·lant programari nou des del dipòsit.
  2. Resol les dependències del programari instal·lant aquestes dependències abans d'instal·lar el programari.
  3. Manteniment de la base de dades de dependències de cada programari.
  4. Baixa la versió de qualsevol programari existent.
  5. Actualització de la versió del nucli.
  6. Llista dels paquets disponibles per a la instal·lació.

Ja hem cobert articles detallats per separat sobre cada gestor de paquets individuals amb exemples pràctics, hauríeu de llegir-los per controlar i gestionar la gestió de paquets a les vostres respectives distribucions de Linux.

Llegeix també:

  1. Domineu l'ordre Yum amb aquests 20 exemples pràctics
  2. 27 ordres DNF per gestionar paquets en versions Fedora 22+
  3. Aprèn 25 ordres APT per gestionar paquets d'Ubuntu

A l'article, veurem com bloquejar/desactivar determinades actualitzacions de paquets mitjançant el gestor de paquets Yum als sistemes RHEL/CentOS i Fedora (aplicable fins a Fedora 21, més tard la versió més nova de Fedora s'envia amb dnf com a gestor de paquets per defecte).

Desactivar/bloquejar les actualitzacions de paquets amb Yum

Yellow dog Updater, Modified (yum) és una eina de gestió de paquets en distribucions basades en RedHat com CentOS i Fedora. A continuació es comenten diverses estratègies utilitzades per bloquejar/desactivar les actualitzacions de paquets amb Yum:

1. Obriu i editeu el fitxer yum.conf, que es troba a /etc/yum.conf o a /etc/yum/yum.conf.

Es veu com a continuació:

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

Aquí, per excloure determinat paquet de la instal·lació o l'actualització, només cal que afegiu la variable d'exclusió juntament amb el nom del paquet que voleu excloure. Per exemple, si vull excloure que tots els paquets python-3 s'actualitzin, només afegiré la línia següent a yum.conf:

exclude=python-3*

Per excloure més d'un paquet només cal que separeu els seus noms per espai.

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

Nota: per incloure aquests paquets, ignorant les entrades a yum.conf, utilitzeu \-disableexcludes i configureu-lo a all|main|repoid, on 'main' són els introduïts a yum.conf i ' repoid' són aquells l'exclusió dels quals s'especifica al directori repos.d, tal com s'explicarà més endavant.

Ara intentem instal·lar o actualitzar els paquets especificats i veure que l'ordre yum els desactivarà la instal·lació o l'actualització.

# 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. A dalt hi havia una solució permanent per excloure un paquet, ja que tret que s'editi el fitxer, aquest paquet no s'actualitzarà. Aquí també hi ha una solució temporal per a això. Just en el moment en què busqueu qualsevol actualització, utilitzeu -x switch a l'ordre yum per excloure el paquet que no voleu actualitzar, com ara:

# yum -x python-3 update

L'ordre anterior actualitzarà tots els paquets les actualitzacions dels quals estiguin disponibles, excepte python-3 al vostre sistema.

Aquí, per excloure diversos paquets, utilitzeu -x diverses vegades, o separeu els noms dels paquets amb , en un sol commutador.

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

3. L'ús de l'interruptor --exclude funciona igual que -x, només cal substituir -x per –exclude i passar-li , llista separada de noms de paquets.

# yum --exclude httpd,php

4. Per a qualsevol paquet instal·lat des de qualsevol font externa mitjançant l'addició d'un dipòsit, hi ha una altra manera d'aturar la seva actualització en el futur. Això es pot fer editant el seu fitxer .repo que es crea al directori /etc/yum/repos.d/ o /etc/yum.repos.d.

Afegiu l'opció d'exclusió amb el nom del paquet al repositori. M'agrada: per excloure qualsevol paquet, digueu wine de l'epel repo, afegiu la línia següent al fitxer 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

Ara proveu d'actualitzar el paquet de vi, obtindreu un error com el que es mostra a continuació:

# 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. Una altra manera en yum d'emmascarar la versió de qualsevol paquet, de manera que no estigui disponible per a l'actualització, és utilitzar l'opció versionlock de yum, però per fer-ho, cal que el paquet yum-plugin-versionlock instal·lat al sistema.

# yum -y install yum-versionlock

Per exemple, per bloquejar la versió del paquet, digueu httpd només a la 2.4.6, només heu d'escriure l'ordre següent com a root.

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

Per veure els paquets bloquejats, utilitzeu l'ordre següent per llistar els paquets que han estat bloquejats en versió.

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

Conclusió

Aquests són alguns consells que us ajudaran a desactivar/bloquejar les actualitzacions de paquets mitjançant el gestor de paquets yum. Si teniu altres trucs per fer les mateixes coses, podeu comentar-los amb nosaltres.