tar.gz is the best package format for complex programs
Saturday, 26 July 08
There are two kind of Unix programs. The first are programs with little dependencies that will compile out of the box with GCC and some basic library like zlib and other libs that are installed by default in almost every Unix distribution. For this kind of applications it's not so important to be distributed in binary form, the real problem is for complex programs with tons of dependencies, like firefox, amule, openoffice and a lot of less famous unix applications. To compile this applications is hard for the newbie and tedious for the expert Unix user so it's mandatory to have a binary distribution if the
project goal is to reach a big user base.
In order to distribute complex programs in binary form there are two widely adopted alternatives, that are to ship a tar.gz with a statically linked binary and other library dependencies shipped with the program and linked at run time with some linker trick when you execute the program (this is what firefox does), or to ship a package for every kind of well known distribution out there.
Of course there are projects that are doing both, that is the best solution but to do so requires a lot of work. The point of this article is that projects that need to select just one binary shipping method should choose the all-inside-tar-gz, and for good reasons.
The tar.gz will work almost everywhere, all it's needed is to download it, unpack everywhere and execute the program: done! it is as simple as what happens with windows programs like uTorrent. It makes very easy to run different versions of the same program in the same box, this will encourage users to try beta versions and give feedbacks for example. It is also much simpler even from the point of view of the developers: to handle all the major distributions out there is hard so basically in order to provide distribution specific packages developers need to do a lot of work (and usually this is not possible) or use the help of the community (that will give you very little quality control). And likely you will not covery 100% of users even with the best of the efforts.
What I think is that the Unix world really need a standard way of packaging applications that will run out of the box with everything inside the binary directory, but while this is not still possible at least big projects authors should be encouraged to ship easy to run binary packages with everything inside the tar.gz.
In order to distribute complex programs in binary form there are two widely adopted alternatives, that are to ship a tar.gz with a statically linked binary and other library dependencies shipped with the program and linked at run time with some linker trick when you execute the program (this is what firefox does), or to ship a package for every kind of well known distribution out there.
Of course there are projects that are doing both, that is the best solution but to do so requires a lot of work. The point of this article is that projects that need to select just one binary shipping method should choose the all-inside-tar-gz, and for good reasons.
The tar.gz will work almost everywhere, all it's needed is to download it, unpack everywhere and execute the program: done! it is as simple as what happens with windows programs like uTorrent. It makes very easy to run different versions of the same program in the same box, this will encourage users to try beta versions and give feedbacks for example. It is also much simpler even from the point of view of the developers: to handle all the major distributions out there is hard so basically in order to provide distribution specific packages developers need to do a lot of work (and usually this is not possible) or use the help of the community (that will give you very little quality control). And likely you will not covery 100% of users even with the best of the efforts.
What I think is that the Unix world really need a standard way of packaging applications that will run out of the box with everything inside the binary directory, but while this is not still possible at least big projects authors should be encouraged to ship easy to run binary packages with everything inside the tar.gz.
Do you like this article?
Subscribe to the RSS feed of this blog or use the newsletter service in order to receive a notification every time there is something of new to read here.
Note: you'll not see this box again if you are a usual reader.
Subscribe to the RSS feed of this blog or use the newsletter service in order to receive a notification every time there is something of new to read here.
Note: you'll not see this box again if you are a usual reader.
Comments
1
26 Jul 08, 08:31:10
I don't know if you are hip to this, but, UNIX (TM) runs on a lot of different hardware platforms. Really. A lot.
26 Jul 08, 11:12:33
Uhm.. i'm not sure of encouraging this distribution approch.
Of course for some projects is an obbligate choice but i would not adopt it as a standard solution.
Some linux packaging system such as APT is really mature and sucessfully handles several common installation problems (such as the dipendeces issue).
I think that the way of standardization should be oriented in this direction.
Of course for some projects is an obbligate choice but i would not adopt it as a standard solution.
Some linux packaging system such as APT is really mature and sucessfully handles several common installation problems (such as the dipendeces issue).
I think that the way of standardization should be oriented in this direction.
26 Jul 08, 11:24:02
What do you think about recent packaging "one file-one program" projects, such as Klik and the italian Infodomestic?
The theory behind the projects is easy and clear. I think those systems, if they are good-developed, could make the future of Unix programs.
The theory behind the projects is easy and clear. I think those systems, if they are good-developed, could make the future of Unix programs.
29 Sep 08, 10:19:11
Having been on the receiving end of some such .tar.gz binaries, I am entirely against this. I often wished I could use SELinux to completely disallow installation of binaries using anything but the package manager.
In my opinion, developers should simply consider packaging integral to application development: if it is not packaged, it's not done yet. It is also best if packaging is left to distributors, so all a developer
has to do is to be package-friendly (i.e. no interactive setup script, because RPM disallows interaction) and let distributors package the software for him.
In my opinion, developers should simply consider packaging integral to application development: if it is not packaged, it's not done yet. It is also best if packaging is left to distributors, so all a developer
has to do is to be package-friendly (i.e. no interactive setup script, because RPM disallows interaction) and let distributors package the software for him.
23 Nov 10, 15:43:16
hi..thanks for sharing this post..it makes the readers interested. Good Job, very fluent skills in writing and in english.. keep up the good job..
15 Dec 10, 20:49:53
A good solution to think what other invention to make is to get involve in that forum. Usually many member have a good idea in this forum. You can ask the what idea they have in mind. http://www.esleepmasters.com/Bathroom_Vanities_s/2...
25 Dec 10, 10:45:55
This is a good organization that help us to take care our earthy. But they also need help from us, they need us to tace care the earth too by not cutting trees but plant a trees.