RPM: wie man die Changelogs einsieht

Wenn man wissen möchte, was sich bei einem Update einer Software geändert hat, kann man auf die Herstellerseite gehen oder sich die von Fedora/RedHat zur Verfügung gestellten Changelogs eines Paketes ansehen.

In der Konsole geht das mit einem Befehl: „rpm -q –changelog pdfmod“ in diesem Fall für das Programm „pdfmod“

Schwieriger wird es, wenn der Kernel im Spiel ist. Davon gibt es auf jedem Linuxsystem i.d.R. mehrere Versionen, falls einer der Kernel mal nicht booten möchte. Gibt man als Paket also nur „kernel“ an, muß das nicht der Kernel sein, für den man das eigentlich wissen wollte. Daher muß man den kompletten Identifikationsstring angeben:

rpm -q --changelog kernel-4.8.4-200.fc24.x86_64

Mehr zum Thema RPM, gibts hier:

RPM Abhängigkeiten rausfindenDNF deinstalliert und nu ?

Cinnamondesktop entfernen, entfernt die falschen Pakete

Vor ein paar Tagen habe ich ja den Cinnamondesktop auf Fedora+Gnome nachinstalliert, und wollte das nun wieder entfernen. Leider entfernt „dnf erase @Cinnamon-Desktop“ einige wichtige Programme, die mit Gnome installiert wurden. Das führt natürlich zu dem Problem, daß man genau diese Pakete wieder installieren muß und dazu eine Liste braucht.

Wie macht man das ?

Abgleichen natürlich. Zunächst brauchen wir die Liste mit den RPMS, die installiert wurden:

grep -i -E „^Jul 01.*fc23“ /var/log/dnf.log-20160704  | grep install | awk ‚{print $7;}‘ | sort >/root/liste.install

Dazu muß man natürlich wissen, wann man Cinnamon installiert hat, in meinem Fall am „Jul 01“ .

Daran denken: An dem Tag können noch andere Pakete installiert worden sein, also ggf. den Grep um die Uhrzeit erweitern!

Jetzt brauchen wir noch die gleiche Liste für die entfernten Pakete:

grep -i -E „^Jul 06.*fc23“ /var/log/dnf.log  | grep erased | awk ‚{print $7;}‘ | sort >/root/liste.erased

Wie bei den Installdaten, könnten auch hier noch andere Pakete deinstalliert worden sein, also auch hier ggf. die Uhrzeit einbauen!

Wer nachvollziehen will, was die einzelnen Befehle machen, kann Sie auch einzeln aufrufen :

grep -i -E „^Jul 06.*fc23“ /var/log/dnf.log  | grep erased | awk ‚{print $7;}‘ | sort
grep -i -E „^Jul 06.*fc23“ /var/log/dnf.log  | grep erased | awk ‚{print $7;}‘
grep -i -E „^Jul 06.*fc23“ /var/log/dnf.log  | grep erased
grep -i -E „^Jul 06.*fc23“ /var/log/dnf.log

Nun hat man zwei Listen mit Paketen. Alle die Pakete, die nicht in der Install-Liste sind, aber in der Erased-Liste, müssen wieder auf den Rechner drauf.

Jetzt könnte es soooo einfach sein :

grep -vf /root/liste.install /root/liste.erased

Ist es aber nicht, denn die Listen passen nicht zusammen. Wir müssen die Paketnamen erst normieren:

sed -e „s/\.x86_64//“ /root/liste.install > /root/liste.install2

sed -e „s/\.fc23.*//“ -e „s/:.*$//“ -e „s/-[0-9].*//“ /root/liste.erased  > /root/liste.erased2

Jetzt können wir Sie vergleichen :

grep -vf /root/liste.install2 /root/liste.erased2

Das zeigt alle Tools an, die in der Install-Liste fehlen, also zuviel deinstalliert wurden.

Das sollte man jetzt von Hand nochmal aussortieren, aber zur Not ginge auch:

grep -vf /root/liste.install2 /root/liste.erased2 | awk ‚{print „dnf -y install „$1;}‘ | bash

und alles würde automatisch installiert werden.

ACHTUNG: Hinweis für spätere Zeiten :

Als dieser Artikel geschrieben wurde, war Fedora 23 aktuell auf einem 64Bit System installiert. Wer andere Versionen einsetzt, muß die ganzen Anweisungen selber sinnvoll anpassen.

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.