Translation(s): none
The Debian /usr Merge
This page tracks Debian support for the merged /usr directories scheme, i.e. the /{bin,sbin,lib}/ directories becoming symbolic links to /usr/{bin,sbin,lib}/.
The usrmerge package will convert the system it is installed on.
FAQ
For more information, please refer to the usrmerge package FAQ, another highly recommended read is <20181121140542.GA31273@espresso.pseudorandom.co.uk>
Is this about merging /usr/bin/ and /usr/sbin/?
No, there are no plans to do that.
Will switching to a merged /usr be mandatory?
In February 2021, the Technical Committee has resolved that Debian 'bookworm' should support only the merged-usr root filesystem layout, dropping support for the non-merged-usr layout. (978636)
The transition started on September 17th, 2022, by making init-system-helpers depend on usrmerge.
usrmerge is uninstallable, what do I do?
You might have run a script that installs a blocker metapackage. It needs to be removed manually, then apt will be able to upgrade the system:
# apt install usrmerge Reading package lists... Done Building dependency tree... Done Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: dpkg-fsys-usrunmess : Conflicts: usrmerge E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages. # dpkg --remove --force-all dpkg-fsys-usrunmess dpkg: warning: overriding problem because --force enabled: dpkg: warning: this is a protected package; it should not be removed (Reading database ... 26987 files and directories currently installed.) Removing dpkg-fsys-usrunmess (1.21.9) ... # apt install usrmerge Reading package lists... Done Building dependency tree... Done Reading state information... Done The following NEW packages will be installed: usrmerge 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 13.0 kB of archives. After this operation, 39.9 kB of additional disk space will be used. Get:1 http://deb.debian.org/debian sid/main amd64 usrmerge all 31 [13.0 kB] Fetched 13.0 kB in 0s (264 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package usrmerge. (Reading database ... 26988 files and directories currently installed.) Preparing to unpack .../archives/usrmerge_31_all.deb ... Unpacking usrmerge (31) ... Setting up usrmerge (31) ... The system has been successfully converted.
TODO
Make more people test a merged /usr by installing usrmerge.
Fix the packages with conflicting files.
Merge the lintian checks for conflicting files (767754).
Push forward the policy proposal to disallow conflicting files (759492).
Add merged /usr support to the installer (810301). (But until all the conflicting files bugs are fixed, usrmerge will still need to be installed).
Enable merged /usr by default in the installer (839046).
Recommend installing usrmerge on upgrade (841666)
Resources for developers
Conflicting files
Packages which provide compatibility symlinks must manage them in the maintainer scripts.
The packages currently in the archive use code like:
# postinst if [ "$1" = 'configure' -a ! -e '/usr/bin/which' ]; then ln -s /bin/which /usr/bin/which fi
# postrm if [ "$1" = 'remove' -a -L '/usr/bin/which' ]; then rm /usr/bin/which fi
Adoption rate
Merged /usr has been the default since debootstrap 1.0.85, reverted in 1.0.87 and re-enabled in 1.0.102.
See popcon for upgrades of older systems.