Filesystem Change In Archlinux glibc-2.16.0-2

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:

  1. Remove all packages that install their files in /lib, they can be reinstalled later after glibc upgrade.
  2. Manually delete all files without owner in /lib.
  3. Perform gcc update, and then glibc.
  4. 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.

Advertisements
Filesystem Change In Archlinux glibc-2.16.0-2

3 thoughts on “Filesystem Change In Archlinux glibc-2.16.0-2

    1. Basically, we boot to live CD with kernel version >3.0, then do chroot to our Linux root in the harddisk. ht efore chroot, we must mount /dev/ and /pts/ to our harddisk installation root. Aftr that, we rebuilt initramfs using mkinitcpio (I don’t remember the details, please refer to the wiki).

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s