ArchLinux, AUR und Downgrades

~3 min read

Ein kleines Zwischenintermezzo mit ArchLinux und AUR. Doch was ist passiert ?

Das Problem

Ein ganz normaler Tag, und ein paar Updates, auch von Paketen aus dem ArchUserRepository1 später. Es passieren Fehler.

Fehlermeldung

Doch was ist das eigentliche Problem hier ?
Auch in diesem Fall kommt wieder der Community-Gedanke dazu, denn hier werden direkt an dem Paket auch entsprechende Kommentarfunktionen ermöglicht. Somit ist die Chance da, dass bereits andere dieses Problem analysiert2 haben.

Und es stellt sich heraus, ist ein Upstream-Problem3 eines anderen Pakets, welches zwischenzeitlich aktualisiert worden ist.

Die Lösung

Also stellt sich die Frage, was man tun kann. Auch hier bietet der Kommentar entsprechende Möglichkeiten.

Zum einen hat bereits jemand dies gemeldet, und scheinbar gibt es auch bereits eine korrigierte Version des Codes. Nur leider hat noch niemand das Paket4 aktualisiert. Entsprechend ist aber bereits ein Hinweis am Paket, dass die Version "out of date" ist.

Also verbleibt noch Variante 2. Ein Downgrade5 auf eine vorherige Version, zumindest für die Zeit der Paketerstellung.

Paket-Archive

Also müssen wir uns einmal die Möglichkeiten klar machen.

Zum einen besteht die Möglichkeit, wie auch bei meinem System, dass im lokalen Dateisystem eine ältere Version noch existiert. Allgemein ist die Möglichkeit eines lokalen Paket-Caches ja durchaus verbreitet. Im Falle von ArchLinux ist hier der Pfad /var/cache/pacman/pkg/ der entsprechende Suchpfad. Hier befindet sich dann die notwendige Paketdatei.

Installation wäre somit möglich über bspw. pikaur -U /var/cache/pacman/pkg/deno-2.5.6-1-x86_64.pkg.tar.zst

ALternativ gibt es ein Archiv-Projekt6, unter welchem die älteren Paket-Versionen auf verschiedene Arten abgefragt werden können. Dieses beinhaltet einerseits alle Pakete, andererseits aber auch entsprechende Repository-Trees der einzelnen Tage. Somit besteht einerseits die Möglichkeit, der Installation einzelner älterer Pakete. Andererseits aber auch die Möglichkeit der Installation eines Paketstandes eines definierten Tages.

Auch hier wäre die Installation des notwendigen Pakets direkt per URL möglich. Also auf unser Beispiel bezogen mit pikaur -U https://archive.archlinux.org/packages/d/deno/deno-2.5.6-1-x86_64.pkg.tar.zst

Exkurs: AUR-Helper

Hier noch ein kleiner Zwischeneinwurf.

Es mag auffallen, dass ich hier nicht pacman als Befehl verwende, welcher ja der eigentliche Paketmanager unter Archlinux ist. Da wir hier auch mit dem Arch-User-Repository arbeiten, empfielt sich der Einsatz eines AUR-Helpers7.

Dies ist ein Helfer-Tool, welches die einfache Installation von AUR-Paketen ermöglicht. Ebenfalls aber auch deren Aktualisierung, wenn diese bereits installiert sind.

Und was die Sicherheit solcher Tools angeht, so ist hier, zumindest von organisatorischer Seite vorgeschrieben, eine entsprechende Prüf-Funktion eingebaut.

AUR-Diff

Somit wird zumindest immer abgefragt, ob man sich die Änderungen zur vorher installierten Version vor dem Update anschauen möchte. Gleiches gilt auch bei der Erstinstalltion, wobei dann der gesammte Inhalt visualisiert wird.

Die Durchführung

Und am Ende kommt es genau dazu.
Wir bringen das problematische Paket einmal auf die vorherige Paket-Version, mit dem oben bereits genannten Befehl.

Und nachfolgend können wir die normale Aktualisierung aller Paket nochmals anstoßen. Also ganz normal pikaur -Syu als Befehl verwenden. Doch würde dann nicht auch das aktuell manuell zurückgesetzte Paket erneut aktualisiert ?

Grundsätzlich ja, aber es gibt da einen Trick.

Manuelles Ignore

Anhand des Screenshots einmal genezeigt, verfügt der verwendete AUR-Helper hier über eine Komfort-Funktion, welche hier eingesetzt werden kann. Mit dem ShortKey m kann man die Paketliste der aktuell zu aktualisierenden Pakete manuell bearbeiten. Somit wurde hier einfach das problematische Paket, welches ja nur für die Erstellung des eigentlichen AUR-Pakets in dieser Version notwendig ist, manuell einmalig ignoriert.

Dadurch konnte das Paket am Ende erstellt und installiert werden. Und nachfolgend steht auch einer normalen Aktualisierung aller Pakete nichts mehr im Wege.