How to Make Easy-to-Package Software, Part 2
jmmv writes "A month ago (more or less), the first part of the Making packager-friendly software was published and announced here; it seemed to be warmly accepted by the community. Now it's the turn for the second (and last) part, which has just seen the light. It deals with problems caused by recursive dependencies, configuration file handling, unprivileged builds, the make utility, build infrastructure oddities and some notes about code portability. Of course, these are just suggestions to try to make the life of packagers a bit simpler; you can just ignore them if you want to. I hope it will be of interest and that future versions of your creations are easier to package. Thanks!"
I hope the nethack dev team reads this! X|
When you're afraid to download music illegally in your own home, then the terrorists have won!
The link for the first article incorrectly points to the second article - it should point here.
You have to admit, no matter how much you like Linux, that both windows and mac have done a much better job with their installers. I can whip up an installer in a few minutes on windows that I am confident will work on everyone's machine, but this is unfortunately not true in Linux.
Philosophy.
For a self-contained YAKoSoSBP<*>, no worries, but for anything serious you have to futz around lots to avoid DLL collisions and registry slapdown games. On Linux or BSD, I just put in the dependencies and let URPMI/yum/apt/YAST sort it out. Different versions of shared libraries are delighted to coexist, BoC you don't need to do that, see below.
.src.rpm for people whose distros or architectures I haven't explicitly packaged for, can you? The .src.rpm also allows seamless integration with systems running on odd versions of shardd libraries, one simply does a wone-liner (or one-click) rebuild of the offending .src.rpm and viola, all dependencies solved.
Anyway, why do you need to ship an installer at all, isn't the OS supposed to provide that kind of plumbing? And what happens when the user gets to WinCE on ARM or something like that? I can post a
<*> YAKoSoSBP == Yet Another Kind of Solitaire or Sliding Block Puzzle
Got time? Spend some of it coding or testing
...have well-written, comprehensive, low-level instructions for building packages properly, but it's nice to see a well-written piece which is a bit more "meta" and general than that as well.
The instructions even work with their "Stoned Penguin" LoopyEdition2005 release. (-:
Got time? Spend some of it coding or testing
...mostly.
.NET at this point--but I can easily point them to things like that. There tend to be only one or two dependencies at maximum.
I've built dozens of installers for Windows apps and even distributed them to a variety of customers.
The only problem I've found is that not everyone has the dependencies installed--for example, not everyone has
On linux, there are so many different libraries required to run any app that doesn't run in the console. To actually BUILD something can be an amazing amount of work. It took me several hours to set up the build environment for OOo 2 beta on ubuntu.
"DLL hell" is a much worse problem on Linux, because Linux gives many many more choices than Windows. Whether this is good or bad is in the eyes of the observer.