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!"
This really isn't any surprise when you consider how varying Linux distros can be, and how similiar installations of Windows are. In practice however, a binary will work on any Linux distro of the same architecture provided the required libraries are available, which makes this a dependency issue. Windows avoids this by providing many commonly used functions as part of a base install, while Linux distros make these (and many more) optional. If Microsoft doesn't provide a needed function, the programmer either codes it themselves or includes a third party library as part of the installer. Of course, this has it's disadvantages:
The last group could be avoided by installing DLLs globally with versioned filenames, but I guess that would be too unixy. :P
The fact that Windows doesn't provide an installation system is also a big minus. For example, installing firefox with flash support on Gentoo:
And on Windows:
I don't know about you, but I think the Gentoo way is easier. Sure it'll pull in dependencies, and spend a good while building it all. But apt, and other binary packaging systems I'm not familiar with, can be just as good, and in most cases will be faster even when grabbing dependencies.