X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=914897_merged_usr%2Fballot.md;h=bef8ead393931ed93925e76824ec9a941f823052;hb=3d55920e9bbd3bf9374fcf0b6801e991df8f55fd;hp=89888877cdd42e3685701bec5bdff34bb00060e2;hpb=8d22f3cf61ed718e9dd5471141d3086570afa743;p=debian-ctte.git diff --git a/914897_merged_usr/ballot.md b/914897_merged_usr/ballot.md index 8988887..bef8ead 100644 --- a/914897_merged_usr/ballot.md +++ b/914897_merged_usr/ballot.md @@ -2,23 +2,23 @@ ## What is "merged `/usr`" -"Merged `/usr`" describes a possible future standard directories scheme in which the `/{bin,sbin,lib*}/` directories have been made superfluous through replacing them by symlinks to their `/usr` equivalents (/usr/{bin,sbin,lib*}). +"Merged `/usr`" describes a possible future standard directories scheme in which the `/{bin,sbin,lib*}/` directories have been made superfluous through replacing them by symlinks to their `/usr` equivalents (`/usr/{bin,sbin,lib*}`). The motivation to get Debian systems to converge towards such a scheme is vastly documented elsewhere ([FDO's TheCaseForTheUsrMerge][0], [wiki.d.o UsrMerge][1]) but can be summarized as the following points: -* having separate `/` and `/usr` filesystems has been useful in the past for booting without initramfs onto a minimal root filesystem that carried just enough to mount the `/usr` filesystem later in the boot process. Given the evolution of physical hosts' capabilities, initramfs'es have been default in Debian (and elsewhere) for a long time, and most systems no longer have an intermediate state during boot in which they have only `/`, but not `/usr`, mounted. -* another use-case is to be able to share an identical `/usr` over a network link; hence booting an initramfs, mounting a local `/`, then mounting `/usr` over the network. It seems that an initramfs with everything needed to mount a filesystem over a network link directly actually has a smaller footprint. -* booting with `/` only is not systematically tested in Debian anymore; +* having separate `/` and `/usr` filesystems has been useful in the past for booting without initramfs onto a minimal root filesystem that carried just enough to mount the `/usr` filesystem later in the boot process. Given the evolution of physical hosts' capabilities, initramfs'es have been default in Debian (and elsewhere) for a long time, and most systems no longer have an intermediate state during boot in which they have only `/`, but not `/usr`, mounted. Booting hosts through that intermediate state is not systematically tested in Debian anymore. +* another use-case is to share system files from `/usr` between hosts (over a network link) or containers (locally) which use different data or configuration. Having all software under `/usr` (instead of spread between `/` and `/usr`) makes the centralized update and the sharing easier. * the packaging infrastructure to install files outside of `/usr` is not standard and represents technical debt: * given its status as remnant "folklore", the distinction between what _needs_ to be shipped in `/` and what can stay in `/usr` is often interpreted arbitrarily; * allowing shipment of identically-named libraries or binaries in different paths can confuse common understanding of paths precedence. +[0]: https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge/ +[1]: https://wiki.debian.org/UsrMerge + The arguments against moving the base directories' scheme towards "merged `/usr`" are as follows: * there's no gain in disrupting something that is not inherently broken; -* `/{bin,sbin,lib*}/` → `/usr/{bin,sbin,lib*}/` symlinks create confusing views of the system (`/bin/cat` and `/usr/bin/cat` are the same file), and dpkg doesn't support this situation cleanly [#134758](https://bugs.debian.org/134758). - -[0]: https://www.freedesktop.org/wiki/Software/systemd/TheCaseForTheUsrMerge/ -[1]: https://wiki.debian.org/UsrMerge +* `/{bin,sbin,lib*}/` → `/usr/{bin,sbin,lib*}/` symlinks create confusing views of the system (`/bin/cat` and `/usr/bin/cat` are the same file), and dpkg doesn't support this situation cleanly: [#134758](https://bugs.debian.org/134758). +* it is possible for distributions to converge towards having all system files in `/usr` in finite time instead of shortcutting this migration with `/{bin,sbin,lib*}/` → `/usr/{bin,sbin,lib*}/` symlinks. The compatibility symbolic links `/lib` → `/usr/lib` and `/lib64` → `/usr/lib64` are required by the various CPUs' platform ABIs (for example i386 requires `/lib/ld-linux.so.2` to resolve to glibc's `ld.so`, and amd64 requires `/lib64/ld-linux-x86-64.so.2`) so there are no plans to remove them altogether. Similarly, removing `/bin` is not under consideration because it would break the assumption that `/bin/sh` exists, and removing `/sbin` would break the assumption that `/sbin/fsck.*` and `/sbin/mount.*` exist. @@ -65,14 +65,14 @@ These are the five possible situations at the time of bullseye (buster + 1): It can be summarized by the following table: ``` -| | Host types that are allowed | Are merged-/usr | Official packages are built on | Packages built on … can break on the other | -| Codename | classical hosts | merged-/usr hosts | symlinks allowed | classical hosts | merged-/usr hosts | classical hosts | merged-/usr hosts | -|----------|-----------------|-------------------|------------------|—----------------|-------------------|---------------------|----------------------| -| none | yes | no | no | yes | no | yes | yes | -| weak | yes | yes | yes | yes | no | no | yes | -| middle | yes | yes | yes | yes | yes | no | no | -| hard | yes | yes | yes | no | yes | no | no | -| all | no | yes | yes | no | yes | yes | no | +| | Host types that are allowed | Are merged `/usr` | Official packages are built on | Packages built on … can break on the other | +| Codename | classical hosts | merged `/usr` hosts | symlinks allowed | classical hosts | merged `/usr` hosts | classical hosts | merged `/usr` hosts | +|----------|-----------------|---------------------|-------------------|—----------------|---------------------|---------------------|----------------------| +| none | yes | no | no | yes | no | yes | yes | +| weak | yes | yes | yes | yes | no | no | yes | +| middle | yes | yes | yes | yes | yes | no | no | +| hard | yes | yes | yes | no | yes | no | no | +| all | no | yes | yes | no | yes | yes | no | ``` The current state of buster is `weak`.