In the past I had to install many times, by hand, extra software on Unix machines, specially because of missing useful software like a C compiler or because I like too much to use the bash. In the end it can get very messy I promised myself to never do again a make install for manually installing software in a Debian machine.

It's possible and it pays on the long run. When you take a program from outside the distribution you need to: configure, compile, install and document what you have done. So you can do it again with the next version. Specially when you have done local modifications. If you put your software inside a Debian package and follow the most sensible Debian Policy rules you get:

  • The documentation on how to configure, build and install the software is in debian/rules file.
  • It's easy to upgrade or remove the software, because is a Debian package.
  • You can use a patch system like quilt or dpatch to isolate your local changes from the upstream sources. If you create different patches files, for every logical feature you enhance or fix, it will be easier to drop them when the new version have the desired feature and to know what features needs to be ported for the new version of the upstream software.
  • You can do it even with the binaries of proprietary software. Its easy to take an rpm or tar files with the binaries and insert them inside the sources of a Debian package. With the proper care it's easy to update the sources for the next upgrade.

For example I have been doing this for packaging the pristine upstream binary of eclipse, because the teachers of my University usually requests a newer version of eclipse than what is available from Debian stable or even unstable.

Another example is the support software for HP hardware before HP officially supported Debian. I have taken the original rpm files or the scexe scripts and convert them into a debian file. Usually I need only to change two files with every new release of software, the Makefile with the name of the new rpm file and the debian/changelog with the new version and what is new.

In the end it's easier than it seams to create and maintain a Debian package. It's a steep curve, but pays off on the long run.

The good thing is all this approaches are compatible with a puppet or chef system for managing the Unix servers.