Smart package manager in opkomst

Hans Lunsing, 29 oktober 2005

APT als universeel pakketbeheersysteem

APT, de Advanced Packaging Tool, het pakketbeheersysteem van Debian en afgeleide Linux distributies, is bekend door de uitstekende wijze waarop het afhankelijkheden tussen pakketten oplost en het gemak waarmee het te bedienen is. Het werd zelfs nog een stuk gemakkelijker door de komst van Synaptic, een grafische werkomgeving voor het gebruik van APT. APT werkt met het eigen pakketformaat van Debian, maar veel Linux distributies zijn gebaseerd op rpm, het door Redhat ontwikkelde pakketformaat. De grotere rpm distributies, Mandriva, SUSE en Fedora (de open versie van Redhat), hebben eigen pakketbeheersystemen voor rpm ontwikkeld of ze van anderen geleend. Zo werkt Mandriva met zijn eigen urpmi, SUSE met het bekende Yast, en heeft Fedora Yum overgenomen van de Yellow Dog distributie.

Er is kortom weinig eenheid in pakketbeheersystemen. Toch is er één systeem dat op de meeste distributies kan worden gebruikt. Door Conectiva, een Braziliaanse Linux distributie die is opgegaan in Mandriva, is APT indertijd geporteerd naar rpm systemen onder de naam Apt-rpm. Het is nu voor elk van de grote rpm distributies beschikbaar samen met de bijbehorende werkomgeving Synaptic. Op Mandriva kan het eenvoudig in plaats van urpmi worden gebruikt omdat het met de urpmi repositories (waar pakketten ter beschikking wordt gesteld) kan omgaan. SUSE heeft Apt-rpm tot versie 10.0 nooit officieel ondersteund en nam Apt-rpm en Synaptic zelfs niet in haar distributie op. SUSE pakketten voor apt en Synaptic zijn echter wel verkrijgbaar en een groep SUSE gebruikers en mogelijk ook medewerkers onderhouden uitgebreide Apt-rpm repositories. In versie 10.0, de eerste open versie van SUSE, zijn Apt-rpm en synaptic voor het eerst opgenomen. Voor Fedora werd Apt-rpm aanvankelijk als pakketbeheersysteem gekozen. Op aandringen van Redhat is dat Yum geworden, maar Apt-rpm bleef beschikbaar.

Synaptic is een GTK programma en daarom vooral goed in Gnome geïntegreerd. Hoewel het ook prima onder KDE werkt heeft de maker van Synaptic (en Apt-rpm), Gustavo Niemeyer, een begin gemaakt met een op QT gebaseerde werkomgeving voor KDE onder de naam Kynaptic. Gustavo heeft het echter nooit volledig afgerond omdat hij sinds halverwege vorig jaar aan een nieuw pakketbeheersysteem werkt met de naam Smart. Kynaptic is in zijn huidige staat bruikbaar, maar mist veel van de functionaliteit van Synaptic. Ondanks dat werd het de officiele werkomgeving voor APT in Kubuntu, het KDE zusje van Ubuntu. Kennelijk voldeed het niet, want Kubuntu is in versie 5.10 (Breezy Badger) inmiddels over op een nieuwe werkomgeving voor APT met de passende naam Adept. Daarbij behoort de Adept Updater.

Smartpm als opvolger van APT, en van meer

Inmiddels is er op het gebied van pakketbeheer een nieuwe ster aan het firmament verschenen: de Smart package manager (Smartpm). Zoals gezegd werkt Gustavo Niemeyer , in samenwerking met anderen sinds halverwege vorig jaar aan dit project. Het werd tot september j.l. gefinancierd door Conectiva, en sindsdien door Canonical Ltd. Smart kan met verschillende typen repositories werken (APT in zowel zijn deb- als rpm-vorm, urpmi, yum, en ook Red Carpet en Slackware)  en vervangt dan ook onder meer APT, urpmi en yum. Het belangrijkste verschil met deze oudere pakketbeheersystemen is dat de algorithmes voor de keuze van te installeren, te verwijderen en bij te werken pakketten sterk zijn verbeterd. Smartpm komt daardoor in verschillende gevallen tot een goede oplossing waar de andere managers het laten afweten. Smartpm kan op de opdrachtregel worden gebruikt, maar heeft ook een grafische werkomgeving à la Synaptic. In hoog tempo verschijnen nieuwe versies en bugfixes. Het actuele versienummer is 0.40.

De grote rpm distributies gaan weliswaar nog niet helemaal over op Smartpm, maar ze ondersteunen het inmiddels wel actief. Blijkens een bericht op Distrowatch krijgt SUSE 10.1 naast Yast de beschikking over Smartpm. Het systeem wordt daarin zelfs aangekondigd als opvolger van APT.

Eind december 2004 al werd op het FedoraForum aangekondigd dat Smartpm pakketten klaar stonden voor gebruikers van Fedora Core 3.  Blijkens een recent artikel op LWN wordt gebruikers van Fedora Core 3 zelfs aangeraden af te stappen van Apt-rpm en over te gaan op nieuwere tools als Yum of Smartpm. Als belangrijkste reden wordt aangevoerd dat Conectiva Apt-rpm heeft opgegeven en nu werkt aan Smartpm. Daardoor zullen bugs in Apt-rpm mogelijk nooit worden hersteld en zal ontbrekende functionaliteit nooit worden aangevuld, zodat het voor het Fedora Project onmogelijk wordt Apt-rpm nog te ondersteunen. Omdat Smartpm ook de Yum repositories (repodata) ondersteunt kan het goed in plaats van Yum worden gebruikt.

Mandriva, de opvolger van Mandrake, is in Mandriva Linux 2006 volgens Distrowatch over op Smartpm als package manager. In een recent interview met Linux Format liet de oprichter van Mandrake, Gaël Duval, al doorschemeren dat Smartpm op korte termijn met urpmi zal worden geïntegreerd, zo meldt Distrowatch. Als reden gaf hij dat Smartpm betere algorithmes heeft en meer geavanceerd is. Daarbij speelt natuurlijk mee dat Conectiva, waar de ontwikkeling van Smartpm is gestart, met Mandrake is opgegaan in Mandriva, zodat Smartpm in wezen een product van eigen huis is.

In het Debian kamp blijft APT voorlopig nog koning, maar Ubuntu en Kubuntu leveren Smartpm wel in hun universe repository. Ook Debian zelf stelt het beschikbaar.

Het is interessant te zien hoe dit zich verder ontwikkelt.

Test van Smartpm

Ik heb Smartpm getest op SUSE 10.0 in vergelijking met Synaptic/APT. Het eerste dat me opviel was dat Smartpm weliswaar een bescheiden hoeveelheid geheugen gebruikt als alleen de RPM database is geladen, maar dat dat snel toeneemt naarmate meer zgn. "kanalen" worden toegevoegd, afhankelijk van de hoeveelheid software die daarin ter beschikking wordt gesteld. Nadat ik al mijn APT repositories had toegevoegd was het beslag op het fysieke geheugen iets meer dan 130Mb, dat is ruim 25%. De oorzaak daarvan wordt uitgelegd in de FAQ.

Een tweede punt is dat het configuratiebestand geen tekstbestand is, maar binair. Je kunt de configuratie dus alleen maar via Smartpm zelf aanpassen. Nu blijkt dat redelijk simpel te doen, en als je er eenmaal de slag van te pakken hebt gaat het ook prima en sneller zelfs via de command line interface van Smartpm. Het configuratiebestand staat niet onder /etc/smart maar onder /var/lib/smart. Onder /etc/smart kunnen de gegevens van toegevoegde kanalen staan in tekstformaat.

Het programma is gemakkelijk in gebruik, en dat het betere algorithmes gebruikt merk je. Smartpm spoort meer mogelijke upgrades op. Van enkele pakketten bleken bij upgrade de namen te zijn veranderd. Synaptic herkende dat niet als mogelijke upgrade, maar Smartpm wel. Verder kun je met Smartpm in tegenstelling tot Synaptic ook downgraden. Zo was het mij met Synaptic onmogelijk om een bepaalde library te verwijderen omdat een ander pakket er afhankelijk van was. Van dat andere pakket was echter ook een iets oudere versie beschikbaar die met een iets oudere versie van de library in kwestie werkte. En die laatste stond al op mijn systeem omdat hij voor weer andere software nodig was. Een simpele downgrade van het pakket was dus voldoende. Synaptic kwam daar niet achter, maar Smartpm wel. Smartpm laat dan ook alle beschikbare versies van een pakket zien en niet alleen de nieuwste zoals Synaptic.

Naar mij mening is Smartpm een goede opvolger voor APT. Het zou echter wel fijn zijn als het geheugenbeslag wat kon worden verminderd. Door zoals aangegeven in de FAQ de cache en de Python JIT niet te gebruiken bespaar je een heel klein beetje op het geheugen, maar dat weegt niet op tegen de geringere snelheid.