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 direktivaenabled=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.