Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 13 Jul 2002 00:24:26 +0100 (BST)
From:      Mark Valentine <mark@thuvia.demon.co.uk>
To:        Terry Lambert <tlambert2@mindspring.com>
Cc:        Wes Peters <wes@softweyr.com>, Jordan K Hubbard <jkh@queasyweasel.com>, Dan Nelson <dnelson@allantgroup.com>, Archie Cobbs <archie@dellroad.org>, Dan Moschuk <dan@freebsd.org>, Dag-Erling Smorgrav <des@ofug.org>, arch@freebsd.org
Subject:   Re: Package system flaws?
Message-ID:  <200207122324.g6CNOQ7L020672@dotar.thuvia.org>
In-Reply-To: Terry Lambert's message of Jul 12,  3:19pm

next in thread | raw e-mail | index | archive | help
> From: Terry Lambert <tlambert2@mindspring.com>
> Date: Fri 12 Jul, 2002
> Subject: Re: Package system flaws?

> At this point, the best approach is probably a registry.

It already exists for our purposes: /var/db/pkg.

One improvement to its existing structure would be to move all the
FreeBSD package metadata under a freebsd.org sub-directory, and
have all FreeBSD ports register under this vendor name space, allowing
other vendors' packages to co-exist more easily using the same base
system tools.  (Using a seperate pkg db area would acceptable, but
only if the location could be specified within the package metadata;
i.e. pkg_add /cdrom/mypkg.tgz should work for third party packages
without having to specify additional options.)

I'm speaking as a vendor who intends to ship binary packages (albeit
supplied with full source; it's just easier for customers who don't
[yet] need to customise); some will be proprietary, others will be
versions of software for which FreeBSD already has ports; currently
I just intend to prepend an almost unique prefix to the package name
(and of course install it somewhere unlikely to clash with another
vendor's packages).

Being guaranteed the /var/db/pkg/thuvia.co.uk/* (or /var/db/pkg/uk/co/thuvia/*,
whatever) name space would be better, of course, as would be being able to
re-target the installation (but I can of course resort to my icky hack of
editing the binaries in a post-install script if this becomes an issue).

> While it's theoretically possible to edit this data in place,
> assuming the path is not assembled from components at runtime,
> in practice, you are limited to a path of equal or smaller size.

My location strings would be padded out to a reasonable maximum size.

> A lesser alternative is to have a "/var/opt" or some other
> location which is guaranteed to be a symlink to the real path
> location... and is never, itself, a real directory.

Well, we could already create such a symlink, even on a per-package basis,
as (for example) /var/db/pkg/foo-x.y/location...

> In an ideal world, you would probably want to put each package
> and all dependent files, including the shared libraries it
> cares about, into its own directory.  This was really Windows
> original problem.

I'd rather put some trust in our shared library versioning and package
dependency schemes, and actually share the shared libraries where it
makes sense...

However, you're already free to use your own policy here.

> A number of researchers have suggested that this problem could
> be solved by causing packages themselves to be in directories
> that were exported as their own mini FS's.  This "live image"
> could be mounted read-only off a remote server, or locally off
> a CDROM, without introducing further issues.

See QNX 6 for an implementation which actually looks like it might be
functional!  (These QNX folks are smart.)  The package installs in its
own private area, and registers with the package file system so that
its component files magically appear in all the expected places in
/usr/bin and so on.

> There are really three problems with this:
> 
> 1)	Windows is limited to 26(32) mount points: one per drive
> 	letter;

Not that I care a whit about whether our packaging scheme would work with
Windoze, but I vaguely recall hearing news of them fixing that a few years
back...

> I personally don't know if I'm ready to fight the "Not Invented Here"
> war that trying to implement a registry entails.

There are plenty of lightweight UNIX-like mechanisms to solve all the
problems they tried to solve with that mess.  And you don't have to
solve them all using the same one...

		Cheers,

		Mark.

-- 
Mark Valentine, Thuvia Labs <mark@thuvia.co.uk>       <http://www.thuvia.co.uk>;
"Tigers will do ANYTHING for a tuna fish sandwich."       Mark Valentine uses
"We're kind of stupid that way."   *munch* *munch*        and endorses FreeBSD
  -- <http://www.calvinandhobbes.com>;                  <http://www.freebsd.org>;

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200207122324.g6CNOQ7L020672>