Latest glibc update to version 2.16.0 in Archlinux brings a major change in filesystem. The directory /lib no longer exists as a separate entity, but instead, it becomes symbolic link to /usr/lib. All files previously under /lib are moved to /usr/lib.
This change requires a few manual tweaks. Upgrading glibc will remove /lib from filesystem and replace it with a symlink, while several unsupported (AUR) packages installs its files in /lib, and they are not aware of this change. Files from these packages will prevent /lib from being deleted, preventing glibc (and those depended to it) from being upgraded.
Here are steps required to perform a smooth transition to newer glibc:
- Remove all packages that install their files in /lib, they can be reinstalled later after glibc upgrade.
- Manually delete all files without owner in /lib.
- Perform gcc update, and then glibc.
- Do not force glibc update with –force or -f flag, as this will break the system and you’ll need a live CD to do recovery. I learned this hard way.
The detailed instruction is available in the Archlinux wiki. I wonder why they put it in DeveloperWiki instead of normal wiki page.