Website-Suche

So setzen Sie Pacman-Updates in Arch Linux zurück


Arch Linux wird oft für seine hochmoderne Software und sein Rolling-Release-Modell gelobt. Wir besprechen diese Funktionen ausführlicher in unserem Artikel zum Vergleich von Arch Linux und Manjaro. Zusätzlich zu diesem Lob hat Arch Linux auch den Ruf, instabil zu sein. Dieser Ruf rührt von der manchmal unvorhersehbaren Natur modernster Software her. Die neueste Software von Upstream-Entwicklern kann Fehler enthalten, die während der ersten Tests nicht offensichtlich waren. Daher besteht immer das Risiko, dass ein Update mit dem Paketmanager pacman zu unerwarteten Ergebnissen führen kann. Dazu kann gehören, dass eine bestimmte Software nicht mehr richtig (oder überhaupt) funktioniert oder sogar mehrere Anwendungen oder Desktop-Umgebungen, die nicht mehr wie erwartet funktionieren.

Ein regelmäßiges Backup Ihres GNU/Linux-Systems ist die beste Abhilfe, um die Kopfschmerzen, die dies verursachen könnte, zu mildern. Es gibt keinen Mangel an Backup-Lösungen für Linux. Einige der Sicherungsoptionen umfassen dd, BackupPC, rsync, Fsarchiver , rsnapshot. Wenn Sie eine regelmäßige Backup-Lösung im Einsatz haben, kann es beruhigend sein zu wissen, dass Sie von einem Backup wiederherstellen können, falls ein Pacman-Update Probleme verursacht, aber es wäre ideal, wenn Sie es nicht müssten. In diesem Artikel zeigen wir Ihnen, wie Sie Pacman-Updates in Arch Linux zurücksetzen können. Es gibt zwei Möglichkeiten, dies zu erreichen. Eine Möglichkeit führt über den Pacman-Cache; die andere ist die Verwendung des Arch Linux Archive. Wir werden beide Methoden besprechen.

In diesem Tutorial lernen Sie:

  • So setzen Sie Arch Linux-Updates mit dem Pacman-Cache zurück
  • So setzen Sie Arch Linux-Updates mit dem Arch Linux-Archiv zurück

So setzen Sie Pacman-Updates in Arch Linux zurück

Verwendete Softwareanforderungen und Konventionen

So setzen Sie Arch Linux-Updates mit dem Pacman-Cache zurück

Jedes Mal, wenn Sie ein Paket installieren oder aktualisieren, speichert pacman dieses Paket in /var/cache/pacman/pkg/. pacman ermöglicht es Ihnen auch, ein Paket manuell über das Flag -U zu aktualisieren. Wie sich herausstellt, kann diese Upgrade-Methode auch verwendet werden, um eine ältere Version des Pakets zu installieren, wodurch das Paket effektiv herabgestuft wird.

Herabstufen eines einzelnen Pakets

Angenommen, Sie haben gerade Ihr System über den Befehl $sudo pacman -Syu aktualisiert und öffnen dann Firefox, um im Internet zu surfen, nur um festzustellen, dass es jetzt abstürzt, wo es noch nie zuvor war. Sie können Firefox ganz einfach auf die vorherige Version downgraden, die Sie mit dem Pacman-Cache installiert haben.

Untersuchen Sie zunächst die Firefox-Pakete, die in /var/cache/pacman/pkg/ aufgelistet sind.

ls /var/cache/pacman/pkg/firefox*

Es sollten die neueste Version, auf die Sie gerade aktualisiert haben, und alle vorherigen Versionen, die Sie installiert haben, angezeigt werden. In unserem Beispiel ist dies die Ausgabe, die wir erhalten.

/var/cache/pacman/pkg/firefox-81.0.1-1-x86_64.pkg.tar.zst
/var/cache/pacman/pkg/firefox-83.0-2-x86_64.pkg.tar.zst

Wir wissen, dass wir ein Upgrade von Version 81.0.1-1 auf 83.0-2 durchgeführt haben und vermuten, dass dies ein Problem verursacht haben könnte. Um diese Theorie zu testen, führen Sie einfach ein Rollback auf die Version 81.0.1-1 mit dem pacman-Cache mit dem folgenden Befehl durch.

sudo pacman -U /var/cache/pacman/pkg/firefox-81.0.1-1-x86_64.pkg.tar.zst

Die folgende Ausgabe wird angezeigt.

loading packages...
warning: downgrading package firefox (83.0-2 => 81.0.1-1)
resolving dependencies...
looking for conflicting packages...

Packages (1) firefox-81.0.1-1

Total Installed Size:  206.76 MiB
Net Upgrade Size:       -0.13 MiB

:: Proceed with installation? [Y/n]

Sobald Sie y eingeben, um fortzufahren, haben Sie die zuvor installierte Version von Firefox installiert und können sie öffnen, um zu sehen, ob das Problem behoben wurde.

Herabstufen mehrerer Pakete

Mit dem pacman-Cache können Sie mehrere Pakete downgraden, indem Sie sie als separate Argumente für pacman -U.
angeben. Zum Beispiel

sudo pacman -U /var/cache/pacman/pkg/firefox-81.0.1-1-x86_64.pkg.tar.zst /var/cache/pacman/pkg/alsa-lib-1.2.3.2-1-x86_64.pkg.tar.zst /var/cache/pacman/pkg/adwaita-icon-theme-3.38.0-1-any.pkg.tar.zst

Wenn Sie mehrere Pakete downgraden, kann es von Vorteil sein, in das Verzeichnis /var/cache/pacman/pkg zu wechseln, damit Sie nicht den vollständigen Pfad jedes Pakets eingeben müssen, das Sie downgraden möchten.

cd /var/cache/pacman/pkg
sudo pacman -U firefox-81.0.1-1-x86_64.pkg.tar.zst alsa-lib-1.2.3.2-1-x86_64.pkg.tar.zst adwaita-icon-theme-3.38.0-1-any.pkg.tar.zst

Höchstwahrscheinlich beginnen Sie zu denken, dass das Downgrade einer großen Anzahl von Paketen auf diese Weise, gelinde gesagt, mühsam wäre. Möglicherweise befinden Sie sich in Situationen, in denen Sie den Verdacht haben, dass 20 verschiedene Pakete möglicherweise ein Problem verursachen könnten, oder Sie haben keine Ahnung, welche Pakete ein Problem verursachen, und Sie möchten alle Pakete herabstufen. Diese Szenarien sind möglicherweise besser für die Verwendung des Arch Linux Archive geeignet, aber bevor wir das diskutieren, wollen wir einige Beispiele für Situationen untersuchen, in denen wir eine Lösung zusammenhacken könnten, um den Pacman-Cache für diesen Zweck zu verwenden, ohne jeden Paketnamen manuell eingeben zu müssen.

Herabstufung mehrerer verwandter Pakete mit einem ähnlichen Namensschema

Angenommen, Sie haben Ihren Computer gerade eingeschaltet, nachdem Sie ihn einige Wochen lang nicht benutzt haben. Sie fahren fort, Ihr System über den Befehl $sudo pacman -Syu zu aktualisieren, und Sie stellen fest, dass alle Ihre qt-basierten Anwendungen nicht korrekt funktionieren, aber alle anderen Apps funktionieren. Da viele der grundlegenden qt-Pakete und -Bibliotheken qt im Dateinamen haben und es sehr unwahrscheinlich ist, dass Nicht-qt-Pakete dies im Dateinamen haben, ist es möglich, nur die qt-Updates des letzten System-Upgrades rückgängig zu machen.

Wann immer Sie ein Update mit pacman durchführen, wird in /var/log/pacman.log eine Aufzeichnung darüber gespeichert, was Sie genau aktualisiert haben und wann. Es folgt eine Beispielzeile.

[2020-11-30T05:39:16-0500] [ALPM] upgraded qt5-xmlpatterns (5.15.1-1 -> 5.15.2-1)

Wir können dieses Protokoll verwenden, um systematisch nur die qt-Pakete herabzustufen, indem wir nach den Zeilen im pacman.log suchen, die Pakete anzeigen, die qt im Dateinamen enthalten, die heute aktualisiert wurden, und einige Textmanipulationen an ihnen vornehmen und sie dann als Argumente für pacman -U in einer for-Schleife bereitstellen. Im folgenden Beispiel wird davon ausgegangen, dass das aktuelle Datum der 30. November 2020 ist. Passen Sie das Datum entsprechend an, wenn Sie es nutzen möchten.

grep -a qt /var/log/pacman.log | grep 2020-11-30 > /tmp/qtupdates.txt
awk '{print $4}' /tmp/qtupdates.txt > /tmp/lines1;awk '{print $5}' /tmp/qtupdates.txt | sed 's/(/-/g' > /tmp/lines2
paste /tmp/lines1 /tmp/lines2 > /tmp/lines
tr -d "[:blank:]" < /tmp/lines > /tmp/packages
cd /var/cache/pacman/pkg/
for i in $(cat /tmp/packages); do sudo pacman --noconfirm -U "$i"*; done

Downgrade aller aktualisierten Pakete

Angenommen, Sie haben Ihren Computer gerade eingeschaltet, nachdem Sie ihn einige Wochen lang nicht benutzt haben. Sie fahren fort, Ihr System über den Befehl $sudo pacman -Syu zu aktualisieren, und dann stellen Sie fest, dass sich Ihr gesamtes System ungewöhnlich langsam anfühlt. Sie haben keine Ahnung, welches Paketupdate dies verursachen könnte, und Sie möchten vorübergehend alle 512 von ihnen auf die vorherige Version zurücksetzen, die Sie installiert haben.

Dies erfordert eigentlich nicht mehr Aufwand als im vorherigen Beispiel. Sie führen die gleichen Schritte aus, außer dass Sie die pacman.log Datei verwenden, um die Namen aller Pakete abzurufen, die heute aktualisiert wurden, nicht nur derjenigen, die einem bestimmten Benennungsschema entsprechen. Dies funktioniert für eine beliebige Anzahl von Paketen und fungiert im Wesentlichen als großer Rückgängig-Knopf für Pacman. Im folgenden Beispiel wird davon ausgegangen, dass das aktuelle Datum der 30. November 2020 ist. Passen Sie das Datum entsprechend an, wenn Sie es nutzen möchten.

grep -a upgraded /var/log/pacman.log| grep 2020-11-30 > /tmp/lastupdates.txt                                                              
awk '{print $4}' /tmp/lastupdates.txt > /tmp/lines1;awk '{print $5}' /tmp/lastupdates.txt | sed 's/(/-/g' > /tmp/lines2
paste /tmp/lines1 /tmp/lines2 > /tmp/lines
tr -d "[:blank:]" < /tmp/lines > /tmp/packages
cd /var/cache/pacman/pkg/
for i in $(cat /tmp/packages); do sudo pacman --noconfirm -U "$i"*; done

So setzen Sie Arch Linux-Updates mit dem Arch Linux-Archiv zurück

Das Arch Linux Archiv ist ein offizielles Archiv, das Schnappschüsse früherer Versionen von Paketen enthält. Diese werden im packages-Verzeichnis der Site gespeichert. Es gibt zwei potenzielle Vorteile bei der Verwendung des Arch Linux-Archivs gegenüber dem pacman-Cache. Zunächst nimmt der Pacman-Cache Platz auf Ihrem lokalen Speicher ein. Infolgedessen entscheiden sich einige Leute dafür, ihren Cache regelmäßig zu leeren. Zweitens stellt das Archiv alle vorherigen Versionen eines Pakets zur Verfügung, nicht nur die, die Sie zuvor installiert hatten.

Herabstufen eines einzelnen Pakets

Um ein Paket auf eine frühere Version herabzustufen, suchen Sie es zuerst im Archiv und verwenden dann pacman, um ein Downgrade auf diese bestimmte Version durchzuführen. Wenn wir unser vorheriges Beispiel für ein Downgrade von Firefox noch einmal betrachten, sind wir nicht mehr auf das Downgrade von Version 83.0-2 auf 81.0.1-1 beschränkt. Wie Sie dem Firefox-Archiv entnehmen können, haben wir auch die Möglichkeit, auf folgende Zwischenversionen zu downgraden: 81.0.2-1, 82.0-1, 82.0.2-1, 82.0.3-1, 83.0-1.

Um ein Downgrade auf Firefox Version 83.0-1 mit dem Arch Linux Archive durchzuführen, geben Sie den folgenden Befehl ein.

sudo pacman -U https://archive.archlinux.org/packages/f/firefox/firefox-83.0-1-x86_64.pkg.tar.zst

Downgrade aller Pakete auf ein früheres Datum

Eine weitere Option, die Ihnen bei der Verwendung des Arch Linux Archivs zur Verfügung steht, besteht darin, alle Pakete auf Ihrem System auf die "aktuelle" Version wiederherzustellen, die zu einem bestimmten Zeitpunkt in den Repositories vorhanden war. Dies kann nützlich sein, wenn Sie jetzt auf Probleme mit Ihrem Arch-System stoßen, sich aber daran erinnern, dass Sie diese Probleme vor ein paar Wochen nicht hatten. Im folgenden Beispiel werden wir alle Pakete auf den 10. November 2020 downgraden.
Um die Pakete herabzustufen, müssen wir pacman mitteilen, dass wir das Archiv-Repo verwenden möchten, indem wir /etc/pacman.d/mirrorlist.
bearbeiten. Bevor wir Änderungen an der Datei vornehmen, wird empfohlen, sie zu sichern, damit wir bei Bedarf problemlos zur aktuellen Spiegellistendatei zurückkehren können.

sudo cp /etc/pacman.d/mirrorlist{,.bak}

Bearbeiten Sie als Nächstes Ihre Datei /etc/pacman.d/mirrorlist mit dem Editor Ihrer Wahl:

sudo vim /etc/pacman.d/mirrorlist

und ändern Sie den Inhalt wie folgt.

### Arch Linux repository mirrorlist
### Created to downgrade to Nov 10th 2020
Server=https://archive.archlinux.org/repos/2020/10/11/$repo/os/$arch

Um nun das Downgrade der Pakete abzuschließen, geben Sie den folgenden Befehl ein.

sudo pacman -Syyuu

Schlussfolgerung

In diesem Artikel haben wir zwei Methoden zum Rollback oder Downgrade von Paketen in Arch Linux untersucht, den pacman-Cache und das Arch Linux Archive. Beides sind leistungsstarke Methoden, die ihre eigenen Vorteile haben. Lassen Sie uns zum Abschluss dieses Artikels kurz über diese Vorteile nachdenken.

Der Hauptvorteil der Verwendung des Pacman-Caches besteht darin, dass keine Internetverbindung oder das Herunterladen von Paketen erforderlich ist, da er lokal gespeichert wird. Infolgedessen ist der Herabstufungsprozess schneller. Ein weiterer Vorteil ist, dass der pacman-Cache Versionen von Paketen enthält, die Sie zuvor auf Ihrem System installiert haben, so dass Sie höchstwahrscheinlich eine Vorstellung davon haben, wie gut sie funktioniert haben. Ein dritter Vorteil besteht darin, dass Sie mehrere Pakete downgraden können, ohne Konfigurationsdateien bearbeiten zu müssen.

Der Hauptvorteil der Verwendung des Arch Linux Archivs besteht darin, dass Sie auf eine beliebige Version eines Pakets downgraden können, unabhängig davon, ob Sie es jemals zuvor installiert haben. Ein weiterer Vorteil ist, dass kein lokaler Speicher belegt wird, wenn Ihnen also der Speicherplatz ausgeht und Sie Ihren Pacman-Cache leeren möchten, wissen Sie, dass es eine weitere praktikable Option für ein Downgrade gibt. Ein dritter Vorteil besteht darin, dass Sie jedes einzelne Paket auf Ihrem System einfach downgraden können, indem Sie nur eine einzige Konfigurationsdatei bearbeiten.

Verwandte Artikel: