Stephen Hahn <sch at eng.sun.com> writes:
> 2.4. 'g' Prefixing
>
> Historically, introduction of GNU utilities into /usr/bin has been
> done with a 'g' character prefixed to the utility name. This
> | proposal amends this practice: the 'g'-prefixed variant should be
> provided if already introduced. In cases where another operating
> | system has provided a 'g'-prefixed variant, the project team
> | introducing an otherwise-name-conflicting GNU component may choose
> to also provide one; otherwise, additional 'g'-prefixed components
> in /usr/bin are discouraged.
>
> GNU components that do not conflict with existing or anticipated
> components in the system's default commands environment should not
> be placed in /usr/gnu, and do not require 'g'-prefixing.
I think this needs clarification: consider a GNU package like coreutils
which has both components which conflict with their /usr/bin counterparts
(like ls) and those that don't exist in /usr/bin (or anywhere else, like
seq) and thus don't conflict. I cannot believe that the proposal is to
introduce the non-conflicting tools into /usr/bin, and leave the rest of
the package in /usr/gnu/bin. Apart from being a maintenance nightmare (the
GNU packages just don't provide the infrastructure to install different
binaries into different bindirs), it takes away the possiblity to run in a
pure Solaris (i.e. non-GNU) environment (where seq doesn't exist).
My suggestion is to keep any GNU package with any conflicting commands in
/usr/gnu completely, and only introduce those with no conflicts (like CVS
or RCS) into /usr/bin, if at all. I'm not yet sure about the criteria
(apart from no conflicting components) to install a GNU package into
/usr/bin directly.
This way, you give the users a choice to work in the environment they
desire:
* A pure Solaris environment with only /usr/bin in the PATH and no GNU
commands at all, for the purists that like it this way.
* A Solaris environment with GNU additions where desirable/non-conflicting:
PATH would be set to /usr/bin:/usr/gnu/bin.
* A prefer-GNU environment with PATH set to /usr/gnu/bin:/usr/bin.
* A GNU-only environment (i.e. only /usr/gnu/bin, but no /usr/bin in PATH)
seems currently not to be possible since core commands are probably
lacking from the Free Software Directory (or don't work well enough on
Solaris). I've not really verified this, and even if true today, such an
environment might be a possiblity in the future.
As others have indicated, to support this choice of environment, it is
necessary to provide a mechanism to set a system-wide default here,
together with the corresponding MANPATH setting. Maybe the existing
/etc/profile and /etc/.login are enough, maybe we need more. I don't care
too much about this since we have a homegrown solution to this problem
which uses DNS/Hesiod and works cross-platform:
http://www.techfak.uni-bielefeld.de/rechner/rcinfo.html (in german)
But there are obviously many other existing solutions to the problem, I've
just didn't have a look lately.
Rainer
--
-----------------------------------------------------------------------------
Rainer Orth, Faculty of Technology, Bielefeld University