keeping distros and admins off of each other's toes

[email protected] (Paul Jarc) Fri, 06 Feb 2004 14:06:48 -0500
Newsgroups gmane.comp.djb.package
Organization What did you have in mind? A short, blunt, human pyramid?
Message-ID <[email protected]>
There is one issue which the traditional filesystem layout handles
well, and which has not been explicitly addressed for slashpackage,
AFAIR: distribution-installed packages and admin-installed packages
are kept out of each other's way via the /usr - /usr/local split.
Hopefully, slashpackage will reduce the need/desire for repackaging,
but it won't go away entirely.  But in fact, we can have the same
benefits with slashpackage (using a different mechanism, of course).
What I describe here can already be done within the existing rules,
AFAICT, but it wouldn't hurt to explicitly document it at cr.yp.to.

Suppose I'm an OS distributor.  I want to include skalibs in my
distribution.  If the stock package is good enough for me, and if I
expect it always will be, then it's easy: I just include
/package/prog/skalibs-0.40 (precompiled, but not otherwise modified),
and new versions can be gotten directly from skarnet.org (or through
me, if I mirror, but in any case these would be stock versions).

But suppose instead that I want to make more intrusive modifications.
Maybe Laurent falls behind in fixing bugs (no offense, just an
example), or whatever, but my users want maintenance, no matter where
it's from.  They may even be paying me to take an interest in the code
quality of the packages I redistribute.  So now what can I do?  I
certainly should not distribute a modified package which is still
called /package/prog/skalibs-0.40, and when the user updates the
distribution, they certainly should not lose the new
/package/prog/skalibs-0.41 that they installed themselves.  (They
should lose neither the package version, nor their current-version
symlink setting.)

So I put this in my distribution:
/package/prog/skalibs -> /package/host/$DOMAIN/prog/skalibs
/package/host/$DOMAIN/prog/skalibs -> skalibs-0.40-1
/package/host/$DOMAIN/prog/skalibs-0.40-1 is my modified version.
Other software still accesses skalibs via the standard path.  If the
user installs /package/admin/execline manually, because it's not
included in my distribution, it can still find skalibs.

Now, when the user updates my distribution packages, they may get
/package/host/$DOMAIN/prog/skalibs-0.40-2.  The symlink
/package/host/$DOMAIN/prog/skalibs will be updated, so any users who
used my old version will now see my new version instead - this is what
they asked for when they updated the distribution.  However, the
update tool will *not* touch the /package/prog/skalibs symlink - I
only set it during a fresh install, and don't touch it afterwards.  So
any users who switched to stock /package/prog/skalibs-0.41 will not
have things change out from under them.


paul