/tech/how to rollback a full system upgrade on arch

for when your system breaks and you want to cry

did you read the arch news?

if you didn’t read the news before upgrading, you might have missed an important notification
in some cases, the news will include instructions for required manual intervention

can you figure out which package is the issue?

check the output of journalctl -b -p err
   only (b)oot entries, only (p)riority (err)or
   take a picture of this information and use the log entries to attempt to troubleshoot

if you are able to determine which package is the issue then:
   if you trust it, you can use the downgrade package from the aur to rollback the package
   downgrade makes it easy to see what your previous version of the package was

   if you want the manual way, you can read about it here on the arch wiki
   it’s a little more involved, but you don’t need to trust anything third-party

you don’t know and just need your computer to (hopefully) work right now?

you will want to run su to switch to the root user to run these commands

back up your mirrorlist first:
cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak

figure out the date of your last non-breaking upgrade: run cat /var/log/pacman.log
the package upgrade entries shown first (at the bottom) are likely your breaking upgrade
scroll up to find the date of the upgrade before that one

point mirrorlist to the date of your last non-breaking upgrade in the archive to rollback to:
replace the * in the following command with the desired date in the form 2025/12/31
echo 'Server=https://archive.archlinux.org/repos/*/$repo/os/$arch' > /etc/pacman.d/mirrorlist

i like to save an extra copy in case i need to rollback again while troubleshooting later
hit the up-arrow to access the last command and add ‘.20251231’ (but your date) to the end
so the filename should be ‘mirrorlist.yourdate’

you can confirm that all three versions exist by running tree /etc/pacman.d/ -L 1
you should see mirrorlist, mirrorlist.(yourdate), and mirrorlist.bak (and maybe more)
tree shows a tree directory and -L 1 means only the highest level files at the path given

do a full system upgrade:
double ‘y’ refreshes your package database, double ‘u’ allows pacman to downgrade packages
pacman -Syyuu

reset your mirrorlist (keeping the backup, just in case):
cp /etc/pacman.d/mirrorlist.bak /etc/pacman.d/mirrorlist
if you want to not keep the backup you can just use mv instead of cp

what’s next?

you can hope that a fix is made shortly and just attempt an upgrade again in a day or two
or you can make an effort to troubleshoot the issue using the picture you took at the start
if you didn’t take the picture, you can likely run the same command to see the logs again now
:) troubleshooting is less stressful once you know you can revert to a working system whenever


tags: guide linux arch