Soorten Softwarepaketten

Hoe een softwarepakket onder Linux moet worden geinstalleerd hangt af van zowel vorm als inhoud van het pakket. In beide kent Linux de nodige variatie. Een aantal pakketformaten hoort bij één of ander systeem voor het beheer van pakketten. Daarnaast zijn er pakketformaten die niet aan een pakketbeheersysteem gebonden zijn.

 

^topSystemen voor pakketbeheer en bijbehorende formaten

De belangrijkste systemen voor pakketbeheer zijn RPM, dat door SUSE, Mandriva, Fedora, Redhat en afgeleiden wordt gebruikt, en dpkg, in gebruik bij Debian en afgeleide distributies zoals Ubuntu, Mepis en Knoppix. Daarnaast is het systeem van Slackware, pkgtool van belang. Voorts zijn nieuwe systemen ontwikkeld, met name Autopackage en Klik. Allemaal hebben ze hun eigen pakketformaat.

  • RPM. Het door populaire distributies als SUSE, Mandriva en Fedora toegepaste formaat is dat van de RPM Package Manager. De naam van rpm pakketten voldoet aan stricte regels: hij bevat naam, versienummer, uitgavenummer en architectuur (processor), en heeft de extensie .rpm. Alle functionaliteit van de RPM is besloten in een programma dat, niet geheel onverwacht, de naam rpm draagt en vanaf de opdrachtregel wordt aangestuurd. Met dit programma kunnen pakketten worden geinstalleerd, bijgewerkt en gedeïnstalleerd. Het houdt een database bij van alle ermee geïnstalleerde pakketten, waarin onder meer naam, versie, uitgave (release), beschrijving en een lijst van afhankelijkheden zijn opgeslagen. Met „afhankelijkheden” worden andere pakketten bedoeld die nodig zijn om het pakket in kwestie te kunnen gebruiken. De RPM zal een pakket weigeren te installeren als pakketten waarvan het afhankelijk is niet zijn geïnstalleerd. De RPM biedt naast installatie, bijwerken, verificatie en deïnstallatie ook de mogelijkheid om in de database opgeslagen gegevens over geinstalleerde pakketten op te vragen (de „query” functie). Met rpm kunnen niet alleen binaire pakketten worden geïnstalleerd, maar ook broncode pakketten. In dat geval wordt de broncode met rpm eerst gecompileerd tot een binair pakket dat vervolgens op de gebruikelijke wijze kan worden geïnstalleerd. De naam van broncode pakketten eindigt op .src.rpm.

    Een universeel pakketbeheersysteem dat ook afhankelijkheden oplost, zoals APT voor Debian, is er voor RPM niet. Elke distributie heeft zijn eigen systeem, zoals YaST voor SUSE, urpmi voor Mandriva en yum voor Fedora. Daarnaast is APT geporteerd naar RPM onder de naam Apt4rpm en later apt-rpm. Dit kan tamelijk universeel worden gebruikt.

    Het RPM systeem wordt ook door allerlei andere distributies gebruikt, zoals Ark Linux, Lineox, PCLinuxOS en Yoper.

  • Debian. Het tweede belangrijke pakketformaat is dat van de door een vrijwilligersorganisatie samengestelde distributie Debian, dat een eigen Debian package management tool heeft met de naam dpkg. Het heeft ongeveer dezelfde functies als rpm. Ook de naam van Debian pakketten voldoet aan dezelfde stricte regels als die van RPM pakketten, en heeft de extensie .deb. Net als RPM kent Debian pakketten met broncode, maar deze bestaan uit twee of drie delen. Eén ervan bevat instructies voor het op de juiste uitpakken van de broncode uit de bijbehorende tarball en heeft de naamsextensie .dsc (Debian source package).

    Om afhankelijkheden en configuraties van de pakketten te beheren is als schil om dpkg het Advanced Packaging Tool (APT) ontwikkeld met de programma’s apt-<functie> als belangrijkste gereedschap. Dit zorgt ervoor dat niet alleen het gevraagde pakket, maar zonodig ook alle pakketten waarvan het afhankelijk is van onder meer CD of a priori gegeven lokaties op het internet worden opgehaald en geïnstalleerd. Er zijn verschillende beheersprogramma’s voor APT waarvan Synaptic met GUI de belangrijkste is.

    Het Debian systeem wordt eveneens gebruikt door van Debian afgeleide distributies zoals het populaire Ubuntu en Kubuntu, Mepis, Knoppix, Kanotix en de commerciele distributies Linspire en Xandros.

  • Slackware. Naast de RPM en Debian package management systemen is er nog het minder diepgaande Slackware Package Management systeem van Slackware. Dit is gebaseerd op het met gzip gecomprimeerde tar archiefsysteem (zie verderop) en heeft .tgz als naamsextensie voor zijn pakketten. Het belangrijkste verschil met een gewoon tar/gzip pakket is dat een Slackware pakket een directory install bevat waarin een beschrijving van het pakket en eventuele bij installatie uit te voeren scripts zijn opgenomen. Niet elk pakket met de .tgz extensie is een Slackware pakket omdat deze extensie in plaats van .tar.gz ook vaak voor gewone tar/gzip pakketten wordt gebruikt. Het belangrijkste beheersprogramma voor het Slackware Package Management systeem is het met een menu bestuurde pkgtool. Daarnaast zijn verschillende beheersprogramma’s met GUI beschikbaar. Met het Slackware systeem kunnen pakketten worden geïnstalleerd, ge-upgrade en gedeïnstalleerd, maar met afhankelijkheden wordt geen rekening gehouden. Ook zijn pakketten met broncode niet in het systeem opgenomen.

    Enkele van Slackware afgeleide distributies zijn VectorLinux, de Nederlandse distributie Nonux, en Topologilinux

  • Autopackage. Een vrij recent universeel systeem voor verspreiding en installatie van Linux software is Autopackage. Een AutoPackage-pakket, kortweg een autopackage, is ingebed in een installatiescript en heeft een naam met extensie .package. U kunt het op elke distributie probleemloos installeren: u downloadt het pakket naar uw PC, klikt op het icoontje en alles gaat verder vanzelf! U kunt AutoPackage best vergelijken met het installeren van software onder Windows. Afhankelijkheidsproblemen (dependencies) worden automatisch opgelost door lokale bestanden of bestanden van servers op afstand. Een probleem is dat Autopackage niet is geïntegreerd met de eigen pakketbeheerder van de distributie (met name rpm en dpkg (Debian)). Dat zou in een volgende release worden opgelost.

    Onze belastingdienst gebruikt Autopackage voor het aangifteprogramma voor Linux, dat voor de aangifte 2005 voor het eerst in gebruik genomen is.

    Hoewel de toekomst van Autopackage er een paar jaar geleden veelbelovend uitzag is de voortgang van het project vrijwel tot staan gekomen. Van acceptatie door de gangbare distributies is geen sprake. Of het project overleeft is onzeker.

  • Klik. Een handig systeem voor het gemakkelijk proberen van software in Linux zonder een echte installatie is Klik. Het is geïnspireerd door MacOS. Bij aanklikken van een programma op de Klik server wordt a.h.w. een recept aangemaakt waarmee het programma op uw systeem kan draaien. Op basis van dit recept wordt een Klik pakket aangemaakt. Dit is gecomprimeerd en heeft de bestandextensie .cmg. Het wordt op uw desktop geplaatst en is direct te gebruiken zonder dat verdere installatie nodig is. Als u de software niet meer nodig hebt hoeft u alleen maar het Klik pakket te verwijderen.

    Klik wordt ondersteund in SUPER, ofwel SUse PERformance enhanced release. Dit is een niet-officiele uitgifte van OpenSUSE, die als een testbed dient voor experimentele ontwikkelingen, zoals snelheidsverbeteringen of extra mogelijkheden.

Verscheidene minder bekende distributies hebben soms innovatieve eigen pakketbeheerssystemen ontwikkeld. Ik noem hier alleen het bijzondere Portage dat is ontwikkeld voor de Gentoo Linux distributie. Het heeft geen eigen pakketformaat maar ondersteunt zowel RPM als tarballs (.tgz). Het is in staat om aan de hand van een reeks configuratiebestanden vrijwel alles volgens uw specificaties vanaf de broncode op te bouwen. Portage’s beheersprogramma heet emerge, dat u op dezelfde wijze kunt gebruiken als Debian’s apt-get. Alles wat nodig is om het gewenste pakket op uw systeem aan het werk te krijgen wordt door Portage gedaan, met inbegrip van compileren en oplossen van afhankelijkheden.Het gaat te ver om er hier dieper op in te gaan, maar als u geïnteresseerd bent kunt u hier een Nederlandstalige handleiding vinden. Let wel, Gentoo is niet geschikt voor beginners in Linux.

 

^topOp zich zelf staande pakketformaten

Hier komen een aantal op zich zelf staande pakketformaten aan de orde. De belangrijkste zijn de tarball, een gecomprimeerd archief met een niet vaststaande inhoud, en het CD-ROM image, dat vooral voor Linux distributies wordt toegepast.

  • Tarball. Veel Linux software wordt verspreid als gecomprimeerd tar/zip archief, dat in de Linux wereld bekend staat als tarball. Voor het archiveren wordt het programma tar gebruikt, terwijl het comprimeren gebeurt met gzip of bzip2. Een tar archief heeft extensie .tar. Daar wordt .gz aan toegevoegd als de tarball met gzip is gecomprimeerd, en .bz2 als hij met bzip2 is gecomprimeerd. Extensies die veel voorkomen zijn dus .tar.gz en .tar.bz2. De extensie .tar.gz wordt vaak afgekort tot .tgz, ook al gaat het niet om een Slackware pakket. Het merendeel van de als tarball verspreide pakketten bevat broncode met bijbehorende directorystructuur. In hun root directory staan meestal scripts voor het automatisch configureren, compileren en installeren van de software. De veel minder voorkomende binaire tarballs daarentegen hebben vaak geen duidelijke structuur. Wel bevatten ze vaak aanwijzingen voor handmatige installatie en soms zelfs een installatiescript. Zo niet, dan bent u op u zelf aangewezen.
    Aan de naam van een pakket is meestal niet te zien of het om broncode of om een al gecompileerd programma gaat. Soms staat er „.src” voor de uitgang, of is het woord „source” in de naam opgenomen.

  • Java archief (jar). Java applicaties worden normaliter verspreid als pakketten met de naamsextensie .jar. Jar staat voor „Java ARchive” (om te onthouden: jar is tevens het Engelse woord voor pot of kruik). Het zijn in zip formaat gecomprimeerde pakketten die uitvoerbaar zijn gemaakt door er de nodige informatie voor de JVM (Java Virtual Machine) in op te nemen. De JVM moet namelijk weten wat de te starten main class is.

  • ISO. CD-ROM pakketten met een filesysteem voor CD-ROM. Hun extensie is .iso, of ook wel eens .iso.bin. Ze worden niet op de harde schijf geïnstalleerd maar op CD-ROM gebrand met dien verstande dat niet het pakket zelf, maar zijn inhoud, een filesysteem volgens de ISO9660 standaard (vandaar de extensie iso) wordt gebrand.
    Het zijn vooral Linux distributies die op deze wijze worden verspreid. Daarbij moet u overigens niet alleen maar denken aan complete distributies met alles er op en er aan, maar ook aan kleine distributies die helemaal op het uitvoeren van één specifiek programma zijn gericht. Eigenlijk is dan sprake van een zelfstandig programma dat geen apart besturingssysteem meer nodig heeft.

  • Binair. Commerciële software wordt nogal eens verspreid als een binair uitvoerbaar bestand, vaak met de extensie .bin, of in de vorm van een installatiescript met de extensie .sh, waarin het pakket in gecomprimeerde vorm is opgenomen. Zo’n pakket wordt simpel geïnstalleerd door het bestand uit te voeren.

 

^topGereedschappen

Alle beheerssystemen voor software en pakketformaten hebben hun eigen al dan niet grafische interfaces en tools. Deze komen bij de bespreking van de verschillende systemen aan de orde. Hier wil ik de aandacht vestigen op enkele programma’s die bij het beheer van meerdere soorten pakketten van pas kunnen komen.

Veel filemanagers bieden de mogelijkheid de inhoud van een pakket te bekijken, zodat u bijvoorbeeld voor het installeren al kunt zien waar het al zijn bestanden neerzet. Met name de console filemanager Midnight Commander (mc) is erg gemakkelijk in het gebruik. Met mc kan de inhoud van een RPM of Debian pakket niet alleen worden onderzocht, maar kan het pakket ook als het ware van binnenuit worden geïnstalleerd. In de root directory van het pakket laat mc namelijk twee virtuele uitvoerbare bestanden zien: INSTALL en UPGRADE (deze laatste alleen bij RPM). Als u de cursor op één van deze twee zet en op de <Enter> toets tikt zal het pakket geïnstalleerd dan wel vernieuwd worden. Ook tarballs en Java archieven kunt u met mc van binnen bekijken.

Voor de Gnome desktop is fileroller een mooie grafische schil voor het beheren van allerlei pakketformaten. Het leest RPM en Debian pakketten en CD-ROM images, en leest en schrijft tarballs en andere archiefformaten zoals zip, rar, lha etc. Voor de KDE desktop is er een soortgelijk programma met de naam ark, maar het is wel wat beperkter. Zo kan het geen RPM pakketten en CD-ROM images lezen.

Met het bijzonder handige programma alien kunnen de verschillende pakketformaten naar elkaar worden geconverteerd. Het is geschreven in de scripttaal Perl, dus u dient Perl te hebben geïnstalleerd om alien te kunnen gebruiken. Om van en naar RPM dan wel naar Debian pakketten te converteren moeten bovendien de RPM dan wel Debian package management tools ter beschikking staan. Als u bijvoorbeeld een programma op uw systeem wilt installeren dat alleen in de vorm van een (binaire) tarball beschikbaar is kunt u alien gebruiken om de tarball naar een RPM pakket te converteren. Zo kunt u toch gebruik maken van alle voordelen van RPM, zoals checks op afhankelijkheden en eenvoudige deïnstallatie. Voorwaarde is dan wel dat de uiteindelijke directorystructuur al in de tarball is vastgelegd. En helaas, dat is heel vaak niet het geval, zodat het dan toch nog nodig is om handmatig een „tussen” tarball met de juiste directorystructuur samen te stellen. De makers van alien raden overigens aan om het programma niet te gebruiken voor de conversie van belangrijke systeempakketten zoals sysvinit en shared (gedeelde) libraries.

 

^topPakketten met broncode

De inhoud van de pakketten kan zoals gezegd bestaan uit klare direct te gebruiken programma’s, of uit broncode. Het grote voordeel van broncode is dat het op elk Linux of UNIX systeem kan worden ingezet. De maker van het programma hoeft dan geen pakketten voor alle mogelijke systemen te maken. Configuratie voor een specifiek systeem wordt aan de gebruiker overgelaten. Ook als u geen idee heeft hoe dat moet hoeft u zich daar vrijwel nooit zorgen over te maken omdat slimme programma’s er voor zorgen dat het configuratieproces vrijwel geautomatiseerd verloopt. Daarna kan het programma eveneens vrijwel geautomatiseerd worden gecompileerd en tenslotte geïnstalleerd. Vaak worden beide methodes van verspreiding gecombineerd: de maker van het programma levert enkele gecompileerde pakketten, bijvoorbeeld RPMs, voor de meest gangbare systemen en een automatisch configureerbaar broncode pakket voor alle andere systemen. Als het programma onder de GPL (General Public License) wordt verspreid moet de broncode in elk geval ter beschikking staan en het is dan vaak maar een kleine moeite hem ter wille van de gebruiker automatisch configureerbaar te maken.

De compilatiestap zorgt ervoor dat het programma in systeemspecifieke machinecode wordt omgezet. Om broncode te kunnen compileren moet tenminste de volgende ontwikkelprogrammatuur aanwezig zijn:

  • De programma’s autoconf en automake voor het automatisch configureren van de broncode voor het systeem en voorbereiden van de compilatie en installatie.
  • Het programma make, nodig voor het uitvoeren van compilatie- en installatiescripts
  • De geschikte compiler, voor C (meestal) de GNU C compiler, gcc, en voor C++ (soms) de GNU C++ compiler, gpp
  • Het „binutils” pakket met programma’s als de assembler as, en de linker ld.

Daarnaast zijn ontwikkelpakketten nodig van de libraries die het programma gebruikt. Deze bevatten onder meer C header files en speciale library versies. Ze zijn vaak te herkennen doordat hun naam de term „devel” bevat. Minimaal is nodig:

  • Het ontwikkelpakket bij de C library, met verschillende libraries en bijbehorende C header files.

Voor grafische programma’s komt daar tenminste bij:

  • Voor X Window programma’s: het development pakket voor X Windows, met libraries en header files
  • Voor KDE programma’s: de development pakketten voor de QT library en de KDE libraries, met vnl. header files
  • voor Gnome programma’s: de development pakketten voor de GTK library en de Gnome libraries, met vnl. header files.

Daarnaast kunnen vele programma’s nog specifieke eisen hebben. In het algemeen zullen de C (en/of C++) header files die behoren bij de libraries waarvan de programma’s afhankelijk zijn op het systeem moeten staan. Programma’s kunnen ook in andere talen dan C of C++ zijn geschreven, zoals b.v. Pascal. In dat geval moet de juiste compiler, voor Pascal b.v. de FreePascal compiler, ppc386, beschikbbaar zijn. Ook wordt wel eens de aanwezigheid van een bepaalde script compiler zoals perl, python of tcl/tk geëist. Als u zelf geen programmeur bent is het dus heel goed mogelijk dat u het een en ander moet installeren voordat u een programma, dat in de vorm van broncode geleverd is, kunt compileren en uiteindelijk gebruiken.

^top

categories []