Subject: Re: Package Paths Proposal v2
To: NetBSD Packages Technical Discussion List <tech-pkg@netbsd.org>
From: I presume I need no introduction. <greywolf@starwolf.com>
List: tech-pkg
Date: 12/16/1998 12:03:08
Greg A. Woods sez:
/*
* However sharing /usr/share in heterogeneous networks is harder to set up
* (conceptually so, even more so, with it being under /usr) and doesn't
* really offer much value in today's environment. In reality every
* diskful server is likely to have it's own local copy of /usr/share
* anyway.
Your first point is moot. What's stopping /usr/share from being exported
from a server as it is? It's not enough of an effort to whinge about.
Your second point regarding value is also moot -- /usr/share is quite
concise and it lives on /usr as a separate filesystem (like you, I _like_
lots of filesystems :-). It has quite a bit of value in my eyes anyway.
Your third point about every diskful server being likely to have its own
local copy is a reasonable assumption. However, anyone with any reasonable
intelligence who is setting up a networked environment is probably going
to want to share /usr/share among all architectures (that _is_ the idea
of /usr/share, is it not?).
If I found myself with an unstable server, I'd probably be wont to put
/usr/share on each workstation, but that's the extent of that.
* >
* > No. If something wants to replace system binaries in /bin and /sbin, its
* > behavior is spelled out here, via the move-and-symlink item.
[or the dump-and-pkg_add procedure :-)]
I'm thinking it's simply easier to reconfigure in /etc than to replace
a system binary.
I *do* see some problems with replacing things in /usr/libexec; I don't
think the pkg system does anything with that particular directory --
at least, I haven't found it yet. This is problematic for things that
4.4 BSD expects to find in certain places, such as fingerd, rshd, et al.
* This isn't "easy" to do for some packages, esp. those that compile in
* their paths. For example GNU Autoconf coding standards don't expect a
* separate /sbin and /usr/sbin, and anyone wanting to replace a system
* binary will have to jump through extra hoops if they're using autoconf.
That's just foolishness on GNU's part, then, because even Sun uses separate
/sbin and /usr/sbin, albeit in a limited context. This is true also of
AIX, HP-UX and IRIX, last I looked.
* For example I've "autoconf'ed" a fingerd replacement. I still don't
* really know how I'd properly patch that thing to work with pkgsrc. I
* think anything that expects this to work right iwht pkgsrc will have to
* have additional gunk in the pkgsrc Makefile or some additional install
* script in the files subdir.
That's what the command line option --prefix=DIR is all about, and I believe
the pkg system will interface rather nicely with this.
* I.e. if pkg is to follow hier(7) to the letter then it must be a
* *complete* mirror and include $PREFIX/usr/sbin as well as $PREFIX/sbin.
This is a debate on semantics. /sbin and /bin live on root to make the
minimally stable bootable repairable system in the smallest possible amount
of space. /usr/sbin and /usr/bin are separated out for space considerations.
[I won't repeat my rant on why SunOS from 4.x on were stupid to require
/usr to be mounted at boot time.]
* As has been mentioned it would be *insane* for the pkg system to provide
* a solution for sharing pkg config files, but not a solution for sharing
* system config file. Anyone who *knows* what they're doing, and *still*
* wants to share *some* config files will almost always want want to share
* some system config files too, and if the pkg system provides a
* hard-coded solution to this problem it will likely clash with what they
* want to do. This requirement should *not* be dealt with here.
What I read this as saying is "pkg should not be telling us how to share
system config files". If this is what you're saying, I will deduce your
race to be human [q.v. Douglas Adams' Hitchhiker's Guide five-book trilogy].
[Personally, system config files shouldn't be shared at all -- it leads to
massive confusion if one system is to be pretending to be another. Better
to have copies in this case.]
* > Um, they shouldn't go directly under $PREFIX/sbin - talk about `littering
* > namespaces'.
I was going to say, "This is not such a horrible idea," until it dawned
on me that daemons, for the most part, should live in /usr/libexec, not
<wherever>/sbin. (Yes, they're able to be called "by hand", but don't we
only do that when we're troubleshooting...?).
[Sorry about all the 'I's in this letter; unless someone dies, here,
my experience overall won't catch up with the rest of the seasoned
veterans. However, it's come to my attention that I'm not blowing total
smoke.]
FWIW, 4.4 BSD->{Net|Free|O.*}BSD have the most sane hierarchy I've
seen. When I first read about it, I thought, "Ew. They're moving
admin binaries out of /etc and into this new place called /sbin? And
what's /var, and /usr/share? Ew." And then the light glimmered, and
it was good. :-) I've not had a second thought or indirect regret since.
* *I* don't really care about "littering namespaces" actually. I got over
* that idea way back when C permitted the same field names to be used in
* multiple structs, if not before.
Well, _someone_ had to do something sensible with programming languages.
* But anyway, who said the name of the program in $PREFIX/libexec has to
* be the same as the name of the wrapper script in $PREFIX/sbin?????
Do we USE ${PREFIX}/libexec?
* the silly fools are putting libexec directories in their PATH when they
* shouldn't be).
Bingo. (Also s/when/where/ as appropriate. Being a systems admin type,
I put /usr/libexec as the last element in my path. It's not unheard of.)
*/
--*greywolf;
--
"Come, or we shall be late." "Late for what?" "What is your name?" "Dent.
Arthur Dent." "Late, as in 'the late Dentarthurdent'."