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 2012-11-04
- Fontconfig 2.10.1 update 2012-09-06
- The /lib directory becomes a symlink 2012-07-14
- Symlinks to /run 2012-06-07
- Symlinks to /proc/self/mounts 2011-12-20
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
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 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).