Arch Linux wordt vaak geprezen om zijn vooruitstrevende software en zijn ‘rolling release’-model. We gaan dieper in op deze kenmerken in ons artikel waarin Arch Linux en Manjaro worden vergeleken. Naast deze lof heeft Arch Linux ook de reputatie instabiel te zijn. Deze reputatie komt voort uit de soms onvoorspelbare aard van ‘bleeding edge’ software. De nieuwste software van upstream ontwikkelaars kan bugs bevatten die niet zichtbaar waren tijdens de eerste tests. Als gevolg hiervan is het risico altijd aanwezig dat het updaten met de pakketbeheerder, pacman
, onverwachte resultaten kan opleveren. Dit kan zijn dat een specifiek stuk software niet meer goed werkt (of helemaal niet meer) of zelfs dat meerdere applicaties of Desktop Omgevingen niet meer werken zoals verwacht.
Het regelmatig back-uppen van uw GNU/Linux systeem is de beste bescherming om de hoofdpijn die dit kan veroorzaken te beperken. Er is geen tekort aan backup oplossingen voor Linux; enkele van de backup opties zijn dd, BackupPC, rsync, Fsarchiver, rsnapshot. Als je een regelmatige backup oplossing hebt, kan het geruststellend zijn om te weten dat je van een backup kan herstellen in het geval dat een pacman
update problemen veroorzaakt, maar het zou ideaal zijn als je dat niet hoefde te doen. In dit artikel laten we zien hoe u pacman
updates kunt terugdraaien in Arch Linux. Er zijn twee manieren om dit te doen. De ene manier is via de pacman cache
; de andere is door gebruik te maken van de Arch Linux Archive
. We zullen beide methoden bespreken.
In deze tutorial leert u:
- Hoe je Arch Linux updates terugdraait met de pacman cache
- Hoe je Arch Linux updates terugdraait met het Arch Linux Archive
Softwarevereisten en gebruikte conventies
Categorie | Eisen, Conventies of gebruikte softwareversie |
---|---|
Systeem | Arch Linux |
Software | pacman |
Anders | Privileged toegang tot uw Linux systeem als root of via het sudo commando. |
Voorwaarden | # – vereist dat gegeven Linux commando’s worden uitgevoerd met root privileges, ofwel direct als een root gebruiker of door gebruik te maken van sudo commando$ – vereist dat gegeven Linux commando’s worden uitgevoerd als een gewone nietbevoorrechte gebruiker |
Hoe Arch Linux-updates terug te draaien met behulp van de pacman cache
Elke keer dat u een pakket installeert of update pacman
slaat dit pakket op in /var/cache/pacman/pkg/
pacman
laat u ook toe om een pakket manueel te upgraden via de -U
vlag. Het blijkt dat deze upgrade methode ook kan worden gebruikt om een oudere versie van het pakket te installeren, waardoor het pakket effectief wordt gedowngraded.
Een enkel pakket downgraden
Voorstel dat u net uw systeem hebt geupdate via het $ sudo pacman -Syu
commando en dan opent u firefox
om op het web te surfen, alleen om te beseffen dat het nu crasht terwijl het dat voorheen nooit deed. U kunt firefox
gemakkelijk downgraden naar de vorige versie die u geïnstalleerd had met de pacman cache.
Overloop eerst de firefox
pakketten die in /var/cache/pacman/pkg/
$ ls /var/cache/pacman/pkg/firefox*
U zou de laatste versie moeten zien waarnaar u net hebt geupdate en alle eerdere versies die u had geïnstalleerd. In ons voorbeeld is dit de uitvoer die we ontvangen.
/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
We weten dat we een upgrade hebben uitgevoerd van versie 81.0.1-1
naar 83.0-2
en vermoeden dat dit een probleem kan hebben veroorzaakt. Om deze theorie te testen, rolt u gewoon terug naar de versie 81.0.1-1
met behulp van de pacman cache met het volgende commando.
$ sudo pacman -U /var/cache/pacman/pkg/firefox-81.0.1-1-x86_64.pkg.tar.zst
Het UAF Geophysical Institute, is op zoek naar een ervaren Linux Systems Analyst om hun team van research cyber infrastructuur analisten en ingenieurs te versterken. LOCATIE: Fairbanks, Alaska, USA
APPLY NOW
Je ziet de volgende output.
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-1Total Installed Size: 206.76 MiBNet Upgrade Size: -0.13 MiB:: Proceed with installation?
Als u y
typt om verder te gaan, hebt u de eerder geïnstalleerde versie van firefox
geïnstalleerd en kunt u deze openen om te zien of het probleem is opgelost.
Meerdere pakketten downgraden
Met de pacman cache kunt u meerdere pakketten downgraden door ze als aparte argumenten mee te geven aan pacman -U
. Bijvoorbeeld
$ 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
Bij het downgraden van meerdere pakketten kan het handig zijn om naar de /var/cache/pacman/pkg
directory te gaan, zodat u niet het volledige pad hoeft in te typen van elk pakket dat u wilt downgraden.
$ 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
Waarschijnlijk begint u te denken dat het downgraden van een groot aantal pakketten op deze manier op zijn zachtst gezegd vervelend zou zijn. U kan in situaties terechtkomen waar u vermoedt dat 20 verschillende packages een probleem zouden kunnen veroorzaken of u hebt geen idee welke packages een probleem veroorzaken en u wil ze allemaal downgraden. Deze scenario’s zijn misschien beter geschikt om de Arch Linux Archive
te gebruiken, maar laten we eerst enkele voorbeelden bekijken van situaties waarin we een oplossing kunnen hacken om de pacman cache
voor dit doel te gebruiken, zonder elke pakketnaam handmatig te moeten intypen.
Downgraden van meerdere gerelateerde pakketten met een vergelijkbare naam
Stel dat u uw machine net hebt opgestart nadat u hem een paar weken niet hebt gebruikt. U gaat uw systeem updaten via het $ sudo pacman -Syu
commando en u merkt dat al uw qt gebaseerde applicaties niet correct functioneren, maar alle andere apps wel. Omdat veel van de basis qt pakketten en bibliotheken qt
in de bestandsnaam hebben en het zeer onwaarschijnlijk is dat niet-qt pakketten dit in de bestandsnaam hebben, is het mogelijk om alleen de qt updates terug te draaien van de laatste systeem upgrade.
Wanneer je een update uitvoert met pacman
wordt er een record bijgehouden van wat je precies hebt geupgrade en wanneer in /var/log/pacman.log
. Hieronder volgt een voorbeeldregel.
upgraded qt5-xmlpatterns (5.15.1-1 -> 5.15.2-1)
We kunnen dit log gebruiken om ons te helpen alleen de qt pakketten systematisch te downgraden door te zoeken naar de regels in de pacman.log
die pakketten tonen die qt bevatten in de bestandsnaam en die vandaag zijn geupgrade en daar wat tekst manipulatie op uit te voeren en ze dan als argumenten te geven aan pacman -U
in een for loop. Het onderstaande voorbeeld gaat ervan uit dat de huidige datum 30 november 2020 is. Pas de datum aan als u er gebruik van wilt maken.
$ 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 "" < /tmp/lines > /tmp/packages$ cd /var/cache/pacman/pkg/$ for i in $(cat /tmp/packages); do sudo pacman --noconfirm -U "$i"*; done
Downgraden van alle geüpgrade pakketten
Stel dat u uw machine net hebt opgestart nadat u hem een paar weken niet hebt gebruikt. U gaat uw systeem updaten via het $ sudo pacman -Syu
commando en dan merkt u dat uw hele systeem abnormaal traag aanvoelt. U heeft geen idee welke pakket-update dit zou kunnen veroorzaken en u wilt ze alle 512 tijdelijk terugzetten naar de vorige versie die u geïnstalleerd had.
Dit kost eigenlijk niet meer moeite dan het vorige voorbeeld. U voert dezelfde stappen uit, behalve dat u het pacman.log
bestand gebruikt om de namen te krijgen van alle pakketten die vandaag zijn ge-upgrade, niet alleen de pakketten die in een bepaald naamgevingsschema passen. Dit zal werken voor eender welk aantal pakketten, in wezen functionerend als een grote undo-knop voor pacman
. Het voorbeeld hieronder gaat ervan uit dat de huidige datum 30 november 2020 is. Pas de datum aan als u er gebruik van wilt maken.
$ 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 "" < /tmp/lines > /tmp/packages$ cd /var/cache/pacman/pkg/$ for i in $(cat /tmp/packages); do sudo pacman --noconfirm -U "$i"*; done
Hoe Arch Linux updates terug te draaien met het Arch Linux Archief
Het Arch Linux Archief is een officieel archief dat snapshots bevat van vorige versies van pakketten. Deze worden opgeslagen in de packages directory van de site. Er zijn twee potentiële voordelen aan het gebruik van de Arch Linux Archive
boven de pacman cache
. Ten eerste, de pacman cache
neemt ruimte in op uw lokale opslag. Daarom zullen sommige mensen ervoor kiezen om regelmatig hun cache te wissen. Ten tweede, het Archief maakt alle eerdere versies van een pakket beschikbaar, niet alleen de versies die u eerder had geïnstalleerd.
Een enkel pakket downgraden
Om een pakket te downgraden naar een eerdere versie, zoekt u het eerst op in het archief en gebruikt dan pacman
om te downgraden naar die specifieke versie. Als we ons vorig voorbeeld van het downgraden van Firefox
herbekijken, zijn we niet langer beperkt tot het downgraden van versie 83.0-2
naar 81.0.1-1
. Zoals u kunt zien in het firefox-archief, hebben we ook de mogelijkheid om te downgraden naar de volgende tussenliggende versies: 81.0.2-1, 82.0-1, 82.0.2-1, 82.0.3-1, 83.0-1
.
Om te downgraden naar Firefox
versie 83.0-1
met behulp van de Arch Linux Archive
voer het volgende commando in.
$ sudo pacman -U https://archive.archlinux.org/packages/f/firefox/firefox-83.0-1-x86_64.pkg.tar.zst
Downgrade alle pakketten naar een eerdere datum
Een andere optie die u ter beschikking heeft wanneer u de Arch Linux Archive
gebruikt, is om alle pakketten op uw systeem terug te zetten naar de “huidige” versie die op een specifieke datum in de repositories bestond. Dit kan nuttig zijn als je nu problemen ondervindt met je Arch systeem, maar je herinnert je dat je die problemen een paar weken geleden nog niet had. In het volgende voorbeeld zullen we alle pakketten downgraden naar 10 november 2020. Om de packages te downgraden moeten we pacman laten weten dat we de archief repo willen gebruiken door /etc/pacman.d/mirrorlist
te bewerken. Alvorens wijzigingen aan te brengen in het bestand, is het aangeraden om er een back-up van te maken zodat we gemakkelijk kunnen terugkeren naar het huidige mirrorlist
bestand wanneer we dat zouden willen.
$ sudo cp /etc/pacman.d/mirrorlist{,.bak}
Volgende, bewerk uw /etc/pacman.d/mirrorlist
bestand met de editor van uw keuze:
$ sudo vim /etc/pacman.d/mirrorlist
en verander de inhoud in het volgende.
### Arch Linux repository mirrorlist### Created to downgrade to Nov 10th 2020Server=https://archive.archlinux.org/repos/2020/10/11/$repo/os/$arch
Nu om het downgraden van de pakketten af te ronden voert u het volgende commando in.
$ sudo pacman -Syyuu
Conclusie
In dit artikel hebben we twee methoden onderzocht om pakketten terug te draaien of te downgraden in Arch Linux, de pacman cache
en de Arch Linux Archive
. Het zijn beide krachtige methodes die hun eigen voordelen hebben. Laten we kort stilstaan bij die voordelen als we dit artikel afsluiten.
Het belangrijkste voordeel van het gebruik van de pacman cache
is dat er geen internetverbinding of downloaden van pakketten voor nodig is, omdat het lokaal wordt opgeslagen. Hierdoor verloopt het downgraden sneller. Een ander voordeel is dat de pacman cache
versies bevat van pakketten die u eerder op uw systeem hebt geïnstalleerd, daarom hebt u hoogstwaarschijnlijk een idee van hoe goed ze werkten. Een derde voordeel is dat u meerdere pakketten kunt downgraden zonder configuratiebestanden te hoeven bewerken.
Het belangrijkste voordeel van het gebruik van de Arch Linux Archive
is dat u kunt downgraden naar elke versie van een pakket, ongeacht of u het ooit eerder had geïnstalleerd. Een ander voordeel is dat het geen lokale opslagruimte in beslag neemt, dus als je bijna geen opslagruimte meer hebt en je pacman cache wil leegmaken, weet je dat er nog een andere optie is om te downgraden. Een derde voordeel is dat je gemakkelijk elk pakket op je systeem kunt downgraden door slechts één configuratiebestand te bewerken.