Making packages

Ben Pfaff blp@cs.stanford.edu
28 Dec 2001 13:32:19 -0800


michael@dynamine.net (Michael S. Fischer) writes:

> On Fri, Dec 28, 2001 at 01:02:30PM -0800, Ben Pfaff wrote:
> 
> > michael@dynamine.net (Michael S. Fischer) writes:
> > 
> > > I'm now working for a hardware startup in Fremont in "stealth mode",
> > > whose software is placed atop a Red Hat distribution, after being
> > > packaged in a custom format (which handles dependencies and multi-node
> > > installations).
> > 
> > I don't even know what a "multi-node installation" is.
> 
> Oh, it's an extension to the package manager that passes packages to all
> of the nodes in a cluster and tells the package managers on all the
> nodes to install the packages as well.

Ah.  I would use apt-get to do this under Debian.  Just write a
utility that works something like this
        for d in node1 node2 node3 ...; do
                ssh $d apt-get update \; apt-get -y dist-upgrade
        done
unless there's truly more to it than that, of course.

> > > Presently our custom software packaging system is similar to .deb's
> > > (metadata, files, pre/post-install scripts) but the packages are built
> > > by simply collecting a bunch of files that have been generated in various
> > > places throughout the source tree.  The traditional method of building
> > > Debian packages doesn't seem to fit the same paradigm.
> I have read the New Maintainer's guide, but it's focused around dh_make,
> which won't work here.

dh_make is only good for setting up the skeleton of a package anyway.

> > A more elaborate description of what you're trying to do would be
> > helpful.
> 
> OK, here's an example of our current package manager's config file:
> 
> [cli]
> version     0.83.2
> postinstall scripts/cli_post
> file        etc/temp-tclshrc /root/.tclshrc
> file        etc/temp-cli.sh /etc/profile.d/temp-cli.sh
> file        etc/temp-cli-pwfile /root/temp-cli-pwfile
> # commands start here
> file        batteryage
> file        batterylogreset
> file        batteryskiprecharge

That's just great.  You can take this and write a Perl script
that translates this format into a debian/ directory.  Then you
can use `debian/rules binary' to build your package.  You'll
probably need some kind of link farm because there can only be
one debian/ directory in a single place.

> An additional question I failed to ask earlier:  have any of you ever
> tied the Changelogs in your packages to revision control systems?  Seems
> silly to store the change logs twice (once in your RCS/SCCS checkin
> comments and then again in the Changelog itself).

There's a package in Debian called cvs2cl that transforms CVS
logs into ChangeLog files.  Maybe that would help.
-- 
"How could this be a problem in a country
 where we have Intel and Microsoft?"
--Al Gore on Y2K