Wie man die Desktopnotifications für Updates los wird

Vor einigen Wochen habe ich GEDIT F21 auf die F20 Version gedowngradet, weil das Programm unerträglich unbrauchbar gemacht wurde. Seitdem Tag nervt mich der Desktop mit Notifications, daß genau dieses Paket komplett veraltet sein und ich doch die Updates einspielen solle.

Natürlich hatte ich YUM erzählt, die Updates nicht einzuspielen. Für die Desktopanwendung „Software“ aka PackageKit gilt die YUM Einstellung aber nicht, die macht das gerne selbstständig. Da PackageKit keine Configeinstellungen dafür parat hat, kann man es nur als Root abschalten :

systemctl stop packagekit
systemctl disable packagekit

Bevor man das macht, sollte man sicherstellen, daß man so einen CronJob z.b. als /etc/cron.d/yum angelegt hat:

 1 */2 * * * root yum -y update >>/var/log/messages

Sonst kommen nämlich gar keine Updates mehr an und das möchten man gar nicht haben.

DNF: das neue YUM, oder?

DNF ist seit Fedora 21 das Tool für Softwareupdates.  DNF soll die Probleme von YUM lösen, indem es andere Algorithmen zur Abhängigkeitsauflösung anwendet, unter anderem.

Zunächst mal muß man keine Angst vor der Umstellung haben, denn DNF ist sogut wie es geht YUM kompatibel, was die Befehle in der Shell angeht, und YUM kann zur Not auch weiter verwenden. Das geht so gut, daß die gleichen alten Probleme auf die gleiche Art gelöst werden müssen.

Ich hatte ja mal gezeigt, wann und wie man Updates abschaltet:

# cat /etc/yum.conf 
[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=3
exclude=qmmp* gedit*
...

DNF gibt sich da etwas schlanker :

# cat /etc/dnf/dnf.conf 
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=true
exclude=gedit*

Es macht aber am Ende genau das gleiche.

Warum habe ich jetzt Gedit von weiteren Updates ausgenommen ?

Für alle die es nicht wissen, Gedit ist der standardmäßig installiere Texteditor für Gnome. In Fedora 20 war er : schlank, schlicht, schnell, nützlich. Mit dem Update auf Fedora 21 fallen mir nur folgende Attribute ein: Mozilladesign, unnütz, bloated (rpms), absoluter Schrott.

Gedit war in Fedora 20 der mit Abstand nützlichste Editor, weil er optisch nicht so überladen war wie z.b. Blue Fish, aber dennoch alles hatte : Tabs, Syntaxhighlighting, Rechtschreibkorrektur und Platz!

Die neue Version ist umgangssprachlich für den Arsch. Die Menüführung ist abenteuerlich und komplett umständlich. Die Icons sind weg, man müßte jetzt Menüfunktionen aufrufen. Das Layout ist überdesigned zur absoluten Nutzlosigkeit verschönt. Ganz sicher mußte der Designer diese Änderungen nicht mit seinem Geditdesign machen, sonst wäre ihm aufgefallen, was für einen Müll er da produziert. Ist ja häufig so, daß Produkte bis zur Unkenntlichkeit umdesigned werden, nur damit man mal was gemacht hat als Hersteller. Ob das Update am Ende nützlich war, interessiert doch am Ende keinen mehr, Hauptsache es ist neu.

Zu allem übel, kann man den Gedit nicht optisch auf nützlich zurückstellen, weswegen es tatsächlich nur zwei Lösungen gab: 1. Auf einen anderen Texteditor umsteigen oder 2. yum erase „gedit*“; rpm -i –nodeps gedit*f20*rpm .

Jetzt gibt es zwei Wege an die RPMS zu kommen:

1. KOJI benutzen. Das hat aber trotzdem noch viel Gesuche zur Folge.

oder 2. Einfach im alten Fedora 20 Repository nachsehen:

# cat /etc/yum.repos.d/fedora.repo 
[fedora]
name=Fedora $releasever - $basearch
failovermethod=priority
#baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch
enabled=1
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False
...

Die BaseURL zeigt wird nun einfach etwas angepaßt und dann im Browser aufgerufen ( bitte: Nicht bei Google eingeben, sondern in die Adressleiste des Browsers! ). Das wäre dann diese hier:

http://download.fedoraproject.org/pub/fedora/linux/releases/20/Everything/x86_64/os/

Der Repobesuch mit dem Browser erlaubt auch eine einfache Navigation durch die Repos, was bei Koji nicht der Fall ist. Damit kann man viele Programme sehr viel schneller finden, als im Koji Buildsystem.

Nachdem die RPMS auf der Platte geparkt wurden, müssen Sie dan mit rpm -i --nodeps installiert werden, weil die Abhängikeiten im RPM natürlich auf Fedora20 lauten und nicht auf Fedora 21 Pakete. Wer sich mit dem Gedanken trägt sein Gedit auch zu downgraden, der sollte folgende Pakete nehmen, die restlichen sind so schwer abhängig, das klappt vermutlich nicht:
2588 -rw-rw-r--. 1 marius marius 2646356  5. Jul 23:26 gedit-3.10.2-1.fc20.x86_64.rpm
  16 -rw-rw-r--. 1 marius marius   13944  6. Jul 00:04 gedit-beesu-plugin-0.4-13.fc20.x86_64.rpm
 124 -rw-rw-r--. 1 marius marius  124560  6. Jul 00:04 gedit-code-assistance-0.2.0-4.fc20.x86_64.rpm
  56 -rw-rw-r--. 1 marius marius   53584  6. Jul 00:04 gedit-cossa-3.2.0-6.fc20.x86_64.rpm
 836 -rw-rw-r--. 1 marius marius  853444  5. Jul 23:26 gedit-plugins-3.10.0-1.fc20.x86_64.rpm
  20 -rw-rw-r--. 1 marius marius   16920  5. Jul 23:26 gedit-zeitgeist-3.10.2-1.fc20.x86_64.rpm

Damit ist Gedit dann wieder einsetzbar. Sieht zwar nicht mehr so schick auch wie früher, aber es tut seinen Job.

YUM: wenn das upgrade cache nicht gelöscht wird

Es ist wieder die Zeit gekommen, wo das Betriebssystem aktualisiert werden muß.

Kurz und knapp dieser Befehl:

yum update yum;yum clean all;yum -y –releasever=22 –disableplugin=presto distro-sync

Um das Upgrade durchzuführen, zieht sich YUM die ganzen RPMS schon mal ins Cache ( /var/cache/yum/… ) Wenn aber jetzt die Abhängigkeiten eines Pakets nicht stimmen, z.b.weil zwei neue Pakete ein und dieselbe Datei im Filesystem als Ihre bezeichnen und man den Fehler in einem Paket fixed, dann nutzt einem das nichts. YUM vergißt im REPO nach neuen Versionen nach zu sehen, weil es das ganze Repo mit Metadaten im Cache ablegt.

Alle „yum clean all“ Anweisungen sind nutzlos, weil dieser Speicher nicht aktualisiert/gelöscht wird.

Lösung:

rm -rf /var/cache/yum/{architektur}/{release}/{reponame}

alternativ kann man auch das ganze Cache löschen, aber dann muß man sich die ganzen RPMs auch wieder ziehen und dann kann ja bekanntlich eine Weile dauern.

 

Mit Yum Paketupdates rückgängig machen

Ab und zu kann es vorkommen, daß neue Pakete von Treiber oder Programmen zu Fehlern führen. Jüngstes Beispiel ist der Nvidia Treiber für Fedora 20. Da die Auswirkungen erst nach dem Neustart des Computers wirksam werden, benötigt man zum Beheben des Problems Rootrechte.

Pakete identifizieren

Zunächst einmal muß man die Pakete finden, die aktualisiert wurden. Dazu schaut man sich die letzten Zeilen des Yum Logfiles an :

# tail /var/log/yum.log
Jan 29 00:42:04 Updated: 1:kmod-nvidia-340xx-3.17.8-200.fc20.x86_64-340.65-4.fc20.x86_64
Jan 29 00:42:04 Updated: 1:kmod-nvidia-340xx-340.65-4.fc20.x86_64
Jan 29 00:45:22 Installed: 1:kmod-nvidia-3.17.8-200.fc20.x86_64-331.113-1.fc20.1.x86_64

Pakete die mit der Sache nichts zu tun haben, könnten natürlich auch installiert worden sein, im obigen Beispiel ist das nicht der Fall.

Pakete downgraden

Die Pakete wieder los zu werden ist ganz einfach, wenn man den korrekten Namen ermittelt hat:

# yum downgrade kmod-nvidia-340xx-3.17.8-200.fc20.x86_64
# yum downgrade kmod-nvidia-340xx-340

Updates verhindern

Damit die Pakete beim nächsten Update nicht wieder mit eingespielt werden, trägt man diese in die Liste der ausgeklammerten Pakete in der YUM Konfiguration ein:

# vi /etc/yum.conf

[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=3
exclude=kmod-nvidia-340xx*

Damit wäre man vorerst vor Updates sicher.  Das nächste Kernelupdate kommt aber todsicher und dann braucht man die neue Version der Pakete für diesen neuen Kernel. Man muß sich also jetzt sofort darum kümmern, daß dieser Fehler bekannt und natürlich behoben wird.

Bugzilla

RPMFusion und Fedora haben jeweils eine eigen Fehlertrackersoftware namens Bugzilla im Einsatz. Da die Nvidiatreiber über RPMFusion bekommen sind, muß man das Paket dort als Fehlerhaft melden.

Details zur Anmeldung kann man auf rpmfusion.org finden.

Es geht aber auch direkter, was in diesem Fall wohl dringend nötig ist. Dazu lädt man sich die defekten RPMS aus dem Repository direkt auf die Platte. Wie das geht habe ich hier beschrieben: Aus Yum ableiten wo ein RPM findet

Dann schaut man sich die Infos zu diesem RPM an : less xorg-x11-drv-nvidia-340xx-*

Neben allerlei Informationen zu dem Paket selbst, kann man hier auch direkt das Changelog sehen:

* Di Jan 27 2015 Leigh Scott <leigh123linux@googlemail.com> – 1:340.65-5
– revert last commit

Nun können Sie das direkt an den Entwickler melden, der das „verbockt“ hat 🙂

wenn das Paket bereits installiert ist …

geht das Aufrufen des Changelogs wesentlich einfacher :

# rpm -q –changelog xorg-x11-drv-nvidia-340xx
* Do Jan 15 2015 Przemysław Palacz <pprzemal@gmail.com> – 1:340.65-4
– Replace main nvidia driver in F20 with this legacy version

* So Jan 11 2015 Przemysław Palacz <pprzemal@gmail.com> – 1:340.65-3
– Switch libnvidia-ml and nvidia-debugdump to the cuda subpackage again

… die Logs gehen bis zur ersten Release des Pakets zurück …

* So Jun 22 2003 Andreas Bierfert (awjb) <andreas.bierfert[at]awbsworld.de> – 0:1.0.4363-0.fdr.1
– Initial RPM release, still some ugly stuff in there but should work…

Kein Wunder, daß die Pakete immer länger brauchen bis sie geladen worden sind.

aus YUM ableiten, wo man ein RPM findet

Ich werde immer gern gefragt, wo ich den die Links zu den RPMs finde, wenn ich brauche, aber nicht finde. Ein Weg ist das YUM Repo direkt fragen. Zunächst einmal suchen wir uns das passende Repository aus:

# ls -la /etc/yum.repos.d/
insgesamt 68
drwxr-xr-x.   2 root root  4096 18. Jun 14:25 .
drwxr-xr-x. 172 root root 12288  4. Aug 08:35 ..
-rw-r--r--.   1 root root   179 25. Jul 2007  adobe-linux-i386.repo
-rw-r--r--.   1 root root   183  1. Apr 2011  adobe-linux-x86_64.repo
-rw-r--r--.   1 root root  1254 19. Feb 14:46 fedora.repo
-rw-r--r--.   1 root root  1213 19. Feb 14:46 fedora-updates.repo
-rw-r--r--.   1 root root  1271 19. Feb 14:46 fedora-updates-testing.repo
-rw-r--r--.   1 root root  1241 15. Dez 2013  rpmfusion-free-rawhide.repo
-rw-r--r--.   1 root root  1172 15. Dez 2013  rpmfusion-free.repo
-rw-r--r--.   1 root root  1170 15. Dez 2013  rpmfusion-free-updates.repo
-rw-r--r--.   1 root root  1230 18. Mär 2013  rpmfusion-free-updates-testing.repo

dann holen wir uns die BaseURL aus dem Repo ( was anderes macht Yum eigentlich auch nicht )

# cat /etc/yum.repos.d/rpmfusion-free.repo | grep baseurl
#baseurl=http://download1.rpmfusion.org/free/fedora/releases/$releasever/Everything/$basearch/os/
#baseurl=http://download1.rpmfusion.org/free/fedora/releases/$releasever/Everything/$basearch/debug/
#baseurl=http://download1.rpmfusion.org/free/fedora/releases/$releasever/Everything/source/SRPMS/

Die BaseURL kann mit einem normalen Browser aufgerufen werden, wenn man die Variablen ersetzt.

$releasever = Fedora Nummer z.b. 20
$basearch = Basearchitecture also i686 für 32 bit oder x86_64 für 64 bit.

Beispiel:

http://download1.rpmfusion.org/free/fedora/releases/20/Everything/x86_64/os/

Jetzt rufen Sie das noch mit dem Browser auf und siehe da, alle RPMs liegen vor Ihnen.

Es kann vorkommen, wenn die Repos besonders groß sind, daß diese in mehrere Teile aufgeteilt sind. Üblicherweise nach dem ersten Zeichen des Dateinamens also A B C usw. .

RPMFIND.net

Wenn Sie ein spezielles RPM suchen, daß nicht in Ihren Repos enthalten ist, kann http://rpmfind.net/ Ihnen helfen. Sie finden dort eine Vielzahl von Paketen, die nicht mit Fedora ausgeliefert werden, aber trotzdem benötigt werden. Oder auch einfach nur ältere Versionen.

Koji – Alte Pakete finden, die Fedora aus dem Repo gelöscht hat.

Rufen Sie mal diese URL auf :  http://koji.fedoraproject.org/koji/packageinfo?packageID=280

Sie werden dort die Liste aller HTTPD Pakete finden, die jemals für Fedora gebaut wurden.

alle jemals gebauten Pakete für ein Programm

alle jemals gebauten Pakete für ein Programm

Suchen Sie sich die Version aus, die Sie gern hätten und klicken Sie auf den Link. Sie bekommen dann die Paketinformationen angezeigt. Diese enthält auch alle Downloadlinks zu den jeweiligen Architekturen.

genaue Paketinformationen und Downloadlinks

genaue Paketinformationen und Downloadlinks