> [T]his is a misleading writeup of a Debian-internal announcement. One specific action that is mostly internal to Debian, which some developers wanted to push ahead with after the bookworm release, has been paused.
> On a merged-/usr system (which will include all Debian 12 and Debian 13 systems, both new installations and upgrades), both /bin/cat and /usr/bin/cat exist, but dpkg is only aware of one of those paths (/bin/cat in this case); in dpkg jargon, the other is said to be an alias. The specific action that should not proceed until further notice is: swapping the path that dpkg considers to be canonical, for example from /bin/cat to /usr/bin/cat.
In particular, the thing that this announcement pauses is only a shuffling of internal metadata. For users, /usr will already look merged either way.
The other bit of context is that this "pause" comes as Debian approaches its next major release, and they expect to unpause it shortly after that.
What's the motivation of moving /bin to /usr/bin? What is gained? What is lost?
Solaris implemented the core part of the /usr merge 15 years ago already, and completed it with the introduction of Solaris 11
But more generally, Sun had a lot of smart people that cared deeply both about the *NIX Desktop and the general user experience. A trip through the PSARC archives[1] will show that things like the /usr merge were carefully considered and reasoned about. Some of those people are still working on Solaris today, although sadly, I'm no longer one of them.
The Linux and BSD folks should take advantage of the good things that Sun left behind and carry them forward wherever possible.
DISCLAIMER: I'm a former Solaris Principal Software Engineer so slightly biased ;)
My "bad timing" comment was in reference to Sun getting sold in 2010. As an IT focused college kid, I realized there wasn't much value in learning Solaris system administration. That doesn't mean it didn't have amazing things as an operating system!
/usr/bin only existed because of fast small mainframe hard drives and slower larger hard drives.
I don't understand why the direction is the way it is thou. getting rid of /usr/ seems like it would make more sense.
And init binary in /usr is complete braindeadness...
Also MS behind anything means they are trying to get rid of your options, eg by complicating things into "enterprise level" and keep pushing windows as userware.
But there is other possibility: minimal root that is easy to manage, switch, etc. etc. and rest of the system :)
Wasn't that basically a historical accident? IIRC in very early UNIX, "/usr" used to be like the modern "/home", but they happened to have a big disk for that mount and started putting system files there.
/usr doesn't mean "user". It means "User Software Resources". I learned this from a good friend whose 70+ years old, and worked with Ritchie. My friend is also cited in K&R C.
/usr/bin and /usr/sbin should have always been the place to put "user software resources". And we're finally getting back to what it was originally.
I don't get the proposed benefits?
It's the systemd gangs don't want to support the standard directory hierarchy and force every distro to migrate.
Debian is among the last to do these changes.
> The merged directory /usr, containing almost the entire vendor-supplied operating system resources, offers us a number of new features regarding OS snapshotting and options for enterprise environments for network sharing or running multiple guests on one host. https://www.freedesktop.org/wiki/Software/systemd/TheCaseFor...
And indeed, with systemd one can boot a whole system from practically any unpopulated root mount with a /usr image mounted on it.
Want to OS upgrade? Swap /usr & try it. /etc and /home and the other directories might have instance specific content, but the OS image is nicely set away & swappable in /usr. And one should be able to keep the same "instance" while swapping the image. It containerizes the OS image, separate-ish from the OS instancd, whereas before the OS was somewhat amorphously sprawled across multiple top level directories. It's a huge boon to manageability.
Will it at least lead to the removal of /sbin and /lib?
This is fixable: it only truly matters for /sbin/init, but it's nothing than can be fixed in a minute with the right kernel cmdline.
For the rest, a regex could replace /sbin by /usr/sbin in the package files
> /lib is expected to stay since the LDSO path for dynamic linking points there, removing it is not possible without breaking the ABI.
Maybe it's time to do that too? Android does just fine without /lib. Only the linker needs that, and changing the path to ld-linux should just require a kernel tweak.
But breaking the ABI could also be the opportunity to bring in android improvements, like the linkerconfig or namespaces!
NixOS has also reduced "/usr/bin" to containing only a "/usr/bin/env" symlink and "/bin" down to just "/bin/sh".
So, why not apply the same philosophy to any other linux distro? Well, debian or ubuntu or whatever has plenty of user-written bash scripts, aliases, etc that are _not_ managed by the package manager, and would promptly explode with that change, causing people to switch distros, never upgrade, and probably write angry articles online.
There's plenty of sites that let you download and install a deb which isn't in debian's packages (i.e. chrome, zoom, slack) which would also all break. There's third-party package managers, like steam (which downloads and runs executables) which would also break.
Of course they won't do that, they don't want to piss off their users for minimal benefit.
NixOS has just accepted that "download zoom-installer.sh" or whatever does not and will never work on their distro, and people deal with it. Other distros are unlikely to make that choice.
Android has ensured those also never work by limiting people to just the app store. In a sense, ubuntu + snaps is trying to do that for their distro, but it's neither been that well received, nor making quick progress.
/bin/bash will be as well because /bin itself is a symlink to /usr/bin.
Though that’s a very dumb shebang to use and you should be ashamed: lots of systems don’t have it, or have an absolutely ancient system bash. By hard coding this you’re just making your scripts worse.
Where? POSIX says:
Applications should note that the standard PATH to the shell cannot be assumed to be either /bin/sh or /usr/bin/sh, and should be determined by interrogation of the PATH returned by getconf PATH, ensuring that the returned pathname is an absolute pathname and not a shell built-in.But the issue I’m talking about is using the specific path /bin/bash, as that just reduces compatibility compared to going through env.
the /usr/bin/env bash thing always just seemed like pointless cargo culting to me. never had this problem