On 10/10/2018 08:43 AM, Norman Wilson wrote:
I once thought of writing a paper entitled `/usr
and /etc considered
harmful,' in which I would have proposed:
I would be interested in reading such a paper.
a. It no longer matters a whit whether the
(real) root file system can fit
into a 5MB slice of the disk or the like, so just merge everything that
spilled into /usr in the tiny-disk days back into the root where it
belongs.
b. /etc is largely junk. Executables have long since moved into /sbin.
Pretty much everything else that's there belongs (according to the original
scheme, not the latter-day complications inflicted by those who didn't
understand) in /lib.
I never liked executable (think binaries vs scripts) in /etc or /lib. Maybe
it's just my ignorance.
I've never had a really good grasp on the difference between bin and sbin.
Different people have different explanations. Then there's Solaris
sym-linking /bin to /usr/bin.
(I think) I get the /{bin,lib,…} vs /usr/{bin,lib,…} vs
/usr/local/{bin,lib,…}. At least / being what's required to boot strap and
bring the system up to run level 1 (or comparable). Then /usr being the rest
of the things installed by the OS vendor. With /usr/local being where the
site would install all of their customizations.
To me, this is more about scoping of who's responsible for what and what it's
primary purpose is.
Given Norman's comments, I could see how / and /usr could be merged back
together. Then I suppose that they could be restructured to remove /usr.
Question: Where do the following things belong, if not in /etc?
· passwd / shadow
· group / gshadow
· inittab
In other words, where do system configuration files live? — IMHO they
should be separate from the location of the files the programs consist of.
Much like /con above allowing most everything else to be replaced wholesale.
Here is how I understand the current system is intended to work:
1. /sbin for binaries for use by root that must be available before the
system is fully brought up (and for an emergency copy of the Bourne
shell), which should all be linked static.
2. /bin for binaries for use by all users that must be available before
the system is fully brought up. These may be linked dynamic.
3. /lib for libraries which are needed for binaries in /bin to work, and
for kernel plugin modules in /lib/modules.
4. /usr/sbin for other binaries in the base system to be available to
root only.
5. /usr/bin for other binaries in the base system to be available to all
users.
6. /etc for global configuration files used by the kernel and the base OS.
7. /opt/PACKAGE contains a full bin, etc, lib etc. folder tree for every
non-base package (I would put almost everything here, including X Window
in /opt/X11/bin etc.).
8. /home as the base for all user folders.
(Scripts and binaries are not differentiated in this system.)
I think I would be prone to do a cleanup of the system to isolate
everything into some form of the above. Just my opinion.
-uso.