The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: jrvalverde@cnb.csic.es (Jose R. Valverde)
Subject: [TUHS] Understanding the /bin, /sbin, /usr/bin, /usr/sbin Split
Date: Fri, 3 Feb 2012 16:22:16 +0100	[thread overview]
Message-ID: <20120203162216.504c4bb7@cnb.csic.es> (raw)
In-Reply-To: <0D449762-FD45-4528-B46E-AEA962E6B7CA@tfeb.org>

Whoa!

	I wasn't expecting this flood of comments! :-)

	Anyway, I think that I was clear: the choices about separating files
into directories, partitions, disks, network shares, etc... have always been
pretty obvious to anybody with a minimum of common sense. The only way around
them is foolishness or ignorance (or both).

	I can understand a newcomer, using a computer for his/her petty games
one task at a time and not doing much, to believe the world would be simpler
if it (or the filesystem) were flat and suited to his unvoiced personal 
expectations. This is nothing new, the machine language opcode RPM (read  
programmer's mind) is as old a joke as I can remember.

	There was a reason to separate user data from system data to avoid
the system disk from becoming unusable by a misbehaving user. There was one
to separate /tmp for the same reason (a buggy program might generate a huge
temporary file and render the system unusable for all other users). Same for
/var and out of control log files. When vendors started adding their software 
in /usr (and maintaining it) there ceased to be a standard, well known set 
of "reserved system program names" and it made sense to separate /usr/local 
for non-vendor maintained files which might have an unknown naming conflict 
(and I witnessed many at the time, not the less GNU) with "non-standard-UNIX" 
vendor additions. When LANs started to be common it made sense to share as 
many files as possible, and since executables would not be shareable on an
heterogeneous network (something most newcomers have never experienced -or
fancied) it became sensible to have /home and /usr/share separate and served
over the network. When UNIX systems became more complex and started to take 
over mainframes and get many users, it made sense to separate system programs 
from user programs, and it didn't make sense to duplicate all of them: hence 
a /bin for programs common to users and admins, and a /sbin for just admins 
(for standard system commands) and a /usr/bin and /usr/sbin (for vendor 
maintained commands and  system daemons) and a /usr/local/bin and a 
/usr/local/sbin (for locally added commands and system tools and daemons). 
/lib, /lib64, /usr/lib and /usr/lib64? Heck! that's not even enough to
ensure user programs keep on running after a system upgrade and cleanup.
I often try to keep relevant packages in their own directory and run an
automated ldd to save in their own .../lib their shared libraries before
doing an upgrade. There are binaries that haven't been updated since the
'90s and require very old libraries (or even worst, complex sources that
require various versions of the GCC toolchain). It doesn't make sense to
port them, it's easier to ensure they keep on running keeping their libraries.
And so on.

	And many of these arguments might hold today. One might argue that
since people is now tied to a vendor (Ubuntu, or RedHat, or Oracle, or HP,
or whomever) one no longer needs separate / and /usr spaces. The problem
is that would only work for newbies and occasional users, but would fail
for most other cases (large computing servers and multiuser shops as well
as tiny embedded devices, as pointed out). So, as long as systems are shipped
to run on any machine, the layout should be versatile enough to accommodate
all uses. Hence the need for maintaining these conventions, not legacy or
bureaucracy. What is shortsighted is to expect all use-cases to be like a
home user who only runs one game or, at most, his/her word-processor, 
e-mail and navigator simultaneously.

	Beyond that, the original articles and comments complained also about
directory naming (/bin /etc /lib) as "unintuitive". I fail to understand in
what way is it easier for someone new to a computer to learn a "/bin /etc /var
/lib" alien terminology and what it means, than to learn "System Config Libraries
etc..." or "Windows Windows32 Windows64 Temp Users and Settings, etc..." The
point is one needs to learn them and if you are familiar with one terminology
then to map terms, and if we are to use a standard, at least POSIX is one.

	That said, I often place everything (but /boot) in a single partition 
for single-user machines (except for power users who usually demand at least
separate /tmp and /home) and there is nothing to prevent one from making symlinks
(er, aliases for Windowers) to system directories with whatever names you like.
And I still see a need to separate the system from vendor files and from user
files (like, e.g. when you later want to switch from say RedHat to Debian). Only
a moron would ignore the risk of system files left around by vendor-specific
naming conventions.

	I said originally I could rant on and on. And I can. And add lots of
anecdotes, but I'll leave it here.

	Sorry. Couldn't resist.

				j

-- 
			EMBnet/CNB
		Scientific Computing Service
	Solving all your computer needs for Scientific
			Research.

		http://bioportal.cnb.csic.es
		  http://www.es.embnet.org



  reply	other threads:[~2012-02-03 15:22 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-31 19:16 A. P. Garcia
2012-01-31 19:27 ` Warner Losh
2012-02-01 11:12 ` Jose R. Valverde
2012-02-01 17:35   ` Warner Losh
2012-02-02 13:32   ` Random832
2012-02-02 17:24     ` Warner Losh
2012-02-02 17:36       ` John Cowan
2012-02-02 18:10         ` Warner Losh
2012-02-02 21:14         ` Dave Horsfall
2012-02-02 21:49           ` Warner Losh
2012-02-02 22:29             ` Tim Newsham
2012-02-02 22:47               ` Warner Losh
2012-02-02 22:59                 ` Lyndon Nerenberg
2012-02-02 23:33                   ` Warner Losh
2012-03-13 16:09                 ` [TUHS] ASR 37 teletype desired by LCM / Vulcan.com John Foust
2012-02-02 22:53             ` [TUHS] Understanding the /bin, /sbin, /usr/bin, /usr/sbin Split Lyndon Nerenberg
2012-02-02 23:35               ` Warner Losh
2012-02-03 11:10               ` Tim Bradshaw
2012-02-03 15:22                 ` Jose R. Valverde [this message]
2012-02-03 16:06                   ` Ronald Natalie
2012-02-03 16:09                   ` Steve Nickolas
2012-02-02 17:40       ` Warner Losh
2012-02-02 18:02     ` Tim Newsham
2012-02-02 13:45   ` Tim Bradshaw
2012-02-01  9:26 arnold
2012-02-02 13:35 ` Tim Bradshaw
2012-02-02 13:49   ` Larry McVoy
2012-02-02 23:16 Norman Wilson
2012-02-02 23:37 ` Carl Lowenstein
2012-02-02 23:58 ` John Cowan
2012-02-04 19:34 Pepe
2012-02-04 21:05 ` Lyndon Nerenberg
2012-02-05  8:38 Hendrik Jan Thomassen
2012-02-05 10:13 ` Jaap Akkerhuis
2012-02-05 17:15 ` Warner Losh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120203162216.504c4bb7@cnb.csic.es \
    --to=jrvalverde@cnb.csic.es \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).