Installing Everywhere?
PlainBlack queries: "Our company has been developing an open source project for a couple years now that has gotten pretty popular. The one thing we haven't yet figured out how to do well is packaging. It seems like every operating system has it's own standards for packaging, and installers, and for each OS we support, we end up adding a lot of time to our packaging process. So my question is, what do all of you do to package your apps? Do you just release source tarballs? Do you manually package your RPMs, EXEs, DEBs, DMGs, BINs, PKGs, [and MSIs] by hand? Do you have an automated build process that creates all the packages? If so, how does it work? Is it available for other developers to use?" There are tons of installers listed on SourceForge, but which one allows the creation of OS packages without too much hassle? Duplicating work, especially software installation procedures, across all supported OSes, is time consuming. Is there an easier way?
Speaking as someone who worked a lot on NetBSD's 3rd party software system, pkgsrc, which today has ~4.000 pkgs:
/proc is the same on all Systems, don't use clone(2), etc). /bin/sh == Bash
It's less important for software to come "pre-packages" properly, but that both the code and the build infrastructure are written with portability in mind in the first stop.
* Make sure your software compiles on non-i386 non-Linux (don't #include , don't assume
* Make sure it can be relocated (configure --prefix=/foo working properly if you have to use GNU autoconf).
* Don't assume everyone uses GNU make
* Don't assume
* Don't depend on obscure non-easy to install software components (that again may not be present on non-i386 non-Linux - think Java!).
If that is done, your software can be added to any 3rd party package systems easily.
- Hubert
You should focus on the source code, and work with red hat, debian, gentoo, *bsd, etc to make sure your code is easy enough to compile and for them to package.
- your program has a particular appeal to newbies and it is not included with most distributions,
- the build procedure is unusually complex, or
- your program takes ridiculously long to build.
I think most experienced Unix people are comfortable with building from source, and many people just don't trust third-party packages, as they're often badly packaged or out of date.If you decide to do it anyway, one tool that can help you is checkinstall. It monitors the standard make install process and can create several kinds of packages. I doubt the quality of the generated packages is very good though, and you still have to take in account that different distributions have different policies.
Also, make sure you don't waste effort creating packages for distributions that already include your program. You mention DEBs, but whatever your program is, I'm pretty sure Debian already includes it :)