LWN.net Logo

Distributions

News and Editorials

Package management in Gentoo Linux

July 2, 2007

This article was contributed by Donnie Berkholz

Package management is one of the key defining characteristics of a distribution. The question of where package management is going should be of interest to anyone involved with a distribution or administering a Unix-based box of any sort. In many distributions, package management appears to have reached a near standstill. For example, the RPM format has hardly changed in years. In Gentoo, however, ongoing development of package management is so popular that three separate, actively developed package managers exist.

Advertisement

Over the past couple of years, many developers have grown increasingly unsatisfied with Gentoo's default package manager, Portage. Portage is a high-level interface to Gentoo's package format, a series of scripts called ebuilds. Unfortunately, Portage wasn't planned out in the first place, and features have been added ad hoc over the course of many years. Today, it's extremely difficult to add features to Portage or interface with it because there are complex interdependencies and a pretty much nonexistent API. Consequently, two groups of developers decided to start fresh with two separate projects: paludis and pkgcore.

Paludis is implemented in C++ and bash, with a C++ API and an optional Ruby scripting API. One of the biggest features that Portage lacks but Paludis supports is the ability to remove all unused dependencies of a package when removing that package. Also, it has a much more flexible configuration system, user-definable hooks into the build process, user-defined sets of packages, and clean support for multiple repositories. In Portage, secondary repositories (called "overlays") are second-class citizens. Furthermore, Paludis added a number of features Gentoo developers have been requesting for years that add flexibility to how dependencies can be specified. Paludis contains a number of modules, including:

  • paludis—package installation, removal, and queries
  • contrarius—a client for building cross-compiling toolchains
  • inquisitio—a package searching client
  • qualudis—a quality assurance tool for ebuilds
  • adjutrix—a tool for architecture teams

Paludis includes experimental Portage support as of the end of March. This means you can try it out without wasting time migrating config files over, which significantly lowers its barrier to adoption.

Pkgcore is implemented in Python, the same language as Portage, with a few time-critical modules in C. It was designed so that there's no reason it has to be Gentoo-specific—it could easily support other package formats. Its philosophy is to maintain complete backwards compatibility with Portage while recoding it in a clean, maintainable, extensible fashion. Some of the code written for Pkgcore has been pulled back into Portage, such as the cache-handling code. Its 0.3 release finally reached a point of usability because it added frontends with comprehensible output—one that mirrors Portage and another that mirrors Paludis. Despite being in Python, it runs shockingly fast—it is a good example that not all programs written in high-level languages need be slow. The Pkgcore API is also viewable online. Some of the utilities Pkgcore includes are:

  • pmerge—package merging and unmerging
  • pmaint—repository maintenance: syncing, etc.
  • pquery—package searching
  • pcheck—QA checker for ebuilds

A couple of interesting features Pkgcore has are N-parent inheritance of eclasses (a Portage feature that allows inheritance to be used in bash code) and an ebuild daemon. The daemon has a number of benefits including near-linear scaling to multiple processors for some tasks—Pkgcore's home page cites ~90% scaling on a quad Pentium 3. And of course, one benefit over Paludis is that you don't need to use the occasionally less-than-speedy g++ to compile it.

Pkgcore and Paludis seem fairly well-matched in the features department. They both support sets, the additional dependency flexibility, integrated checking for security vulnerabilities, and Portage's on-disk format. Another useful feature they both support is the ability to restrict packages to install based on their licenses. This gives users the choice of how free they want their installations to be, from FSF-compliant to packed with proprietary. Both projects have active teams working on them of between 5 and 10 developers each. In comparison, Portage is primarily maintained by potential masochist Zac Medico—a glance through the ChangeLog showed that he was the only committer since January.

The advent of multiple package managers accelerated Gentoo's need to adopt a formal Package Manager Specification. In the past, new features or breaks in backwards compatibility in Portage simply forced a wait of roughly 6 months, at which point it was assumed that nobody was using those old Portage versions anymore. Problems with that should be readily apparent. When new package managers came along, additional questions came up of which aspects of ebuild behavior were intrinsic behavior and which were Portage-specific details. With only one implementation and no spec, it's hard to draw a line.

Together, these two developments motivated creation of an Ebuild API or EAPI. The current generation will be EAPI=0, which is being documented in a formal specification. Once this spec is done, Gentoo will have a process in place for dealing with ebuilds using new features and for dealing with breaks in compatibility via setting in each ebuild the EAPI that ebuild supports. This will enable near-instant use of new features that Gentoo developers have already been awaiting for years as well as agreement upon how all these package managers must act in common and where they have flexibility to be different.

Comments (13 posted)

New Releases

Slackware 12.0 released

Slackware 12.0 has been released. "Well folks, it's that time to announce a new stable Slackware release again. So, without further ado, announcing Slackware version 12.0! Since we've moved to supporting the 2.6 kernel series exclusively (and fine-tuned the system to get the most out of it), we feel that Slackware 12.0 has many improvements over our last release (Slackware 11.0) and is a must-have upgrade for any Slackware user."

Comments (15 posted)

Gutsy Gibbon Tribe 2 released

The Ubuntu project has announced the release of Gutsy Gibbon Tribe 2, which is a pre-release of Ubuntu 7.10. "Tribe 2 is the second in a series of milestone CD images that will be released throughout the Gutsy development cycle. The Tribe images are known to be reasonably free of show-stopper CD build or installer bugs, while representing a very recent snapshot of Gutsy."

Full Story (comments: none)

Distribution News

Fedora Board elections -- voting open

Voting is open for the Fedora Board elections in which 3 of the 9 seats will be chosen. The candidates are Christopher Aillon, Dennis Gilmore, Bob Jensen, Brian Pepple, Jef Spaleta and Rahul Sundaram. Voting will end at Jul 8 23:59:59 UTC and anyone who has signed the Fedora CLA (ie: is in cla_done in the Fedora Account System) is eligible to vote.

Full Story (comments: none)

Fedora Core 5 Retirement

Fedora Core 5 has gone into retirement. No further updates will be issued for FC5 or FE5. Fedora developers will now focus their attention on the development of F8 and maintenance of Fedora 7.

Full Story (comments: none)

Nominations open for the Gentoo Council

Nominations are open for the Gentoo Council and will remain throughout July. Voting will be open during August. Only Gentoo developers may be nominated or vote.

Full Story (comments: none)

Considerations for 'xmms' removal from Debian

The xmms package in Debian may be removed from the archive, along with many plugins. Click below for the rationale and complete list of packages involved.

Full Story (comments: none)

Debian's GCC 4.2 transition

Debian's unstable branch is undergoing a transition to GCC 4.2. "GCC 4.2 was released on May 13 and has been in unstable since roughly that time. The default version of gfortran was recently switched to 4.2 and the Debian GCC maintainers would like to move to 4.2 as the default compiler in unstable for all architectures and for all languages with the exception of Java (which will follow later). This message describes the plan to make this transition possible."

Full Story (comments: none)

New Distributions

Fluxbuntu

Fluxbuntu is a LPAE-standard compliant, Ubuntu-based distribution. It is lightweight, swift and efficient. These features support the Fluxbuntu Linux Project's Goal of running on a wide range of mobile devices and computers (low-end & high-end). According to the Release Schedule the first test release is expected to coincide with the Gutsy Tribe 3 release on July 19. ["LPAE" appears to stand for "lightweight, productive, agile, and efficient" - we had to look it up too.]

Comments (none posted)

Distribution Newsletters

Debian Weekly News - July 3rd, 2007

The Debian Weekly News for July 3, 2007 covers CD and DVD covers for Debian 4.0, Alioth has been upgraded to etch, Kurt Gramlich announced a Skolelinux Youngster Meeting on July 20th to 26th in Chemnitz, Germany, Call for Papers for LVEE-2007, interviews with Sam Hocevar, a collection of Debian Art, removing PHP4, Release Team Meeting Results, and much more.

Full Story (comments: none)

Fedora Weekly News

Issue 94 of the Fedora Weekly News is out with the latest information on the Fedora distribution.

Full Story (comments: none)

Full Circle Magazine Issue #2

The second issue of Full Circle Magazine, the independent magazine for the Ubuntu community, is online. Topics include: Flavour of the Month - Kubuntu, How-To - Ubuntu on the Intel Mac Mini, Virtual Private Networking, Learning Scribus Part 2 and Ubuntu for your Grandma!, Review - System 76 Darter, Top 5 - Widgets and MyDesktop, MyPC and more!

Comments (none posted)

DistroWatch Weekly, Issue 209

The DistroWatch Weekly for July 2, 2007 is out. "The release of the General Public Licence version 3 and the new Linux edition of Google Desktop were the primary generators of headlines on most Linux news sites during the past week. In contrast, all was quiet on the distribution development front, with only Dreamlinux, Scientific Linux and a few minor projects announcing new stable releases. But don't despair; this week's DistroWatch Weekly is still packed with interesting topics, including an interview with Clement Lefebvre from Linux Mint, a rebuttal by John Murga from the Puppy Linux forums, and information about some other interesting news of the week, such as the new PC-BSD LiveCD and the latest version of the GNU/Linux distro timeline. And if you are looking for something to test and play with during the slow months of July and August, don't miss the new distributions section which presents no fewer than 6 (six!) new distro projects that were submitted to DistroWatch last week."

Comments (none posted)

Distribution meetings

Debconf - trip report

Ian Jackson has written a DebConf 7 trip report. "Mako gave a fantastic feelgood talk about how Debian is really interesting to all sorts of people from outside the direct field of computing, like sociologists, lawyers, voting reform advocates, etc. It made us all proud to be part of Debian, and of course gave us an insight into how what we do affects the world at large."

Full Story (comments: none)

Miscellaneous Articles

Scientific Linux project releases v4.5 install CD (DesktopLinux)

DesktopLinux takes a quick look at the release of Scientific Linux 4.5. "The Scientific Linux project last week announced the release of Scientific Linux 4.5, an install-only distribution rebuilt from source code for Red Hat Enterprise Linux 4. It features a 2.6.18 kernel, GNOME default desktop, multilingual support, and Xen paravirtual guest capabilities."

Comments (none posted)

Distribution reviews

Yoper 3.0 requires some tinkering (Linux.com)

Linux.com reviews Yoper 3.0. "Yoper claims to be a high-performance Linux distribution optimized for newer processors. It incorporates components from other distros, but its packages have been built from scratch to provide enhanced performance. I tested a beta of Yoper 3.0 on my desktop a year ago and was so impressed that when 3.0 was released this month, I installed it on my new Hewlett-Packard Pavilion dv6105 notebook. Using it, however, left me disappointed."

Comments (none posted)

Mini Review of a Tiny PCLOS (TuxMachines)

TuxMachines reviews TinyMe, a scaled down version of PCLinuxOS 2007. "TinyME might make a good start for a server as all the important LAMP packages are in the PCLOS repositories as well. One doesn't need all the extra goodies that come with the big desktops these days for a server and LXDE would be good for those that like graphical server tools such as webmin. I didn't have an older computer handy on which to test it, but I imagine it would be great for it. PCLOS developers build support for about everything into their kernels and LXDE only requires a Pentium II and 128 MB ram if one wishes to use like Firefox or OpenOffice.org. It is said that LXDE alone can run in as little as 64 MB ram."

Comments (none posted)

Page editor: Rebecca Sobol
Next page: Development>>

Copyright © 2007, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds
Powered by Rackspace Managed Hosting.