Over in the
"How
to get an instance url from a package key?" thread,
Stephen Deasey
said:
My own view is that the package manager doesn't suit our needs. It is
not important to package up individual applications into standalone
distribution files (*.apm) so that they can be installed
willy-nilly. In fact I think it's detremental to the goal of producing
an *integrated* tool kit (you don't have to look far to see the wheel
re-invention...)
The problems discussed in
"How
do you separate project customisations from improvements?"
are faced by each of us, but we have no tools to help us manage the
complexity. A FreeBSD style system using CVS rather than the RedHat
style package system we have would be more appropriate.
That seems like an important and interesting enough point to start a
new thread about.
In practice, I find that the modularization of APM packages is great,
but their packaging up into *.apm files is more of a hindrance than a
help. My normal procedure for installing and using APM packages goes
something like this:
- Manually download all the *.apm tarballs.
- Unpack each *.apm tarball into an appropriate temporary directory
somewhere, either manually or using the ACS APM web UI.
- Remove any bogus CVS directories, or otherwise clean up any minor
screwups made by the person who packaged up the files into the *.apm
tarball.
- Use
cvs import
to import the package files into my
local CVS repository with appropriate vendor branches, tags, etc.
- Go over to /web/mysite-dev/packages/, do a
cvs update -d
PACKAGE-NAME
to get the actual code into my ACS, and then
install the package, load the data model, etc. from the APM UI.
Granted, you only have to that once per package (and per release...),
but it's pretty much the only right way to do it, and it
seems unnecessarily difficult and error prone. It would be much
simpler just to eliminate all use of *.apm files altogether, and do
something like cvs -d cvs.openacs.org:/cvsroot export
openacs-4/packages/one-package
instead.
Now, I actually can get all OpenACS code via CVS now, so in
the future, personally, that's the way I plan to do it.
But, back to Stephen's original point. He was suggesting that we'd be
better off to use a *BSD style Ports system, rather than the Red Hat
rpm style package system the APM understands now. This sounds
plausible to me, particularly since my experience is that using
any rpm package-style system without a tool like Debian's
apt-get just totally sucks. And I love Debian's package system (and
apt-get!), but if I was actually hacking on some of the code, rather
than just auto-magically installing precompiled black-box binary
packages, it might get annoying. But on the other hand, I don't know
much of anything about the Ports systems used by
FreeBSD,
OpenBSD,
etc.
So Stephen, could you fill us in further on how the *BSD Ports systems
work, and in particular how using something like that might be good or
bad for OpenACS?
For example, maybe one drawback would be that for an outside
developer, making his code available via this Ports thing might be
harder then just slapping up an *.apm tarball on a website somewhere.
But like I said, I've never used anything like that, so I'm interested
in what Stephen and other OpenACS folks who have used *BSD style Ports
systems have to say.