← Back to context

Comment by behnamoh

4 days ago

This is what happens when a system is designed by multiple people and companies over a long period of time. An amalgam of ideas which are there just because. There's no reason Linux should be like this. e.g., see https://gobolinux.org/ which has more sane dirs.

Linux does not use this split any more. Many of these dirs were merged back together. The "/usr merge" was adopted by Debian, Ubuntu, Fedora, Red Hat, Arch Linux, openSUSE and other major distros:

https://itsfoss.gitlab.io/post/understanding-the-linux--usr-...

`man file-hierarcy` defines modern Linux filesystem layout.

https://www.man7.org/linux/man-pages/man7/file-hierarchy.7.h...

  • Question: why did they decide to make /usr/bin the "primary" and /bin the symlink? Methinks it should have been the other way around as was the original Unix design before the split.

    Also the first URL is serving me scam popup ads that do a crap job at pretending to be android system alerts. Next time please try to choose a more reputable source.

    • There is some logical grouping. Everything under /usr is "executables+libraries+docs, mostly immutable" so there is some logical grouping.

      Whereas /etc is for configuration and /var is for mutable data.

Oh, that's an awesome idea to get rid of those awful splits and focus on apps! Scoop package manager on Windows works the same way. Though it has a few issues when some security apps ignore "current" symlinks (and don't support regex for versioned paths), and then versioned dirs bite you when versions changes. Wonder whether this distro has similar issues and whether it'd be better to have the current version a regular dir and then the versioned dir a symlink

> Standards bureaucracies like the Linux Foundation (which consumed the Free Standards Group in its' ever-growing accretion disk years ago) happily document and add to this sort of complexity without ever trying to understand why it was there in the first place.

this is the reason in my opinion and experience

as a lead dev in a rather complicated environment I tended to solve the problem many times where some identifier was used. short deadlines and no specification made us solve the problem quickly, so some shortcuts and quick actions were done. this identifier gets asked about later and super overcomplicated explanations given as a reason by people that don't know the history.

...and the history is often like 'they mounted stuff to /usr because they got a third drive'. and now, people even in this thread keep giving explanations like it's something more.

gobo's a neat idea. I for one really like that its package management can have multiple packages without conflicts etc.

I think the only other I can think of like this is probably nix or spark and nix really wants to learn a new language so it has some friction but nix is a neat idea too

I think not many people know this but how tinycore packages work are really fascinating as well and its possible I think to have this as well by just downloading the .tcz and manually running it since it actually mounts the code to a squashfs mount loop, I am not familiar with the tech but removing applications and adding them can be just about as easy as deleting and adding files when one thinks about it.

Does anybody know some more reference pointers to a more smooth/easy way of not having to deal with dependency management etc.

I think that mise for programming languages is also another good one. Appimages/zapps are nice too for what they are worth. Flatpak's a little too focused on gui section for my liking though. Its great that we have flatpak but I dont think its just the right primitive for cli applications that much

Not really, back then disks were very expensive and you had no choice but to split. And disk sizes were very small.

But, I in a way int kind of makes sense.

/bin and /sbin, needed for system boot. /usr/bin and /usr/sbin for normal runtime.

's' for items regular users do not need to run, remember, UN*X is a multi-user system, not a one person system like macs, windows and in most cases Linux.

  • I really should write that "Yes, Virginia; executables once went in /etc." Frequently Given Answer.

    Because it was /etc (and of course the root directory) where the files for system boot and system administration went in some of the Unices of yesteryear. In AT&T Unix System 5 Release 3, for example, /etc was the location of /etc/init, /etc/telinit, and /etc/login .

    sbin is actually quite complex, historically, because there were a whole lot of other directories as well.

    * https://jdebp.uk/FGA/unix-path-and-personalities.html

  • > /bin and /sbin, needed for system boot. /usr/bin and /usr/sbin for normal runtime.

    Nowadays most Linux systems boot with initramfs, that is a compressed image that includes everything the system needs to boot, so you're basically saying /bin and /sbin is useless.

    • > initramfs, that is a compressed image that includes everything the system needs to boot

      Not always (raise your hand if you've had an unbootable system due to a broken or insufficient initrd).

      In retrospect, the whole concept of the initrd seems like an enormous kludge that was thrown together temporarily and became the permanent solution.

      5 replies →