DNF: gezielt downgraden

Neulich bei Wine : „Es geht mal wieder nicht, aber gestern gings noch.“

In einem anderen Beitrag habe schon einmal auf Downgrades hingewiesen. Wenn man mit DNF/YUM einen Downgrade eines Paketes durchführt, geht das erstmal sehr einfach:

dnf downgrade paketname

Aber leider kann es vorkommen, daß bis auf die Basisversion eines Pakets zurück gegraded wird. Wie kommt das, wo doch lediglich eine kleine Revisionsänderung durchgeführt wurde ?

Ganz einfach: Weil das alte Paket nicht mehr im Update-Repository ist und nur noch die uralte Basisversion im Fedorahauptrepository zu finden ist.

Umgehen kann man das so, aber ein bisschen Arbeit ist es schon:

  1. Einen Webserver einrichten oder idealerweise einen bereits fertigen Webserver auf folgende URL konfigurieren :http://dnf.meinedomain.de/$basearch/$releasever/fedora-old/Was in dem Fall meint, daß das Docroot in dem Pfad rauskommt, wo die BASEARCH, also die Basisarchitektur liegt. siehe Punkt 3 als Beispiel.
  2. folgende Datei anlegen : /etc/yum.repos.d/fedora-downgrade.repo  und das reinschreiben:[fedora-old]
    name=Fedora $releasever – $basearch – OLD
    baseurl=http://dnf.meinedomain.de/$basearch/$releasever/fedora-old/
    enabled=1
    gpgcheck=0
  3. jetzt von Koji ( koji.fedoraproject.org/koji/ )  das Paket heraussuchen und die nötigen Dateien der Versionen die man gern hätte, in das Verzeichnis seines Apaches kopieren, in dem das Repo erstellt wurde. Das könnte so aussehen : /home/meinusername/repository/x86_64/23/fedora-old/
    drwxr-xr-x 3 root root     4096  6. Mär 16:09 .
    drwxr-xr-x 4 root root     4096  6. Mär 16:00 ..
    drwxr-xr-x 2 root root     4096  6. Mär 16:09 repodata
    -rw-r--r-- 1 root root    54078  6. Mär 16:07 wine-1.9.3-1.fc23.i686.rpm
    -rw-r--r-- 1 root root    54390  6. Mär 16:07 wine-1.9.3-1.fc23.x86_64.rpm
    -rw-r--r-- 1 root root   106054  6. Mär 16:07 wine-alsa-1.9.3-1.fc23.i686.rpm
    -rw-r--r-- 1 root root   108178  6. Mär 16:07 wine-alsa-1.9.3-1.fc23.x86_64.rpm
    -rw-r--r-- 1 root root   143442  6. Mär 16:07 wine-arial-fonts-1.9.3-1.fc23.noarch.rpm
    -rw-r--r-- 1 root root    59662  6. Mär 16:07 wine-capi-1.9.3-1.fc23.i686.rpm
    -rw-r--r-- 1 root root    59874  6. Mär 16:07 wine-capi-1.9.3-1.fc23.x86_64.rpm
    -rw-r--r-- 1 root root    74474  6. Mär 16:07 wine-cms-1.9.3-1.fc23.i686.rpm
    -rw-r--r-- 1 root root    75418  6. Mär 16:07 wine-cms-1.9.3-1.fc23.x86_64.rpm
    -rw-r--r-- 1 root root   108838  6. Mär 16:07 wine-common-1.9.3-1.fc23.noarch.rpm
    -rw-r--r-- 1 root root 22652170  6. Mär 16:08 wine-core-1.9.3-1.fc23.i686.rpm
    -rw-r--r-- 1 root root 22292142  6. Mär 16:08 wine-core-1.9.3-1.fc23.x86_64.rpm
    -rw-r--r-- 1 root root   133074  6. Mär 16:08 wine-courier-fonts-1.9.3-1.fc23.noarch.rpm
    -rw-r--r-- 1 root root 38597470  6. Mär 16:08 wine-debuginfo-1.9.3-1.fc23.x86_64.rpm
    -rw-r--r-- 1 root root   159390  6. Mär 16:08 wine-desktop-1.9.3-1.fc23.noarch.rpm
    -rw-r--r-- 1 root root    84534  6. Mär 16:08 wine-filesystem-1.9.3-1.fc23.noarch.rpm
    -rw-r--r-- 1 root root    66710  6. Mär 16:08 wine-fixedsys-fonts-1.9.3-1.fc23.noarch.rpm
    -rw-r--r-- 1 root root    53654  6. Mär 16:08 wine-fonts-1.9.3-1.fc23.noarch.rpm
    -rw-r--r-- 1 root root   115838  6. Mär 16:08 wine-ldap-1.9.3-1.fc23.i686.rpm
    -rw-r--r-- 1 root root   117914  6. Mär 16:08 wine-ldap-1.9.3-1.fc23.x86_64.rpm
    -rw-r--r-- 1 root root    65850  6. Mär 16:08 wine-marlett-fonts-1.9.3-1.fc23.noarch.rpm
    -rw-r--r-- 1 root root  1738630  6. Mär 16:09 wine-ms-sans-serif-fonts-1.9.3-1.fc23.noarch.rpm
    -rw-r--r-- 1 root root    66506  6. Mär 16:09 wine-openal-1.9.3-1.fc23.i686.rpm
    -rw-r--r-- 1 root root    68030  6. Mär 16:09 wine-openal-1.9.3-1.fc23.x86_64.rpm
    -rw-r--r-- 1 root root    65110  6. Mär 16:09 wine-opencl-1.9.3-1.fc23.i686.rpm
    -rw-r--r-- 1 root root    66114  6. Mär 16:09 wine-opencl-1.9.3-1.fc23.x86_64.rpm
    -rw-r--r-- 1 root root    96042  6. Mär 16:09 wine-pulseaudio-1.9.3-1.fc23.i686.rpm
    -rw-r--r-- 1 root root    96866  6. Mär 16:09 wine-pulseaudio-1.9.3-1.fc23.x86_64.rpm
    -rw-r--r-- 1 root root    68910  6. Mär 16:09 wine-small-fonts-1.9.3-1.fc23.noarch.rpm
    -rw-r--r-- 1 root root    79874  6. Mär 16:09 wine-symbol-fonts-1.9.3-1.fc23.noarch.rpm
    -rw-r--r-- 1 root root    54238  6. Mär 16:09 wine-systemd-1.9.3-1.fc23.noarch.rpm
    -rw-r--r-- 1 root root    72858  6. Mär 16:09 wine-system-fonts-1.9.3-1.fc23.noarch.rpm
    -rw-r--r-- 1 root root   160394  6. Mär 16:09 wine-tahoma-fonts-1.9.3-1.fc23.noarch.rpm
    -rw-r--r-- 1 root root    55270  6. Mär 16:09 wine-tahoma-fonts-system-1.9.3-1.fc23.noarch.rpm
    -rw-r--r-- 1 root root   150314  6. Mär 16:09 wine-times-new-roman-fonts-1.9.3-1.fc23.noarch.rpm
    -rw-r--r-- 1 root root    85858  6. Mär 16:09 wine-twain-1.9.3-1.fc23.i686.rpm
    -rw-r--r-- 1 root root    87210  6. Mär 16:09 wine-twain-1.9.3-1.fc23.x86_64.rpm
    -rw-r--r-- 1 root root    66466  6. Mär 16:09 wine-wingdings-fonts-1.9.3-1.fc23.noarch.rpm
    
  4. Nun wechselt man in das Verzeichnis und führt den Befehl „createrepo .“ aus. Damit werden die repodata-Files erzeugt, die DNF und YUM brauchen.
  5. Wenn alles geklappt hat, kann man das Repo jetzt mit DNF finden.

Ist das der Fall und man downgraded wine, ist das die nächst neueste Version zu der, die bereits installiert ist und damit downgraded dnf das erst mal im Beispiel auf 1.9.3, bevor es dann mit einem weiteren Downgrade auf die Basisversion 1.7.x geht. Wenn man jetzt mehr als eine Version von Wine in dem OLD Repo hat, kann man sich recht komfortabel von einer Version zur nächsten bewegen und muß nicht erst alles per dnf erase löschen und dann mit rpm -i *rpm die gewünschte Version installieren. Aber nicht vergessen das Paket in der /etc/dnf/dnf.conf zu deaktivieren, sonst kommt das Update abends gleich wieder drauf.

Natürlich kann man in so einem Repo auch eigene RPM’s speichern. So ein Repo ist auch ein prima Cache, wenn man viele, viele Server hat, die sich dann die neusten Versionen aus dem eigenen Cache ziehen, statt alle von Fedora. Der Traffic bliebe dann z.b. im LAN.

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.