Nicht das Gentoo Wöchentlich Neuigkeitenbrief, Ausgabe 8

Snowflakes, silently dancing through the air, each unique but still all alike ... the wind slowly twisting them in spirals, vortexes, loops; and yet, all falling to the ground where they would remain until spring. It seemed like an eternity ago, yet it had been only 7 months when they had met here for the first time. A great time of the year, when plants were waking up from that long slumber, leaves were unfolding and colours were brighter than any other time of the year. All that was to come again in the great cycle of nature, the wheel of time revolving as it had done for eons before ...

Travel information

With the current drop of the dollar, only temporarily slowed down by massive infusions from various interested parties, travel to the US is cheaper than ever before. After hitting parity with the Canadian Dollar and the Swiss Franc the Australian Dollar is the next milestone in the race to the bottom ... Enjoy it while you can and watch the world's economy crumble around you!
Ve arr not amused!

The big shootout: Package Manager Duel, and a Package Mangler

As some people might know there's portage, the Gentoo Package Manager, the pkgcore Package Manager and Paludis, the other Package Mangler. So, of course, they need to be compared, because we all love comparing apples to jetfuel just to notice that bricks can't swim. Always a good discussion starter, that ... So, let's have a look at the contestants:

Versions

Really important, that one ...
portage: 2.1.4.4 ... mature technology
pkgcore: 0.4.1 ... getting there
paludis: 0.26 ... one tenth of a portage

Installation time

All times wall time unless indicated otherwise, run on a 2Ghz dualcore AMD64 X2 3800+ with 4GB RAM and a 4-disk SATA raid.

portage: ~20 seconds, including all first-level dependencies ~8 minutes
pkgcore: ~25 seconds (similar as portage with deps)
paludis: ~1520 seconds (~8900 seconds with direct dependencies)

This might look broken, but the 8900 seconds are one gcc recompile because the installed version was incompatible (99 minutes), plus boost (~20 minutes) plus paludis (25 minutes). As a reference "emerge -e system" takes around 3.5h or 13000 seconds.

Size

Of course install time is quite arbitrary, what matters more is the installed size, right?

portage:            Total files : 186 
           Total size  : 1504.34 KiB
pkgcore:            Total files : 409
           Total size  : 2121.04 KiB
paludis:           Total files : 1887
           Total size  : 41662.27 KiB

So much for that. most of the difference between portage and pkgcore is documentation (~40 files) and unittests (~100 files) which pkgcore pulls along, so realistically speaking those two are "the same" size. But what's that behemoth doing there? Almost 42MB?
What hurts even more ... it has boost as a dependency. Look:
* size of dev-libs/boost-1.34.1-r2
           Total files : 4145
           Total size  : 143739.63 KiB
And just for comparison ...
* size of dev-lang/python-2.4.3-r4
           Total files : 2867
           Total size  : 31945.22 KiB
So, to recapitulate, portage and python are smaller than paludis, and paludis on a naked stage3 just doubles the size of it. Hmmm ... that looks somehow broken. We're talking about a difference of 20000% in marketingterms!

Out of the box behaviour

This was done from a clean gentoo stage3.

portage: Works out of the box.
pkgcore: Works out of the box.
paludis: Fails hard with a cryptic error

So what happened? Let's see:
Unhandled exception:
  * In program paludis --install genlop:
  * When making environment from specification '':
  * When loading paludis configuration:
  * Paludis configuration error: Paludis configuration error: Can't find configuration directory (tried '/root/.paludis', '/etc/paludis') (paludis::paludis_environment::PaludisConfigNoDirectoryError)
So it looks for some configuration things and doesn't install any usable defaults. A small hint and 25 minutes later it is recompiled with USE="portage", and ...
  * When parsing key/value configuration file'/etc/make.conf':
  * Configuration file error: /etc/make.conf: Unknown command or broken variable 'test', trailing text 'is broken
NOCOLOR="true"
PORT_LOGDIR="/var/log/portage"
PORTAGE_NICENESS=10
PORTAGE_ELOG_SYSTEM="save"
PORTAGE_ELOG_CLASSES="info warn error log qa"


USE="X gcj objc portage"
' (paludis::ConfigFileError)
What happened? Noone knows. "test" seems to be missing. Or not? The shown fragment doesn't actually show where the error happened. Mmmmh great ...
localhost / # grep test /etc/make.conf
FEATURES="buildpkg" # test is broken
Now it makes sense, although it is still incorrect behaviour. So we fix the make.conf and we are actually able to use it.

Help

This is one of the more important features, $application --help. Let's compare:

emerge --help 14 lines, very dense; --help --verbose 334 lines, very verbose
pmerge --help 63 lines, normal unix doc
paludis --help 233 lines, confusing

I have no idea what --dl-pre-as-post-and-mail-per-express-on-sundays does, but there are many of them in paludis. pkgcore is a bit terse, but very normal unixy manpage; portage has a short help that is a bit too compact, but offers the most verbose help when asked.

Install something

That's the part where we try to actually use them package managers and manglers:

emerge foo
pmerge foo
paludis --install foo

Interesting to see that paludis must go down a different path again.

Update everything

emerge -u world or emerge -uND world, the latter updating everything including useflags.

pmerge -u -s system -s world or pmerge -uD -s system -s world - pkgcore distinguishes between system and world sets, so both need to be mentioned. But don't despair, -s installed works quite well and does what you think it does.

paludis --install --show-use-descriptions none --show-reasons none world ?
paludis -i --dl-reinstall-scm weekly --dl-installed-deps-runtime pre-or-post --dl-uninstalled-deps-suggested try-post --continue-on-failure if-satisfied world ?

It's quite hard to find something that is equivalent to what portage does in paludis. And then you get around 100 lines of output at the top and 80 at the bottom unrelated to what you asked for, forcing you to scroll around a lot to see what just happened. If something fails you might be able to scroll up ... or not. Great! :)

Testing resolver speed

emerge -p gnome && time emerge -p gnome 5 seconds
354 lines of output

pmerge -p gnome && time pmerge -p gnome 2 seconds
349 lines of output

paludis -ip gnome && time paludis -ip gnome 12 seconds
2071 lines of output plus ~100 on stderr

So quite unsurprisingly paludis is the slowest of the bunch - what do you expect from this behemoth. And it spews so much output that you won't be able to see what just happened.

Recapitulation

Portage is the most reliable and well-tested of the bunch. It's also the smallest and offers good help. If there's one label for it it would be "it just works".
Pkgcore is quite similar to portage, having more docs, unittests and overall a slightly better performance. The only real differences are in the commandline options and some cosmetic differences in the output, but if you labeled it as "portage 2.2" most people would not be able to see the difference. It still lacks a few features here and there, but will reach parity with portage at some point in the future.
Paludis is just off the map. It needs a huge infrastructure to run, almost doubling the size of a stage3. It can't run with gcc 3.3, 4.0, 4.1.1 and 4.3, reducing the candidates to 3.4.6, 4.1.2 and 4.2.x. Add to that the inability to use -g (for debug), -O0, -Os and -O3 in CFLAGS and you get a creation that is too fragile to be a system package. The lack of structured help and the overly verbose output make it extremely hostile to new users. And then it is the slowest of them all just to rub some Tabasco into the papercut. Very amusing, but a futile exercise in "because we can" And any time you might save in the dependency calculation will be lost in the build-time ... even if you save a minute every day and there are only two updates for paludis every year you've lost time.

Winner

There never really was any competition. Portage is still the best you can find. And paludis is about as much a replacement for it as apt-get or yum ...

Interview: Leonie

(1) Was ist dein Verhältnis zu Gentoo?
uhm... Gentoo ist lila? Lila find ich gut.

(2) Wie hast du das erreicht? Wieviel Zeit braucht das?
Na ja, das kann man nicht einfach so erreichen, das ist nämlich erblich. Mein Papa hat das auch.

(3) Scheint also in der Familie zu liegen. Die wievielte Generation mit Gentoo ist das nun? Die genetische Expression hat zuerst bei meinem Vater stattgefunden, das scheint rezessiv vererbt zu werden...

(4) Faszinierend. Woran arbeitest du momentan am liebsten?
An meinem Hintergrundbild. Das muss auch noch schön lila werden.

(5) Welchen Windowmanager oder welches Desktop Environment benutzt du dafür?
Fluxbox, das ist nämlich schön klein und man kann das auch lila machen.

(17) Was machst du wenn du nicht gerade Freunden die Finger brichst?
Zur Zeit grad lernen, sonst meistens Gänseblümchen.

(18) Warum Gänseblümchen? ist das nicht etwas langweilig?
Nein, Gänseblümchen sind was ganz Tolles. Fast so gut wie fröhliche Photonen, nur gänseblumiger, und ausserdem kann man die überall hinmalen, das geht mit Photonen nicht ganz so gut.

(ε) Hmm, aber Photonen verteilen sich gerne von alleine, und sie sind so schön dual. Sind Photonen nicht überlegen?
Ich finde, Gänseblümchen sind mindestens genausogut. Sogar besser, die sind nämlich nicht nur dual, sondern mehr: Die haben oben die Blüte, dann drunter den Stängel und, was das Photon nicht hat, unten nochmal Wurzeln. Deswegen sind Gänseblümchen den Photonen in dieser Hinsicht überlegen.

(buuurp) Was ist dein Lieblingsbier?
Das Kriek mit Kirsch ist lecker, aber Rochefort ist sinnvoll, deswegen kann ich mich da nicht entscheiden.

(Aaaah!) Was ist klein, grün mit gelben Punkten und hat sechs beine?
Ein grüner Marienkäfer mit gelben Punkten!

(lol) Wenn du das sagst, aber es läuft gerade über deine rechte schulter hoch ...
Ohoh. Hat das was mit dem lustigen Zucker zu tun...?

(0)Nein, aber der ist nie falsch ...
Vielleicht sollte man das sechsbeinige kleine grüne Ding mit gelben Punkten mit einem Gänseblümchen kreuzen und mit lilanen Photonen bestrahlen und gucken, was passiert. Das ist immernoch besser als zuzulassen, dass es einfach so die Weltherrschaft an sich reisst.

Dies ist nun das Ende unseres Interview mit Leonie. Wir bedanken uns fuer die fachlich kompetenten Aussagen und BAUM!