Upgrade Path

From ArchWiki
Revision as of 22:02, 9 November 2012 by Simongmzlj (talk | contribs) (Rework filesystem upgade page)
Jump to: navigation, search

Collected here is an upgrade path from approximately <date> to a up-to-date archlinux system.

Warning: It is strongly advised to avoid the --force switch as it is not safe. This will seriously break your system, especially for the /lib update.

Remember to deal with .pacnews and .pacsaves after upgrading


The timeline of recent breaking changes detailed here:

End of initscripts support

As systemd is now the default init system, Arch Linux is receiving minimal testing on initscripts systems. Due to a lack of resources and interest, we are unlikely to work on fixing initscripts-specific bugs, and may close them as WONTFIX.

We therefore strongly encourage all users to migrate to systemd as soon as possible. See the systemd migration guide.

To ease the transition, initscripts support will remain in the official repositories for the time being, unless otherwise stated. As of January 2013, we will start removing initscripts support (e.g., rc scripts) from individual packages without further notice.

Fontconfig 2.10.1 update - manual intervention required

The fontconfig 2.10.1 update overwrites symlinks created by the former package version. These symlinks need to be removed before the update:

rm /etc/fonts/conf.d/20-unhint-small-vera.conf  
rm /etc/fonts/conf.d/20-fix-globaladvance.conf  
rm /etc/fonts/conf.d/29-replace-bitmap-fonts.conf  
rm /etc/fonts/conf.d/30-metric-aliases.conf  
rm /etc/fonts/conf.d/30-urw-aliases.conf  
rm /etc/fonts/conf.d/40-nonlatin.conf  
rm /etc/fonts/conf.d/45-latin.conf  
rm /etc/fonts/conf.d/49-sansserif.conf  
rm /etc/fonts/conf.d/50-user.conf  
rm /etc/fonts/conf.d/51-local.conf  
rm /etc/fonts/conf.d/60-latin.conf  
rm /etc/fonts/conf.d/65-fonts-persian.conf  
rm /etc/fonts/conf.d/65-nonlatin.conf  
rm /etc/fonts/conf.d/69-unifont.conf  
rm /etc/fonts/conf.d/80-delicious.conf  
rm /etc/fonts/conf.d/90-synthetic.conf  
pacman -Sy fontconfig

Main systemwide configuration should be done by symlinks (especially for autohinting, sub-pixel and lcdfilter):

cd /etc/fonts/conf.d  
ln -s ../conf.avail/XX-foo.conf

Also check Font Configuration and Fonts.

The /lib directory becomes a symlink

Note: for installs that have not been updated to glibc-2.16, it will save you lots of time and prevent major breakage to do: pacman -U http://pkgbuild.com/~allan/glibc-2.16.0-1-<arch>.pkg.tar.xz where <arch> is replaced by i686 or x86_64 as required. Add a single "-d" if needed. The instructions below assume that this has been done.

All Arch Linux packages have had their files in the /lib directory moved to /usr/lib and now /lib is a symlink to usr/lib. When performing this update, pacman will likely identify a conflict in the /lib directory. In the simplest case, this is worked around by doing:

pacman -Syu --ignore glibc
pacman -Su

If either of this steps does not work (e.g. due to dependency version issues, file conflicts in /lib), refer to this guide for more detailed instructions on performing this upgrade.


Upgrading Filesystem

Upgrading the filesystem package can get tricky since there are several different breaking changes that may have accumulated over time that somewhat interact with each other.


As of filesystem-2012.6-2 the folders /var/run and /var/lock will be replaced by symlinks to /run and /run/lock, respectively.

On most systems this is already the case, as initscripts create the symlinks on boot. However, these symlinks are not owned by any package, which is what we are fixing with this upgrade.

If the symlinks are already in place on your system (which should be the case for most people), then you can simply perform

pacman -Syu --ignore filesystem && pacman -S filesystem --force

Otherwise, if /var/run or /var/lock are directories (e.g. if you are using systemd and never booted with initscripts) you need to delete the directories before performing the update. As these directories are used at runtime, it is recommended to shutdown any background tasks before performing

pacman -Syu --ignore filesystem && rm -rf /var/run /var/lock && \
    pacman -S filesystem

Followed by a reboot before using the system again.

Lastly, on upgrading filesystem users of kernels prior to linux-3.4 will get a warning about permissions on /sys. This is nothing to worry about, as of linux-3.4 the permissions will be 555, and this upgrade reflects this in the filesystem package.

filesystem upgrade - manual intervention required

When upgrading to filesystem-2011.12 there will be a conflict with /etc/mtab.

Install the package as follows:

pacman -S filesystem --force

The reason for the conflict is that the file used to be generated at boot and hence not owned by any package. Now it is a symlink to /proc/self/mounts owned by filesystem. This change means that initscripts no longer requires write access to the rootfs (though other packages might).