.comment: Something for Everybody II
Seek and Ye Shall Find

Dennis E. Powell
Thursday, April 19, 2001 09:04:51 AM
Amazing. Just amazing.
Yesterday I wrote about the need for a unified package handler for Linux that would not
just reconcile RPM, DEB, and TGZ packages but would include in the database of installed
applications (along with dependencies and the like) those things you build yourself from
source.
Konstantin Malakhanov must have had his note pre-written, so quick was he to email a
response to my plea. He clued me in on something called "CheckInstall." It is the coolest
utility I've ever seen. If you run Slackware or any RPM-based distribution and if you ever
compile your own applications, libraries, anything, it is a must-have, a really essential
application.
What does it do? Well, I can tell you some things, but I bet that I leave a lot out,
because when I think I've figured out everything important about this deceptively small
utility (the source download is less than 60k), I happen upon something even neater that
it also does. In my explorations so far, I've learned that it:
- Tracks the activities of "make install" and enters the package you've built in your
Slackware tarball or RPM-based distribution RPM database.
- Makes your choice of a binary tarball or RPM of whatever it is you've just built.
- Includes in the binary package docs, license, and everything else, not just the
binaries themselves.
- Allows for a clean uninstall, because you can use your distribution's regular
package uninstall command to get rid of it.
- Allows for a really clean uninstall, because it backs up anything that was
changed when you installed the new package you compiled.
Indeed, when you compile it -- and it is the easiest compile since "Hello, World" -- it
makes a tarball or RPM of itself!
The imagination swims with thoughts of just how useful this thing could be. Everything
you build is automagically backed up in a binary package. While that binary might not work
on every machine in the world, chances are that unless you have really weird hardware or
some compiler Red Hat decided to loose on an unsuspecting world it will run on other
machines, making deployment over a network or mailing to a friend a very easy thing. And,
as I said, I haven't fully explored it yet. But just keeping track of the stuff you've
built makes it one of the most useful utilities I've ever seen.
The current version is 1.4-beta1. Its developers (and we can give thanks that they are
putting their talents to work for Good, because these guys know their stuff) say they're
working on adding DEB support.
Please don't think I'm complaining when I consider where things could go from here.
A Grand Solution to the Package Problem
The most difficult part of my idea for a Master Package Manager -- trapping "make
install" and entering it into the database -- is solved by CheckInstall. The next part is
deciding upon and establishing a grand master database. CheckInstall handles the RPM
database and the one of binary tarballs that Slackware maintains, and soon will ride herd
on Debian, too. Debian's alien program allows incorporation and back-and-forth conversion of RPMs, SLP's, .tgz's and .tar.gz's. So the makings of the master database are largely there.
Now all that's needed is bringing it all together. Debian seems to have the best way of
importing other packages, and there's little reason to re-invent the wheel. With a little
work (or maybe none), it would be possible to forego the RPM database entirely, and the
one for tarballs, and fold it all into a Debian or modified-Debian database. There would
need to be a little utility that would read the existing distribution-specific database
into the master database.
Then, one could compile, could install RPMs, could build from SRPMs, could apt-get DEBs
and source via apt-get, could use binary tarballs, and could keep it all straight. Users
would not be tied to any specific distribution, and in an era when distributions are
popping up, disappearing, repositioning themselves, and in other ways proving unreliable
for the mere user, this is important.
But why stop there?
Next: A Grand Master Demystifier »