Linux is available for a number of architectures, which is one of its advantages. However, most packages are generally compiled only for i386, or i686 -- leaving users of alternative architectures with a dilemma. Users wanting packages optimized for other architectures often have to wait longer for pre-compiled packages, or resort to compiling the packages from source on their own, which defeats the purpose of using a package manager.
Availability of binary packages is also a problem for certain projects. I am an avid fan of KDE and a Slackware user. Every time a new version of KDE is released it takes a week or two until the Slackware packages are available, and the alternative, compiling KDE from source, with all its dependencies, can take an entire day.
Another problem with existing package management systems is that they contain scripts that automate the installation. However, if the scripts contain bugs, then users may need to employ complicated workarounds to rectify the problems. Even worse, if a package's installation script fails, it might be impossible to remove the package without extensive manual effort.
A new breed of distributed package management systems have emerged which make use of Internet-based repositories to give users the packages they require, customized for each user's architecture.
Gentoo Portage
The Portage package management system is a central feature of the Gentoo Linux distribution. Portage, which takes after the Ports system used with *BSD distributions, is a pioneer in the distributed package management paradigm for GNU/Linux distributions.
Portage uses the rsync protocol to update its tree. Updating all of the software in the entire distribution is as simple as entering the command:
emerge --sync
This command updates the local Portage tree with the current Portage tree for Gentoo. To update all of the packages on your system, run emerge -u world.
What about installing new software? To search for a specific package, simply run emerge --search packagename .
Portage can also handle dependencies automatically. To install a package, run:
emerge packagename
This emerge command tells Portage to download the source code of a specified application, as well as all other applications or libraries needed to satisfy its dependencies. Once downloaded, everything is compiled from source. You can optimize the compilation settings through the CFLAGS environment variable, based on the specifications of the individual computer, and on the individual user's need for speed.
One drawback of Portage is that it relies on the Gentoo Portage tree. If a package is not available in the tree, then a user cannot use Portage to install the package, and must resort to compilation by source.
Portage is one of the innovations that has enabled Gentoo to gain a large user-base very quickly, and it solves several of the problems found with traditional package managers.
The Conary Software Provisioning SystemThe Conary Software Provisioning System is developed by rPath, a company founded by ex-Red Hat engineers. Conary applies new ideas from distributed configuration management tools such as GNU arch and monotone.
According to the designers, "Conary uses networked repositories containing a structured version hierarchy of all the files and organized sets of files in a distribution."
Rather than concentrating on separate package files in the manner of traditional package managers, Conary relies on a tree-like structure that resembles to a software configuration control system. The Conary tree, unlike the Portage tree, can be distributed across a network. That is, a package compiled for i386 can be kept in the repository at rpath.com, and someone else might maintain the package for an alternate platform in another repository. The Conary tree can span multiple repositories, and hence potentially provide access to a vast array of packages.
Conary is able to utilize binaries if available, or source if necessary, and stores all version information in a database in order to track changes from the source branch all the way back to changes in the local versions installed on a given system to meet dependencies without conflicts. In some ways, Conary acts as a revision control system for package management.
Conary's command-line syntax is very APT-like, and the GUI front end is similar to Synaptic. Conary is designed for the layman, and hence it is easy to use. For example, here are some of the commands for popular operations with package managers:
The command conary q packagename shows whether a given package is installed.
The command conary rq packagename lists the newest available upgrade.
The command conary update packagename installs or updates the requested package.
The command conary erase packagename uninstalls the package.
Say I want to upgrade KDE on a Conary-based system. Running conary update KDE resolves all dependencies and updates all of the necessary packages for KDE.
Conary is an exciting tool for users who are frustrated with traditional package management systems. At least two distributions make use of Conary for package management: rPath, which was created by the designers of Conary, and Foresight Linux .
Conclusion
Conary and Portage were designed to address many of the limitations of traditional package manager. The Linux developer and user base has grown enormously over the past decade, and packaging systems have not kept pace. Many do not scale well to multiple repositories with conflicting or overlapping content, which can make it difficult for developers on different projects to coordinate package releases. Additionally, the increasing number of dependencies in many open source packages poses unique challenges to open source package managers.
One of the main aims of Conary is that it should be designed to enable a loosely coupled Internet-based collaborative approach to building Linux distributions that can change almost any aspect of a Linux system. With this kind of approach, Linux users might be able to manage their distributions with ease and not have to change their operating systems in order to circumvent the frustrations of a traditional package management system.
With the new breed of package managers users can now relegate responsibility for management of all aspects of software installation, upgrades, and removal to the package manager. With any luck, the days when users have to scour the Internet for optimized packages or missing dependencies will soon be over.
Note: Comments are owned by the poster. We are not responsible for their content.
Not that there's anything wrong with that. IMO it's a decision that should be left up to distro maintainers.
So what a universal installer would have to account for is all the different places applications live, which can and are distro specific including binary and source disrtos.
And what if I wanted to use gcc-4.0.0 instead of 3.4.4 on a source based distro? What then? That one thing and deciding to use glibc with nptl instead of linuxthreads would be a monumental headache for a do all package maintainer.
It would also have to setup a build system for source bases distros. And the build system for Gentoo is not the same as used by Lunar-Linux, which it not the same as used by<nobr> <wbr></nobr>...... another.
It would be a huge monumental task. For what gain? Little that I can see. Not that I'm a distro, um, ahem lady of the evening. But I have used several and find all their package maintainers like urpmi, etc works as advertised. The only real difficulty I've had using them (ones I'm not familiar with) is finding the application name in the GUI menus and perhaps setting up additional repositories.
Right now the only real suggestion I would like to see across all distro and desktop managers is a consistency between menus. That IMO would be more useful.
None of those problems screams to me there should be one universal do all app. This suggestion to me sounds like an obtuse attempt or at least obfuscated attempt to create one distro.
In fact all packages are submitted to the archive as source, and they are then built by the compile farm
That isn't entirely true for Debian. A package is uploaded both as a source archive, and as a binary package.
If the package applies to other architechtures then those will be built from the source. If not the uploaded binary is sufficient.
I believe that in Ubuntu all uploads are source only - but for Debian at least one binary package is uploaded to the repository.
So when I upload a new package, for example, I build it from source on my x86 machine and all other platforms get it built by the <a href="http://buildd.debian.org/" title="debian.org">Debian autobuilders</a debian.org> - but not on x86. The package end users get is the same as the one I built and uploaded.
One of the other great things about portage our the little helper apps like revdep-rebuild that searches for programs that are linked against other packages that may have been updated or removed. This tool will find and rebuild all of those programs/packages.
But the greatest thing about Gentoo is the fact that it is a live system. Nobody with a functional Gentoo install cares when a new version comes out. If they keep their systems upto date there is absolutely no reason to ever reinstall an updated version of Gentoo again. This does complicate some things like the recent Apache and MySQL updates but it is worth the occasional hassel for a system that is always current.
In response to other comments: It does have package signing for the sorce tar balls. Although you can't interact with Gentoo's remote tree other than to sync against it, once that is done the tree can then be shared with many other systems via nfs and emerge can even be coaxed into building binary packages for deployment on other sytems of like configuration. And to those that think there is a one-size-fits-all approach out there similiar to Microsoft's: sorry. GNU/Linux is a constantly evoloving system and as such many things are in a constant state of flux. To have a standard that developers could write to would involve having a code freeze for GNU/Linux/X/Gnome/KDE/E/etc... and a long shake out period. This is contrary to the way in which FOSS is developed. A program written against all of the newest libraries won't work until people get upgraded and if it is written to be compatible with older libraries it will be out of date upon release or shortly thereafter.
RiverRat
Gentoo.org and
irc://irc.Freenode.net #gentoo
problems?! what problems?!?!?!
Posted by: Anonymous Coward on November 11, 2005 04:39 AM#