RFC: Alternate patch to have true new-style rc.d scripts in ports (without touching localpkg)

Jeff Fisher jeff at jeffenstein.dyndns.org
Mon Aug 16 22:45:24 PDT 2004

Hash: SHA1

On Mon, Aug 16, 2004 at 11:15:01AM -0700, Kevin Oberman wrote:
> > Date: Mon, 16 Aug 2004 13:40:10 -0400
> > From: Christopher Nehren <apeiron at comcast.net>
> > Sender: owner-freebsd-current at freebsd.org
> > 
> > --/04w6evG8XlLl3ft
> > Content-Type: text/plain; charset=us-ascii
> > Content-Disposition: inline
> > Content-Transfer-Encoding: quoted-printable
> > 
> > On Mon, Aug 16, 2004 at 11:56:53 EDT, Mike Makonnen scribbled these
> > curious markings:
> > > I have thought about this considerably, and I think the best solution
> > > is to have ports rc.d scripts installed to /etc/rc.d. One of the problems
> > 
> > Please, no. This is in direct violation of hier(8), POLA, the concept
> > of separating third-party packages from the base system, and it also
> > pollutes the concept of a lean, clean, vendor-provided / file
> > system. One of the things that I love about FreeBSD is that it doesn't
> > make a mess of the base system like Linux does. If I wanted the mess
> > that putting port scripts in /etc/rc.d would cause, I'd use Linux.

I'd have to agree.  Startup scripts are generally the exception on other unixy
o.s., but this does not look like a good direction.  First, startup scripts
are sourced, and now they are moved into the root filesystem.  Soon,
they'll be installed under /usr...

Someone else has already asked what benefit this sourcing gives, but they went
unanswered, so I'll try again. :-(

> There are many local system mods that require configuration files and/or
> scripts be available prior to mounting of any file system.
> I do like a separation of local stuff, but it really, really should be
> in the physical root partition. (And I oppose the use of symlinks, as
> well. That's really ugly!)

The problem is that all of the ports require /usr/local (or /usr/X11R6) to be
available before they can do anything.  Putting their startup scripts in /
won't add Jack over the existing system.

Just to go off onto a bit of a rant, I originally chose FreeBSD over Linux for
just a couple important reasons: it was stable, and it had this great ports
tree.  One of the great things about the ports tree was that it installed
stuff seperately from the OS.  With linux, everything gets put into /usr, and
you don't know what you've added afterwards.  With FreeBSD, it's added in a
seperate package, and in a seperate directory; all very clean, and much closer
to commercial unix versions.  Commercial unix versions are like this for a
reason: manageability on the large scale.

Also, stability could be threatened with the recent change to source ports
scripts instead of run them.  Now a mistake in a ports script can cause all of
the following ports to not start, leaving a half-running system.  With the old
system of running ports scripts, if there is an error or a problem introduced
by a local modification of a port startup script, it affects only that port.
If the objective is to simplify writing startup scripts, could the sourcing
not have been in the opposite direction?  Why not just supply a script with
common functions, and have the ports scripts source this common script?  This
accomplishes the same task without sacrificing stability.

And now, I see that the seperation of ports from the base o.s. is also being
threatened.  Not greatly, but moving the startup scripts now, and later some
config files, and then why not move the binaries?  It'll only break a few
sites stupid enough to run nfs-mounted or rsynced /usr/local...

Pardon me if I've gone too far, but I love the O.S., and only want it to
remain the same O.S. I chose to use and advocate so long ago.

- -- 
jeff at jeffenstein.dyndns.org     http://jeffenstein.dyndns.org/
PGP encrypted mail preferred.   Key id 0x19C987F5
Hanlon's Razor: One should never attribute to malice that which can 
be adequately explained by stupidity.


More information about the freebsd-current mailing list