The merge of /bin, /sbin, /lib into /usr/bin and /usr/lib is now in effect!

Jun 3, 2013 21:03 GMT  ·  By

Allan McRae announced a few days ago that the Arch developers are preparing the merge of /lib, /bin, /sbin and /usr/sbin to /usr/bin and /usr/lib, in order to unify all binaries and libraries into a single directory.

Long story short, during your next update, you will encounter an error message like the one below, right after all packages have been downloaded and before the installation process begins:

error: failed to commit transaction (conflicting files) filesystem: /bin exists in filesystem filesystem: /sbin exists in filesystem filesystem: /usr/bin exists in filesystem Errors occurred, no packages were upgraded.

"The update merges all binaries into a unified /usr/bin directory. This step removes a distinction that has been meaningless for Arch systems and simplifies package maintenance for the development team. See this post for more explanation of the reasoning behind this change," was stated in today's announcement, on the official Arch Linux homepage.

Therefore, in order to safely update your Arch Linux installation, you need to follow these instructions exactly or READ THIS ARTICLE:

1. Fix any non-official packages that have files in the /sbin, /usr/sbin or /bin directories, to put them in /usr/bin. To generate a list of packages that are not in a repository and that need to be fixed, use the following command:

pacman -Qqo /bin /sbin /usr/sbin | pacman -Qm -

Also, you should check the packages installed from non-official repositories. Get a list of them using the following command:

paclist <repo> | awk ' { print $1 } ' | pacman -Ql - | grep ' /s\?bin/\| /usr/sbin/

If you see no output, you can proceed to the next step.

2. You need to fix any other packages from IgnoreGroup or IgnorePkg that have files in /sbin, /usr/sbin or /bin.

3. You also need to move any files available in /sbin, /usr/sbin or /bin that are unowned by any package. Use the following command to find them:

find /bin /sbin /usr/sbin -exec pacman -Qo -- {} + >/dev/null

If you see no output, you can proceed to the next step.

4. Make sure all you partitions are mounted before proceeding.

5. Open two terminals. The first one will be used to update your Arch Linux system using the command below, and the second one should be prepared with root privileges in case of an emergency (especially if you do this over SSH).

To update your Arch Linux system, execute the following commands:

sudo pacman -Syu --ignore filesystem,bash sudo pacman -S bash sudo pacman -Su

I was lucky enough to successfully update my Arch Linux system today using the instructions above, as you can see from the screenshot below. For more details, check the official announcement on the Arch Linux website.

Review image