Package management on GNU/Linux Systems is a mess. In some respects, it would be nice if all distributions had compatible binary packages, but they don't, and no one has the power to make them. RPM is a "standard," according to linux standard base, but tons of distributions don't use rpms, including the most popular one of all.
Besides, an rpm for fedora doesn't always work with opensuse or mandriva, and an rpm for those distros doesn't necessarily work on fedora.
Source tarballs tend to work pretty well as far as getting things installed goes. Building from source ensures that the package links against the libraries actually on the system, and therefore actually works. Also, without too much effort, a source tarball will compile and install on any GNU/Linux sytem.
Unfortunately, there's a major problem with using source tarballs: What happens if you want to remove a package installed this way? There is simply no easy way to do it. you have to go in and delete every file the package created.
package managers are necessary. How can we have our cake and eat it too? we need some kind of system that is both package manager agnostic, and integrates with the package manager. This seems contradictory.
We can't quite create a system that will be able to integrate with a packge manager without writing some code specifc to that program. What we can do is to separate out all of the steps that need to be done for any system, and then write separate subroutines to pack up what we've created into the particular format we want.
PIPS (Package Independent Ports system) does just that. it is a ports-style system that is package-manager agnostic. making a package means writing just a couple of simple files, which define some metadata about the package (i.e. its name, version, etc.) and a shell function which tells pips how to build the package. the process is designed to be simple, and to abstract out any details which tend to vary from system to system. Running the pips executable in the appropriate directory will then build the package proper.
Support for more package types can be added by writing a file $PKGTYPE.pips.subr, which is a simple bash script defining just a few functions, most of which can be one-liners
The purpose of this project is to create a ports-style system for building packages which:
Pips is avaliable under the BSD license.
Pips is still under heavy development, and is not ready for use. If you'd like to help, subscribe to the pips-devel mailing list, and introduce yourself. The code can be retrieved with a subversion client from http://pips.svn.sourceforge.net/svnroot/pips. Documentation and feedback are appriciated just as code is.