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