Thursday, May 20, 2010

Downgrading a package in Arch


The Details

However, the user must keep in mind the following points. First, there is going to be the need to consider the dependencies of each program. The required libraries and such often change with each version, and the functionality of associated files may be completely different from previous ones. The solution will require changing these to earlier versions as well.

Second, one must consider if the necessary files have been removed from the system and are even going to be available from any source. Arch Linux's rolling release system of repositories are automatically upgraded without saving any older versions. See more about this problem below.

Third, we must be careful with changes to configuration files and scripts. At this point in time, we will rely upon pacman to handle this for us, as long as we do not bypass any safeguards it contains.

Please keep in mind that this issue brings us to the cutting edge of pacman package management development. The Arch Rollback Machine concept is being developed and awaiting useful incorporation into pacman. Once that occurs, this will become automated. Until then, please follow the instructions following this.

How to downgrade a package

  • Q: I just ran pacman -Syu and package XYZ was upgraded to version N from version M. This package is causing problems on my computer, how can I downgrade from version N to the older version M?
  • A: You may be able to downgrade the package trivially by visiting /var/cache/pacman/pkg on your system and seeing if the older version of the package is stored there. (If you have not run pacman -Scc recently, it should be there). If the package is there, you can install that version using pacman -U pkgname-olderpkgver.pkg.tar.gz after you moved to /var/cache/pacman/pkg.

This process will remove the current package, it will carefully calculate all of the dependency changes, and it will install the older version you have chosen with the proper dependencies down the line.

Via internet use

In case of Kernel Panic or a roll back to a previous kernel


Reinstall kernel

Reinstalling the kernel is probably the best bet when no other major system modifications have taken place recently.

Start from the installation CD

The first step is booting the installation CD. Once booted, do not select to login with "arch", like you would when installing arch. Instead, you'll first want to login with "root".

# root

Mount your partitions

When booted, you are in a minimal but functional live GNU/Linux environment with some basic tools. Now, you have to mount your normal root disk (or partition) to /mnt.

# mount /dev/sdXY /mnt

If you are using legacy IDE setup, then use the command:

# mount /dev/hdXY /mnt

If you use a separate boot partition, don't forget to mount it with:

# mount /dev/sdXZ /mnt/boot

Gather your files for later troubleshooting

This is a good point to stop and gather your information onto another drive or partition so that it can be analyzed and/or emailed for outside viewing before the files change again. Simply create a separate directory on your main partition or mount a usb drive to contain the files. Then you may copy any files you will need to keep unchanged during the next boot with your new kernel.

Configure your chroot environment

Newer kernels use an initial ramdisk to set up the kernel environment. When you reinstall a kernel, that initial ramdisk will be regenerated with mkinitcpio. One of mkinitcpio's features is that it does autodetection to find out what kernel modules are required for starting up your computer. For this autodetection to work, /dev, /sys and /proc need to mounted in your chroot:

# mount -t proc none /mnt/proc
# mount -t sysfs none /mnt/sys
# mount --bind /dev /mnt/dev

Chroot to your normal root

Now, we will chroot to this disk:

# chroot /mnt

Roll back to previous kernel version

If you keep your downloaded pacman packages, you now can easily roll back. If you didn't keep them, you have to find a way to get a previous kernel version on your system now.

Let's suppose you kept the previous versions. We will now install the last working one.

# pacman -U /var/cache/pacman/pkg/kernel26-2.6.23.xx-x.pkg.tar.gz

(Of course, make sure that you adapt this line to your own kernel version. You can find the ones you still have in your cache by examining the directory above.)

Otherwise, check the install CD for a package. For example, the version 2008.06 i686 CD contains addons/core-pkgs/kernel26-


Now is the time to reboot and see if the system modifications have stopped the panic. If reverting to an older kernel works, don't forget to check the arch-newspage to check what went wrong with the kernel build. If there is no mention of the problem there, then go to the bug reporting area and search for it there. If you still don't find it, open a new bug report and attach those files you saved during the troubleshooting step above.

No comments:

Blog Archive

About Me

Exclusion of liability Regarding StillStupid: The use you make of the guides, tips and downloads that you listed on this web site or on another website to which I refer is entirely at your own risk. In no way can I be held liable for damage or consequential damages of any kind, which occurs as a result of that use.