Rusty Russell's Coding Blog | Stealing From Smart People

Jan/12

28

Why Everyone Must Oppose The Merging of /usr and /

As co-editor of the last edition of the File Hierarchy Standard before it merged into the Linux Standard Base, I’ve been following the discussion about combining the directories  /bin, /sbin and /lib into /usr/bin, /usr/sbin and /usr/lib respectively.  You can follow it too, via the LWN discussion.

To summarize, there are two sides to the debate.  The “pro” side points out:

  1. Nothing will really change for users, as symlinks will make old stuff still work.
  2. There are precedents in Solaris and Fedora.
  3. The weak reasonings used previously to separate / and /usr no longer apply.
  4. Separate /usr has become increasingly unsupported anyway.
  5. Moving to /usr will enable genuine R/O root filesystem sharing.

The “anti” side, however, raises very salient points:

  1. Lennart Poettering supports it.
  2. Lennart Poettering is an asshole.

Fellow Anti-mergers, I understand the pain and anguish that systemd has caused you personally, and your families.  Your hopes and dreams crushed, by someone with all the charm of a cheese grater across the knuckles.  Your remaining life tainted by this putrescent subhuman who forced himself upon your internet.

Despite the privation we have all endured, please find strength to stop this nightmarish ravaging of our once-pure filesystems.  For if he’s not stopped now, what hope for  /usr/sbin vs /usr/bin?

RSS Feed

35 Comments for Why Everyone Must Oppose The Merging of /usr and /

Jan Schmidt | January 28, 2012 at 4:01 pm

Nice! I like the way you neatly summarised all the conflations into 2 sauccint “Anti” points. I was disappointed that you didn’t mention Pulseaudio or avahi though.

Random | January 28, 2012 at 5:42 pm

Ad hominem.

Simon | January 28, 2012 at 6:54 pm

Wouldn’t it be nice if people made an effort to inform themselves, before opening their mouths about subjects they don’t understand? Alas, too many just react to what everyone else is saying, without checking the facts for themselves.

respectfully anonymous | January 28, 2012 at 7:19 pm

troll.

Guest | January 28, 2012 at 9:01 pm

Take it easy. That’s just rude and does nothing to support your cause.

Or was this meant ironically?

Neil | January 28, 2012 at 9:13 pm

This has all been foreseen.
George Bernard Shaw put it so well:
“The reasonable man adapts himself to the world. The unreasonable man persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man.”
Lennart Poettering is clearly unreasonable, and clearly progressive.

SK | January 28, 2012 at 9:24 pm

/usr/sbin-to-/usr/bin was delayed to the next release. So don’t worry, hope is already lost.

The other arguments against were:
- Last time “doing how Solaris does it” was used as a reason was by Jörg Schilling (an asshole of cdrecord fame).
- Resistance to change.

I’d also raise two:
- If split-usr broken, merged-usr doesn’t fix it. It just makes it impossible.
- Picking files from a pool of thousands (like /usr/bin) is already painful. Don’t just pool stuff there, implement shell-level program categories!

Anonymous | January 28, 2012 at 10:22 pm

It took me entirely too long to figure out that you were being sarcastic, probably because I’ve seen posts which look almost exactly like this but which were meant with 100% sincerity.

Bastien | January 28, 2012 at 10:35 pm

That’s funny, but I enjoy Lennart’s contributions to Linux more than yours.

Guest | January 29, 2012 at 1:25 am

^^^ooh, lennart’s fellow assholes to the rescue

Kay Sievers | January 29, 2012 at 2:06 am

As a co-author of Fedora’s last edition’s /usr-merge, I’ve been following the various comments on the internet. To summarize this post: It’s just the best I’ve seen so far. :)

Guest | January 29, 2012 at 6:48 am

ooh, Lennart’s fellow assholes to the rescue

sahlberg | January 29, 2012 at 8:23 am

systemd is broken, so instead of fixing it we break /usr instead. amazing.

and sure, if they can not understand why separate / and /usr is a good thing, there is no hope at all that separate bin vs sbin will survive.

next will come the sorely needed cleanup of runlevels.
no one ever uses anything other than runlevel5 and if they do they are wrong.
get rid of the runlevel concept completely and make the current 5 the only runlevel.

your box cant boot into a full desktop? tough. reinstall from cd and try again. that has been tried and tested over time on windows for a ling time so lets adopt that too.

(this insanity does not apply to debian right?)

Sul | January 29, 2012 at 9:57 am

He broke my audio some years ago, but now it works again! With 5.1 surround, to do it with ALSA is complicate.
I support this move, for and unified file structure! Will have to light a joint to celebrate.

Gustavo Sverzut Barbieri | January 29, 2012 at 10:05 am

BEST POST EVER!

I’m following systemd even before it was publicly announced. I have tried to fix the boot issues myself for a long time, but I’ve considered it a “lost cause”…

Fortunately there are brave men like Lennart and Kay that fight the cause, both technically and the various trolls that try to block the progress.

Really, during my review of boot scripts my mind did blow with so many “WTF?!”. Asking around, all I could find was “It was like this because in 93…” or “Nobody knows, it’s like that forever and nobody dares to change it” and so on.

People that claim split / and /usr is working now are stupid, if they were any technically clever they would see it was NOT working. They were just pointed it out and instead of investigating, they babbling!

Al Tobey | January 30, 2012 at 4:55 am

Trollol.

I really couldn’t tell where you were going until the anti list ;)

While I’m not totally sold on the size & scope of systemd, etc. (running it on my Arch workstation now to see how it goes), I’m positive it can’t be any worse than Upstart, so let’s see what happens.

Awesome Window Manager Review | Jupiter Broadcasting | January 30, 2012 at 9:54 am

[...] Why Everyone Must Oppose The Merging of /usr and / [...]

Stuart Longland | January 31, 2012 at 12:50 pm

I think there’s room for a little balance here.

Some of the points raised though:

> Nothing will really change for users, as symlinks will make old stuff still work.
> There are precedents in Solaris and Fedora.

Just because others do it doesn’t make it a good idea. Yes, Aboriginal Linux does `ln -s /bin /usr/bin` etc too.

What next? Will people suggest we just decide to put each application in a separate directories beneath /Applications because of what Apple and Microsoft do?

> The weak reasonings used previously to separate / and /usr no longer apply.

As I recall, the last explanation I saw for this was that in the early days, /usr was for users (i.e. home directories), not user binaries. However, someone ran out of space on /, so stuff moved in to /usr.

> Separate /usr has become increasingly unsupported anyway.
> Moving to /usr will enable genuine R/O root filesystem sharing.

Which can be done regardless. / can be read-only, it’ll work just fine. The catch is making sure the bits that *need* to be writeable, are made writeable, which isn’t terribly difficult either.

DS | February 1, 2012 at 3:22 am

Separate /usr, no initramfs, Debian testing. Works well enough for what I need. Short of hardware replacement, I’d quite like that to continue without having to repartition or use an initramfs.

For me, when I move to bigger disks, that’s the time to change things (and I’ll still continue without initramfs). Not before.

Anonymous | February 2, 2012 at 3:51 pm

@DS: Then don’t upgrade; your configuration will continue to work acceptably with the version of Linux you currently have installed. Don’t expect further progress to halt just to allow you to keep your unusual and now-unsupported configuration. An initramfs will keep your use case working; why do you desperately want to avoid one?

DS | February 3, 2012 at 6:53 am

Upgrading will happen anyway as a consequence of using testing. I don’t see the point of an initramfs when you’ve built your own kernel, customised for given hardware, and made sure that what’s required at boot is compiled into the kernel. By doing that, I’ve eliminated the need for an initramfs.

This requirement for /usr much earlier is therefore breakage, not progress; I consider it to be a bug. Either udev will be fixed, or it’ll be held at the currently-installed version.

Yes, this change simplifies some things; but it throws away the distinction of what’s needed at boot and, potentially, allows for much more to be needed at boot. Is this really such a good thing? I predict some sloppiness and boot bloat as a result, and I hope that I’m wrong about that…

Mantas | February 10, 2012 at 2:29 am

I’d be laughing if not for Poe’s law…

A. Nonymous | February 12, 2012 at 1:16 am

I’ve been using separate / and /usr for decades and it is still working. As such I don’t understand “it’s broken already” claims at all. And I don’t even need an initrd for that…

Anyway, supporter’s point 3 needs some detailed explanation. IMO that claim is ridiculous.

Supporter’s claim 5 is even more ridiculous. It seems to target some very specific KVM setups that are not relevant for bare metal deployments.

Needed Quote | February 15, 2012 at 6:49 am

“It’s important to consider the timeline here. Separate /usr was
accidentally broken by a sudden increase in dependencies from base
system packages to desktopy things. It was only later that certain
people decided that “oh, separate /usr is a bad idea anyway”, and they
did so because they couldn’t figure out how to fix the mess they’d
caused. This is very much a case of carelessly letting the horse escape
and then trying to convince everyone that no-one needs a horse anyway…”

— Ciaran McCreesh

mcortese | February 17, 2012 at 1:02 am

@DS: while I’m not a pro-merger myself, I don’t think that “I don’t want to repartition” makes for a good reason to oppose it.

@rusty: brilliant! I’d candidate it for LWN’s quote of the week.

Luca Barbato | February 29, 2012 at 12:15 am

The key problems that caused people pushing for this merge are known and sum up to “systemd needs stuff we have in /usr and we cannot figure out any better”, then the following question is figuring what systemd is supposed to solve that hadn’t been solved already by launchd, openrc and upstart without requiring layout changes.

Given that openrc provides all the features that aren’t sore bugs (e.g. socket management) and it is way simpler I really wonder if marketing is really taking over linux.

Xake | March 4, 2012 at 10:08 am

I cannot still see why the **** people always gets confused over this, and blames systemd!

A separate /usr is not broken. Trying to boot a system without /usr being avaible at boot time (or at least when udev runs) is.
That is one bug in itself.
It has *NOTHING* to do with moving stuff into /usr.
It has *NOTHING* to do with systemd.

Gentoo bugzilla has a bug (bug #364235) about how on a system running OpenRC udisk fails to pick up that there are LVM-LVs on the system, only because the way udev works. udev process rules. These rules runs probers. These probers are supposed to add metadata to the udev database. So the rule gets processed. It runs the prober. The prober fails. The rule thinks that means that the prober found no device it could handle, so it just has no metadata to add to the udev database. So the rule returns that it was processed all right to udev. When in fact the prober failed because of a missing /usr/lib64/libglib-2.0.so.

Believe me. I know that bug. I filed it. I debugged it. And I found that there are many packages that had failing probers on my pretty standard GNOME system (where many of the packages like libmtp are shared across DEs, including udev itself with the prober udev-acl).
My bugreport will soon see its first birthday. And it was made in an attempt to outline the problem behind a lot of older bugs. So when this discussion started I hoped it would lead to a constructive discussion, which either a) made patches appear fixing the behavior of udev and associated tools or b) made tools appear and documentation rewritten so people are aware of how to avoid surprises when using a separate /usr.

So it feels like people tries to fart in my face when they just hangs their WORKFORME-ignorance all over the place, insists on how these broken things ain’t broken (or are they all running devfs/static dev?) and I just wait to hear them explain how not being able to access my mtp-using portable musicplayer without running “udevadm trigger” first is a feature…

SynFlag | March 5, 2012 at 4:36 pm

Systemd is broken, and IT is all.
The / and splited /usr work actually very fine on *BSD. So, @Gustavo Sverzut Barbieri, what is the problem with Init and / /usr ??.
Well, the reason for introducing /usr is indeed historical, the Unix folks didn’t have a HDD at all, but floppies…
Needless to say, there was very little room on floppy 1.
But /usr has found its uses since and I don’t see what discontinuing it accomplishes.
If systemd is broken, fix it!.

Moving to Debian or Gentoo, or another Unix-Like and NOT Windows-Like

http://hackingthesystem4fun.blogspot.com/2012/03/usrmove-la-mentira-usrmove-lie.html

D.Q. | March 8, 2012 at 8:40 pm

I like your summary!

I wasn’t aware of the debate or pro/cons points so I went and read up on the latter, “Ken Ham” links are most illustrative. I suppose the fundamental dilemma is whether linux should (pro) work for very many or (cons) be very malleable.

While the battle rages on and I guess it started long ago, Mac OS X already got very elegant application packaging mechanism.

C-- | March 8, 2012 at 11:06 pm

Wait, wait, wait… did someone just cited the retarded gentoo troll who almost destroy that distro from inside? jajaja! EPIC!.

Author comment by rusty | March 9, 2012 at 11:53 am

Wow, I learned something (Poe’s Law). Thanks!

William Peckham | March 9, 2012 at 2:43 pm

I love the way you write. It tickles my brain.

“Just because something works, does not make it correct.”

There SHOULD have been a standard (or at least some useful guidelines) about the use of /*in vs /usr/*in from far back. We did not make it clear and are paying the price. How exactly does jamming everything together “fix” anything? How is that better than using /usr/bin, /usr0/bin, /usr1/bin, /usr2/bin, usr3/bin, on out to /usrZ/bin? (Other than to drive me crazy: either plan will serve that purpose quite well.)

The more correct process would be to define what the folders are for, rule for determining what SHOULD go in each (and what should not) and start pushing our packages and distributions into correctness.

My first two rules, if I had any say in that process, might start out looking like this:
1. Anything ALWAYS required for a complete and successful boot should NEVER be under /usr.
2. Anything NEVER required for a complete and successful boot should ALWAYS be under /usr.

From there I suspect it would get messy and political. What fun!

Steffen Schaumburg | April 6, 2012 at 10:10 am

Let’s look at your points one by one:

There are precedents in Solaris and Fedora.
So what? That’s to placate objections that it’s possible, it is no indication that it’s useful.

The weak reasonings used previously to separate / and /usr no longer apply.
The reasoning that Lennart is allegedly an asshole or that he supports the migration? I also don’t see how either of these issues matter (and I make no comment on Lennart personally). I also don’t see why the original reasons matter to be honest, since new reasons have come up.

Separate /usr has become increasingly unsupported anyway.
Works perfectly fine on two systems I administrate.

Moving to /usr will enable genuine R/O root filesystem sharing.
Great. What’s the point when there is nothing left on /?

So, basically, you concocted a list of irrelevancies in support of the move, and a personal attack on the opponents of it is your list of reasons against it. If this is the best you can come up with I can certainly see why people ignore you.

Steffen Schaumburg | April 6, 2012 at 10:15 am

Oops missed the first one:
Nothing will really change for users, as symlinks will make old stuff still work.
Illogical, if nothing would change nobody would care. Nothing may change _directly_ for users, much like firing 90% of maintenance staff of an airline doesn’t. But there’ll still far more delays and crashes as a result.

Nagilum | May 21, 2013 at 7:59 pm

HP-UX has had /bin and /lib symlinked to /usr/ at least since 11.23 which was released about 10 years ago.

Leave a comment!

«

»

Find it!

Theme Design by devolux.org

Tag Cloud