Mike Porter mupi at
Wed Oct 8 16:11:17 PDT 2003

Hash: SHA1

On Wednesday 08 October 2003 02:41 pm, Paul Jarc wrote:
> I read the packaging page at
> <URL:>.  It looks like
> you might be interested in the slashpackage system:
> <URL:>
> <URL:>
> With slashpackage and SPF, it's possible to have multiple versions of
> a package installed simultaneously, and it's possible for each package
> to use a specific version of each of its dependencies.  This does not
> require any special tagging of binaries, or any kernel changes to make
> files visible or invisible.

FWIW, it looks to me like this is linux's answer to the BSD ports system.

The only functional difference I can discern is that the actual executable 
files reside within the /package directory, something that should be 
relatively easy to implement: instead of actually copying the files to the 
destinations, we create symlinks.  The other major difference, thought it 
doesn't strike me as terribly significant, is that it uses the filesystem 
itself to determine what packages are installed.  This would be possible, but 
would require some changes to the ports tree; I am also not entirely sure it 
is necessary. 

This doesn't, actually, strike me as that bad of an idea.  It might require 
some changes to how cvsup works in the ports tree (you *defintely* wouldn't 
want strict-mode enabled!!) and would require a stricter versioning in ports 
(EVERY port would need to include a version number).  We could then link, to 
pick something I have been fighting with lately, /usr/ports/security/amavisd 
to /usr/ports/security/amavisd-0.1 to get close to the functionality we have. 
(actually, if we are consistent about it, it could greatly increase the 
functionality, IMO).

If we combine this with variant symlinks, so we can transparently switch 
between versions of programs, without having to manually edit symlinks all 
the time, and I think we could be more than 1/2 way there.

Note, however, that this whole slashpackage system still doesn't address one 
of the major things we want to deal with, namely, the ability to have a 
program run with the correct varsions of shared libs, which I suspect is 
going to be the major ports problem we need to face.  I don't think there 
will be an answer to this, without either forcing explicit use of shared libs 
in the application directory (did somebody say, a separate copy of how many 
files for eavry port in gnome???), or doing some sort of 'application 
tagging' as Matt suggests, allowing the program to only see the version of that it wants.needs. (Variant symlinks alone won't really address 
this issue either, although it allows some workarounds. (create a user than 
can't login with a profile that matches the library versions we need, then 
make the binary setuid that user, for example; I know, that opens a whole 
other can of worms)

Even with changing the ports tree so that the installed ports/packages could 
be determined by the tree itself, I think that there is nothing here that 
would 'break' the existing ports, allowing them to work unmodified in the new 
system, while ports written specifically for the new system could take 
advantage of other features.  The reason I say this is that the major changes 
required are pretty much all in files included from the base 
file.  If I had more time, or could justify it for work, I would be willing 
to tackle such a change....

Version: GnuPG v1.2.1 (FreeBSD)


More information about the Kernel mailing list