Pluginy pro YUM v CentOSu

YUM (Yellowdog Updater Modified) je program, který se v CentOSu využívá ke správě RPM balíčků, tedy k jejich instalaci, updatování, mazání, či k výpisu informací o balíčcích. Tyto základní vlastnosti lze ještě dále rozšiřovat díky tomu, že má YUM vestavěnou podporu pluginů.

Plugin pro YUM není nic jiného než skript napsaný v Pythonu (tedy soubor s koncovkou .py), který se umístí do adresáře daného direktivou pluginpath v konfiguračním souboru /etc/yum.conf.

Aby plugin fungoval, tak musí být splněny následující požadavky:

  • Plugin je nakopírován do adresáře daného direktivou pluginpath.
  • Globální direktiva plugins je zapnuta, tedy nastavena na hodnotu 1 (plugins=1).
  • Konfigurační soubor pluginu musí ležet v adresáři /etc/yum/pluginconf.d/jmeno_pluginu.conf a aby byl povolen, tak v něm musí být direktiva enabled=1.

fastestmirror

Tento plugin je určen pro repozitáře, které jsou umístěny na více mirrorech. Provede připojení ke všem mirrorům, které jsou v seznamu (mirror listu), zaznamená si časy odezvy jednotlivých mirrorů a následně podle nich setřídí mirrory od nejrychlejšího po nejpomalejší. Plugin fastestmirror je v samostatném balíčku a jeho instalaci můžeme provést následujícím příkazem:

yum install yum-plugin-fastestmirror

Konfigurační soubor pluginu se nachází v souboru /etc/yum/pluginconf.d/fastestmirror.conf. Seznam mirrorů a čas odezvy jednotlivých mirrorů je defaultně zaznamenáván do souboru /var/cache/yum/timedhosts.txt.

protectbase

Již z názvu pluginu je patrné, že se stará o ochranu repozitářů. Plugin se vyplatí v případě, že používáme některé neoficiální (3rd party) repozitáře. Pomocí tohoto pluginu můžeme zabránit nechtěnému přepsání (updatování) balíčků, které jsou v některých neoficiálních repozitářích v novějších verzích než distribuční balíčky. Balíčky repozitářů, které mají nastaven parametr protect=1 nemohou být vyupdatovány (přepsány) balíčky z repozitářů, které mají nastaven parametr protect=0. Parametr protect musíme nastavit na všech repozitářích - repozitáře, které tento parametr nemají nastaven mají defaultně protect=1. Plugin je v samostatném balíčku a nainstalujeme jej následujícím příkazem:

yum install yum-plugin-protectbase

Část souboru /etc/yum.repos.d/CentOS-Base.repo jako příklad:

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
protect=1

#released updates 
[update]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
protect=1 

#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
#baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
protect=0 

...

yum-plugin-priorities

Jedná se o plugin s podobnou funkčností jako výše uvedený plugin protectbase. Tentokrát můžeme u všech repozitářů nastavit parametr priority=N, kde N může nabývat hodnot od 1 (nejvyšší priorita) do 99 (nejnižší priorita). Balíčky z repozitáře s nižší prioritou nikdy nevyupdatují balíčky repozitáře s vyšší prioritou. Priorita má smysl i u nově instalovaných balíčků, takže pokud je při instalaci k dispozici stejný balíček ve více repozitářích, tak se nainstaluje ten z repozitáře s vyšší prioritou. Plugin se stejně jako protectbase vyplatí při používání neoficiálních (3rd party) repozitářů. Jeho instalaci provedeme následovně:

yum install yum-plugin-priorities

Část souboru /etc/yum.repos.d/CentOS-Base.repo jako příklad:

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
priority=1

#released updates 
[update]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
priority=1

#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
#baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4

...

installonlyn

Tento plugin ponechává pouze N nainstalovaných starších verzí (RPM balíčků) jádra. Obvykle je zbytečné uchovávat více verzí jádra než dvě (což je také defaultně nastavená hodnota parametru tokeep). Plugin je součástí balíčku yum-utils a jeho instalaci provedeme takto:

yum install yum-utils
cp /usr/share/doc/yum-utils-0.5/plugins/installonlyn/installonlyn.conf /etc/yum/pluginconf.d/
cp /usr/share/doc/yum-utils-0.5/plugins/installonlyn/installonlyn.py /usr/lib/yum-plugins/

changelog

Tento plugin slouží k vypsání Changelogu před nebo po updatu daného balíčku. Plugin je součástí balíčku yum-utils a jeho instalaci provedeme takto:

cp /usr/share/doc/yum-utils-0.5/plugins/changelog/changelog.conf /etc/yum/pluginconf.d/
cp /usr/share/doc/yum-utils-0.5/plugins/changelog/changelog.py /usr/lib/yum-plugins/

versionlock

Díky tomuto pluginu můžeme do souboru /etc/yum/pluginconf.d/versionlock.list zapsat všechny balíčky, které nechceme updatovat. Seznam balíčků je ve formátu stejném jako je výstup příkazu: rpm -qa. Plugin je součástí balíčku yum-utils a jeho instalaci provedeme takto:

cp /usr/share/doc/yum-utils-0.5/plugins/versionlock/versionlock.conf /etc/yum/pluginconf.d/
cp /usr/share/doc/yum-utils-0.5/plugins/versionlock/versionlock.py /usr/lib/yum-plugins/

/etc/yum/pluginconf.d/versionlock.list:

httpd-2.0.52-28.ent.centos4
vsftpd-2.0.1-5.EL4.5

Další pluginy

Toto byl výčet těch nejzajímavějších pluginů, některé další pluginy lze nalézt v adresáři /usr/share/doc/yum-utils-0.5/plugins/. V nových verzích balíčku yum-utils (download) lze také nalézt některé další pluginy, případně se můžete podívat přímo na stránky http://wiki.linux.duke.edu, kde je i podrobný návod na to, jak psát v Pythonu vlastní pluginy.

Naposledy změněno: 9.12.2006 16:25