Autopackage Universal Package Manager
nanday writes "I currently have an article on Linux.com about Autopackage. Autopackage is developing a universal package manager for the GNU/Linux desktop, separate from the package management for the system. It includes installation for individual users, a lot of concern for interface design and documentation, and some ideas about the future of package management that are sure to raise some debate." From the article: "Besides ... technical problems, the Autopackage team believes that managing system and desktop software together is a mistake. It requires developers to pay attention to desktop applications that are of secondary importance to them, and confuses end users with problems about dependencies and upgrades." Linux.com is a sister site to Slashdot. (say that three times fast)
As someone who is new to linux this is the one area I struggle with. While not difficult installation of software on linux is quite different even among the different distributions. The autopackage software could make desktop solutions quite a bit easier for those of us that dont want to mess with system software very much but would like more control over desktop software.
Autopackage is not exactly loved by the distro people. See commentary from Gentoo, Debian, more Debian... Might be wise to keep those remarks in mind when considering using Autopackage packages on a distribution...
Right, and what exactly is autopackage going to do about these dependencies once it has found that they don't match up? Use LD_PRELOAD and have multiple copies of system libraries in place instead? Oh wait, autopackage is for "desktop packages only".
Of course, all of that isn't to say that autopackage may not do something useful in the future, but it sure looks like some of the fundamental problems of developing and distributing packages which other packaging systems have already dealt with still remain to be solved.
In any case, if you don't believe me, see what Scott Remnant has had to say on the matter (he's currently the dpkg maintainer, so he at least is passingly familiar with the issues surrounding a packaging format.)
http://www.donarmstrong.com
...considering it's not posted to Index. :)
It's only an insult if it's not true.
...will it be ported to Windows?
Come on. Autopackage has got as much to do with automake as Bill Clinton with Bill Gates.
If you don't mind keeping it separate, why not go with pkgsrc?
It mostly works and it's available today.
"The Devil does not know a lot because He's the Devil, He knows a lot because he's old." -- unknown
Sounded sort of cool, but they always do. tar + gzip or tar + bzip2 is still the ultimate in packaging. I use Firefox on Slackware. What I end up doing is not installing the Firefox package that came with Slackware. It's difficult to update. Instead, I grab the latest tarballs of Firefox as they appear and install them manually in /usr/local. Configured my window manager with a button that points there. Of course doing it that way, the Slackware package manager thinks I don't have Firefox. Now if this Autopackage could deal with a tarball so I don't have go manual or wait around for whatever distro I'm using to put out a new package, that really would be cool. RedHat managed to get themselves and their rpm app prominent enough that for a while a lot of software was offered in rpms as well as tarballs. I don't see rpms as often as I used to.
And how about that button in the Window manager? Doubt Autopackage can handle that detail, as I use fvwm2.
Intellectual Property is a monopolistic, selfish, and defective concept. It is "tyranny over the mind of man"
I think the "new package manager every month" people must all still be using redhat 9? I haven't thought about packaging since I switched to a Debian based distro (Ubuntu). The most intresting I've seen lately in packaging is Klik .
There's no doubt about it that Linux really is in the stone age as far as managing software goes. Every time I help a newbie install Linux I dread the next question: "How do I install software." "Well it's easy. We just edit this source.list file here and add these repositories from dag, freshrpms, etc, and then you can just apt-get it. isn't that simple?" And they go running back to Windows. The point is that as developers and programmers and even tech-savvy people we can deal with this kind of thing, and in the end find it much faster than in the windows world.
/usr/lib. These libraries are really the domain of the system and so users should never mess with them (the old trust the distro idea, override them in the appbundle if necessary). However, large-scale application fromework libraries and dlls go into the /System/Library/Frameworks directory where you can install multiple versions. For example, I have Java 1.3, 1.4 and 1.5(5) all installed. Mono, GTK, Gnome libraries and similar things should also go in this place. If I need an app that needs the gnoem 2.12 libraries, I should be able to install them alongside the 2.10 libraries, but in a clean, modular way that can avoid dll hell. Then as far as app distribution goes, anything that is not a framework, but is a dependency of the app should go into the app bundle. There are some weaknesses to this approach, but it is worth thinking about anyway. Of particular note is that our build systems just don't want to deal with anything other than the standar /lib /usr /bin/ etc/ share/ directory structure. This fact does limit this endeavor greatly.
Although there are times when it really is annoying. For example, I run Fedora Core, but I don't want to have upgrade the whole dang OS every 6 months. Once a year is almost too much. I tried to get beagle running, which required a patched kernel which is no big deal. Then I tried to install the latest mono libraries. They depended on a newer version of GTK than I had, so I upgraded that (used a SRPM). Then I found the gnome-sharp and other gnome-related bindings only worked with a newer version of these libraries. OF course to install those rpms would have required upgrading the whole OS to FC4 (dependency hell all the way back to glibc). So we've replaced DLL hell with dependency hell. Neither is good. If I could have somehow installed these newer libraries alongside my older ones, just for the newer apps to use, that would have been ideal. But package managers make that difficult (but not impossible).
Autopackage is a step in the right direction, but there are too many concerns about it (as mentioned in the previous posts) that either have not been addressed yet, or have been refused by the autopackage developers, including package signing, etc.
Watching my sister download and install software for her Mac really makes me ashamed to show anyone how stuff is done on linux. I wonder if the MacOS model might provide some insight into how to make things work. I'm not talking just about AppBundles, but also about Frameworks. Like linux, apple puts a lot of small libraries in
Judging by the comments on the blogs about autopackage by the ubuntu folks, they are pretty happy staying with the current state of things. I guess they don't really care if Linux goes beyond being a niche OS that only developers and techies use. Of course sometimes I feel the same way.
It's a tough problem and to date not a single OS or distribution of an OS (including MacOS, Linux, BSD, Windows) has yet to come up with a good solution.
Why not either
- compile the libraries in with the binary, leaving one binary and one conf file for each application
or
- keep the libraries seperate from the binary, but store a copy of whatever libraries the binary expects in its own folder (/usr/bin/foo/lib)
Disk space and RAM are both cheap. This kind of thing would suck on systems where resources are limited, but otherwise it would simplify things dramatically
If you're really not interested in actually solving a problem, just say so. It's quite another thing to claim that real problems you have no intention of fixing Aren't Really Problems because your solution doesn't work for them.
Existing packaging systems Just Work for Linux PPC. Yours doesn't. How is that possibly an improvement?
how to invest, a novice's guide
Great post overall.
For example, I have Java 1.3, 1.4 and 1.5(5) all installed. Mono, GTK, Gnome libraries and similar things should also go in this place. If I need an app that needs the gnoem 2.12 libraries, I should be able to install them alongside the 2.10 libraries, but in a clean, modular way that can avoid dll hell.
Sounds good. The dinamic linker should be able to find and use the correct versioned files for the libraries, and gcc should be able to find the versioned include files/dirs too.