Fedora Trickkiste: yum-pinning

Ab und zu kommt es vor, dass man ein Paket in einer bestimmten Version halten möchte. In meinem aktuellen Fall ist es Gwibber, dass in der aktuellen nicht korrekt funktioniert. Mir ist es unmöglich Tweets zu schreiben oder die Timeline manuell zu aktualisieren. Der Bug ist gemeldet und die nächste Version, die das Problem behebt, ist bereits in Rawhide/Branched. Als vorübergehende Lösung entschied ich mich, ein Downgrade durchzuführen und die Version festzupinnen.
Unter debian und Ableger gibt es das sogenannte apt-pinning. Aber unter Fedora? Ja, auch hier gibt es das!
Damit man ein Paket, hier Gwibber, auf eine bestimmte Version festpinnen kann, braucht man das Plugin Versionlock. Da es sich in den Paketquellen befindet, reicht ein:

~# yum install yum-plugin-versionlock

Jetzt muss nur noch in der /etc/yum/plugins.d/versionlock.list das Paket (inkl. Version) eingetragen werden. Also in diesem Fall:
gwibber-3.1.0-2.fc16
Fertig! Ab jetzt zeigt euch yum keine Updates für die eingetragenen Pakete. Bei mir sieht das so aus:

~$ yum check-update
Geladene Plugins: auto-update-debuginfo, changelog, fastestmirror, langpacks, presto, versionlock
Loading mirror speeds from cached hostfile
* fedora: mirror.de.leaseweb.net
* rpmfusion-free: mirror.de.leaseweb.net
* rpmfusion-free-updates: mirror.de.leaseweb.net
* rpmfusion-nonfree: mirror.de.leaseweb.net
* rpmfusion-nonfree-updates: mirror.de.leaseweb.net
* updates: fedora.tu-chemnitz.de
~$

Nun stehe ich natürlich vor dem Problem, dass ich nicht sehe, wann die nächste Version von Gwibber als Update bereit steht. Ich könnte natürlich immer auf Koji nachgucken, ob es soweit ist. Aber das ist nicht sehr praktisch. Und genau dafür hat yum den Schalter ‚disableplugin‘ mit dem man ein oder mehrere Plugins für einen Aufruf deaktivieren kann. In der Praxis sieht das dann so aus:

~$ yum check-update --disableplugin=versionlock
Geladene Plugins: auto-update-debuginfo, changelog, fastestmirror, langpacks, presto
Loading mirror speeds from cached hostfile
* fedora: mirror.de.leaseweb.net
* rpmfusion-free: mirror.de.leaseweb.net
* rpmfusion-free-updates: mirror.de.leaseweb.net
* rpmfusion-nonfree: mirror.de.leaseweb.net
* rpmfusion-nonfree-updates: mirror.de.leaseweb.net
* updates: fedora.tu-chemnitz.de

gwibber.noarch 1:3.1.0-4.fc16 updates
~$

Und völlig korrekt zeigt mir yum das nicht funktionierende Update für Gwibber an. Nächster Schritt wäre jetzt ein passender Cronjob, damit das nicht mehr selber machen muss. Aber das hat ja nur noch peripher etwas mit dem Versionlock zu tun…

Quelle: Fedora Documentation – Software Managment (engl.)

Fedora Trickkiste: yum beschleunigen

Nachdem ich heute wieder einmal gelesen habe, dass yum so fürchterlich langsam sein soll, dachte ich mir: “Schreibste mal ein, zwei Kniffe auf“. Dann brauch ich mich nicht immer wiederholen. Inwieweit die euch was bringen, hängt von eurem System und eurer Internetanbindung ab. Your mileage may vary!

PackageKit-yum-plugin

Dieses yum-PlugIn gehört (bei Fedora 16) anscheinend immer noch zur Standardinstallation. Es sorgt dafür, dass nach jedem Aufruf von yum im Hintergrund PackageKit checkt, ob Updates verfügbar sind. Bei einer langsamen Anbindung nervt das extremst. Also entweder in der

/etc/yum/pluginconf.d/refresh-packagekit.conf

den Schalter

enabled=0

setzen oder gleich deinstallieren. Man braucht es nicht wirklich.

yum-plugin-fastestmirror

Mit dem PlugIn werden schnellsten Spiegelserver für die aktiven Repositories ausgewählt, sofern es Spiegelserver gibt und deren Nutzung aktiviert ist. Die ermittelten Server werden in der Datei ‚/var/cache/yum/$arch/$releasever/timedhosts.txt‘ also in meinem Fall:

/var/cache/yum/x86_64/16/timedhosts.txt

gespeichert. Ein klein wenig kann man das PlugIn auch konfigurieren. Ich gehe hier nur auf die wichtigsten ein:

maxhostfileage=10 #Anzahl der Tage, die diese Liste gespeichert wird
include_only=.nl,.de,.uk,.ie #Die sog. Top-Level-Domains, die genommen werden sollen. Mir hat's nicht wirklich geholfen, aber vielleicht ja euch.

Die paar Optionen, die fehlen, dürft ihr in der Dokumentation nachlesen.

yum-presto

Presto sorgt dafür, dass immer nur ein sog. Inkrementelles Update durchgeführt wird. Ihr zieht also wirklich nur die Veränderungen und nicht das komplette Paket. Ist standardmäßig installiert und aktiviert.

yum.conf

Man kann mit dem Schalter -C die Nutzung des Caches erzwingen und so eine lästige Abfrage bei einem Server vermeiden. Man sieht also bei einem

yum -C search $foo

nur im lokalem Cache nach und nicht online. Erhöht enorm die Reaktionsgeschwindigkeit von yum, kann aber veraltete Informationen hervorbringen. Das Ganze ist natürlich erst richtig sinnvoll, wenn man die Option ‚keepcache‘ eingeschaltet hat. Dazu ändert man in der Datei

/etc/yum.conf

die Zeile

keepcache=0

in

keepcache=1

Hilfreiche Quelle

Wer sich mit yum weiter auseinander setzen will, dem lege ich die wirklich gute Dokumentation ans Herz.

So! Das war es eigentlich schon. Ich hoffe, dass das dem einem oder anderem weiter hilft. (Natürlich auch der einen oder anderen. ;) ) Frage, Anmerkungen und Kritik kommen in die Kommentare!