Subject: Re: packages outside of /usr/pkg (was: Re: PROPOSAL: Move /usr/pkg/etc
To: Charles Shannon Hendrix <shannon@widomaker.com>
From: Richard Rauch <rauch@rice.edu>
List: tech-pkg
Date: 05/24/2002 15:49:42
> > Yes, I meant to mention, e.g., tetex's installation of fonts in /var as
> > something that irks me.  Fortunately, my / partition has much more space
>
> I think that it's been the norm for programs likd TeX to use /var for
> generated files like fonts for some time.

I don't know when TeX was changed.  I do fairly clearly recall that it
used to default (under pkgsrc) to sending fonts to someplace in /usr/pkg.


> I don't think I would want TeX putting files like that in /usr/pkg,
> that would wreck things for me.

Why?  Can you elaborate?

(Question: Do you have your X fonts in /var?  If not, why the difference?
Once you have the bitmaps of the TeX fonts generated, they become
effectively permament parts of your system; they aren't transient unless
you make a special effort to clean them out yourself from time to time.
Just like X fonts, once the bitmaps are installed, they are there
``forever''.)

(Similar question, if you have installed, or were to install, programs
like KDE that have numerous little clipart-icons and sound effects: Do you
want those to go in /var?  If not, why not?)


> I think sometimes that being strict about the /usr/pkg prefix results
> in some stupid things happening.  /var is supposed to be for things like
> TeX fonts, and shouldn't be in your root either.

Can you exxplain what you mean by ``things like TeX fonts''?  I mean, if
that was the *definition* of /var, then of course TeX fonts would belong
there.  Here's what ``man hier'' tells me about /var's philosophy in
NetBSD:

  /var/  multi-purpose log, temporary, transient, and spool files

That's a pretty good approximation to what /var means to me.  TeX fonts
aren't log files.  They are *not* temporary/transient.  They are not
spools.  Also, they don't vary (as someone suggested ``/var'' was supposed
to mean).  And they aren't scratch-pads (unlike TeXDraw or index files
that you may produce in a TeX run---and *those* end up in the current
dir).  Also, it's easy to see reasons why you might want to share TeX font
bitmaps (direct access to printers that do their own spooling; previewing
in xdvi; creating PostScript or PDF files to distribute).  /var (I
believe) is a very system-specific, system-private directory; TeX font
bitmaps might very well be shared.

IMHO, TeX fonts are completely unlike anything that should go in /var.
Compiler temporary files would make more sense there than do TeX fonts.


So, without simply defining /var to contain ``things like TeX fonts'', can
you say what /var is for and why TeX fonts belong there?  What qualities
do TeX fonts have that make them suitable for /var?  What do they have in
common with print spools, mailboxes, /var/run files, etc?  (I assume that
you also want all of those other files in /var...(^&)


And /var *IS* in root.  That's how NetBSD sets up the system by default.
(At least on NetBSD/i386.)  If you overrode that standard configuration,
that's fine for you.  But IMHO pkgsrc (at least when building for NetBSD)
should do sensible things for NetBSD's standard behavior.  /var on root,
and a small root are standard matters in NetBSD, so setting up something
like TeX to dump huge amounts of data (automatically, and necessarily for
normal function) to /var is a bad default. If /var-on-small-root is a
terrible idea, then why do we do it?  If it's a good idea, and is not
port-specific, then it's a *terrible* idea to dump huge, permament data
files to /var.


> I don't like the Windowsian idea of packages using their own
> <prefix>/<package> directories for /var type files.  /var is
> there for that sort of thing IMHO.

That's okay.  We aren't talking about moving /var files up to top-level
directories.  You're the first person to mention doing that.  (^&

But we *do* have /var on root, so putting TeX fonts in /var means putting
them on your root partition as the default.  That seems quite wrong.


> I know, this is partially a case of "it's always been that way", but I
> think there are good reasons for using /var the traditional way.

There may be.  But those good reasons may no longer apply.  Or things like
sending huge fontfiles to a /var may have come from other systems where:

 (a) /var *isn't* normally part of your root partition.

or

 (b) Your root is a huge partition (I gather that GNU/LINUX tends to
     do this, and GNU/LINUX types coming to BSD mistakenly twiddle
     down /usr and boost the root partition when first installing
     BSD, causing them pain when they realize that not all UNIX
     like filesystems are laid out with the same philosophy).

That's not to say that there can't be any good reasons for putting 20+MB
(and growing) of permamant, non-varying data files in your root partition
for an application.  I honestly can't see any good reasons offhand,
though, so asserting their existence doesn't help me understand.

However, TeX wasn't created for NetBSD, so just because it likes /var for
its font directories doesn't necessarily make it a good thing to do for
us.


> There are benefits to keep a package's file together, but there are also
> benefits to using a common area for variable data as well.
>
> Let's at least talk about the pros and cons before cleaning out /var.

Since TeX is really *the* offender (there are others, but they are
negligible standing in TeX's shadow), I'm going to focus on TeX.  I'm not
only partially concerned with the basic idea of putting pkg files in the
pkg directories.  I find it more offensive that the TeX fonts in
particular really don't belong in /var.  And on some systems, it could
cause a nasty surprise when your root partition fills up.

Pros for having these moved:

 * /var is on root, and root is a small(ish) partition on NetBSD,
   both by convention.  (I assume that /var-on-small-root isn't just
   an i386 port convention.)

 * Font bitmaps have none of the characteristics ascribed to /var
   files in man hier.

 * They also lack secondary attributes (variability, sharability etc.) not
   listed in the man-page but ``reasonable-seeming'' for /var files.  In
   fact, the only TeX files that would be suitable for going in /var
   (or maybe /tmp) get stuck in the current directory instead.

   In particular, the sharability of font bitmaps seems drastically
   out of step with everything else in /var.

 * Moving TeX fonts to the pkg dirs puts like stuff with like stuff.

 * It emulates the convention that, e.g., X fonts go with X rather
   than in /var.  The same for all of the little icons/sounds used
   by KDE and others.

   I don't know what argument could exist (on merit) for putting
   X fonts in /usr, with X, but putting TeX fonts in root, with
   /var files.  Whatever argument you can come up with for isolating
   TeX fonts on merit, should apply to X fonts, and vice versa.

   (This is a bit tangled up in the previous point.  I'll leave it
   as it stands.)

 * TeX itself supports configuring the location of these, so it's
   not a violation of TeX's design or principles, recognizing that
   the default use of /var isn't always a good idea.

Con's that I can think of:

 * It's the present default, and no one likes change.  (I'm not
   being flip here.  I really do realize that people generally
   dislike change.  It's a real con, though not a terribly strong
   one in the face of merit-based pro's...)

 * It *can* be worked around, if you remember to reconfigure TeX
   everytime you install it, and/or put in a symlink.  Or you
   can ``work around'' the problem by just making your root huge
   (an effective default on more modern disk drives; root
   scales up and you don't really care where a 20MB ``droplet''
   of data goes).

   This isn't the *right* way to do it; it's a hack/workaround.
   But it does mean that the situation isn't beyond hope.

 * Most people running TeX on NetBSD probably either have a ``modern''
   system with enough disk space that root is huge (hinted at above),
   or they have already run into the problems of /var-on-small-root
   and have worked around it in some other way.  Newcomers will
   *probably* *mostly* have huge disks in the future and won't
   care.  Hence, while it could be viewed as an unfortunate
   error to put them in /var by default, it's not a practical concern
   anymore.  (This isn't a con to making the change, really, but is
   a rationale for not bothering with it.)

   (Another case partially tangled up with a previous point.  (^&)

   In my mind, this is perhaps the strongest counter-argument.
   It effectively says ``the point is now pretty much moot in practice, so
   we can ignore the question of whether it ever was a good idea.''


I've probably missed some pro's, and even more con's (since I have a
biased view), but that's what comes to me offhand.  (^&

What do you think I've missed, or misunderstood, in this list of pro's and
con's?  (I *must* have missed something, since you sad that it would
``wreck things'' for you if TeX fonts were by default put in /usr/pkg.
None of the above seems to qualify as wrecking anything for anyone...so I
must have missed at least one con.)


  ``I probably don't know what I'm talking about.'' --rauch@math.rice.edu