Compileren en installeren
Over hoe je open source software kunt installeren
Roeland Kok
Software in Linux
Als je in Windows een programma wilt installeren, doe je dat meestal door te dubbelklikken op Setup.exe en een aantal keren op 'Next' te klikken. Dat is het 'voordeel' van gesloten programma's: je krijgt gewoon uitvoerbare bestandjes en de installer doet het werk. Met open source software, waarbij je de sourcecode (de programmeercode) downloadt van Internet.
Elke distributie heeft een voorkeur voor een bepaalde manier van software installeren. RedHat, Mandrake en SuSE gebruiken het RPM-systeem, Debian gebruikt .deb-pakketten en zo zijn er nog meer varianten. Elk systeem heeft zijn voor- en nadelen. De RPM en .deb-pakketten bevatten software die al gecompileerd is. Deze kun je met een eenvoudig commando installeren, of via bijgeleverde installatieprogramma's.
Maar wat nu als er geen RPM of .deb-file te vinden is op de website van het programma dat je graag wilt hebben? Meestal vind je dan bestanden die eindigen op '.tar.gz' of '.tgz'. Dit zijn ingepakte archieven die de sourcecode van de software bevatten. Om deze op je systeem te kunnen gebruiken, moet je deze sourcecode eerst compileren. Dit artikel leert je hoe je dat moet doen.
Stap 1: Voorbereidingen
Linux is je favoriete besturingssysteem, dus we gaan er van uit dat je het netjes wilt houden. Daarom heb je je home-directory mooi ingericht met directory's (die heten in Windows mapjes of folders). Documenten gaan bijvoorbeeld in de directory 'documenten/' en alle downloads stop je in 'downloads/', toch? Mocht je alles gewoon in je home-directory gooien, zonder gebruik te maken van sub-mapjes, dan is dit het beste moment om dat af te leren!
Heb je dus nog geen directory's gemaakt in Linux, open dan je favoriete filemanager (bijvoorbeeld Konqueror of Nautilus), en maak in je homedirectory in elk geval de volgende mapjes aan:
- documenten
- downloads
- source
De directory 'documenten' zullen we in dit artikel niet gebruiken. De andere twee wel.
Stap 2: Het programma downloaden
Je hebt een mooi programma gezien in .tar.gz-formaat dat je graag wilt gebruiken. Het is een goed idee om dit voorbeeld te volgen en ons voorbeeldbestandje te downloaden: othello-0.03.tar.gz. Sla dit bestand op in de directory 'downloads'. Hier kun je voortaan altijd je downloads in bewaren. Het bestandje is binnen!
Stap 3: Het .tar.gz-archief uitpakken
Een '.tar.gz'-bestand is een ingepakt (gezipt: .gz) archief (.tar) van bestanden die bij elkaar horen. Om het archief uit te pakken, gebruiken we het tar-commando. Natuurlijk gooien we de inhoud niet zomaar in de home-directory, maar gebruiken we daar netjes een subdirectory voor. We hebben in de eerste stap een source-directory aangemaakt. Deze gaan we gebruiken om het bestand in uit te pakken.
Open een een console (Konsole, xterm, Terminal) en type achter de prompt in:
cd ~/source tar -xzvf ../downloads/othello-0.03.tar.gz
We geven met het commando tar opdracht om het bestand te unzippen (de 'z' in '-xzvf') en uit te pakken ('x'). De 'v' staat voor verbose, dat wil zeggen dat de computer moet laten zien wat hij doet. De 'f' moet vooraf gaan aan de bestandsnaam (file). De computer antwoordt met:
othello-0.03/ othello-0.03/Makefile.in othello-0.03/README othello-0.03/stamp-h.in othello-0.03/AUTHORS othello-0.03/COPYING othello-0.03/ChangeLog othello-0.03/INSTALL othello-0.03/Makefile.am othello-0.03/NEWS othello-0.03/TODO othello-0.03/acconfig.h othello-0.03/aclocal.m4 othello-0.03/config.h.in othello-0.03/configure othello-0.03/configure.in othello-0.03/install-sh othello-0.03/missing othello-0.03/mkinstalldirs othello-0.03/othello.c othello-0.03/othello.6
Je kunt hieraan zien welke bestanden er in het archief zaten en in welke directory de computer ze heeft geplaatst. Geef nu het commando:
ls
Dit is ongeveer hetzelfde als het 'dir'-commando in DOS. De computer laat zien:
othello-0.03
Dit is de nieuw aangemaakte directory. Open deze door te typen:
cd othello-0.03
Als je nog een keer het 'ls'-commando uitvoert, zie je de bestandjes van het programma Othello. Nu is het echter slechts broncode. In de volgende stap gaan we deze code compileren: we gaan het een uitvoerbaar programma maken!
Stap 4: Compileren
We gaan eerst het configure-script draaien. Deze wordt meestal meegeleverd in het pakketje. Dit script gaat kijken of alle benodigde onderdelen op ons systeem aanwezig zijn en bereidt de compilatie voor. Start configure met het commando:
./configure
Je ziet nu de volgende uitvoer:
creating cache ./config.cache
checking for a BSD compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking whether make sets ${MAKE}... yes
checking for working aclocal... found
checking for working autoconf... found
checking for working automake... found
checking for working autoheader... found
checking for working makeinfo... found
checking for gcc... gcc
checking whether the C compiler (gcc ) works... yes
checking whether the C compiler (gcc ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking how to run the C preprocessor... gcc -E
checking for ANSI C header files... yes
updating cache ./config.cache
creating ./config.status
creating Makefile
creating config.h
Als de computer een foutmelding geeft, dan geeft hij meestal ook de oorzaak. Meestal is het probleem dat een of meerdere pakketjes niet geinstalleerd zijn op je systeem. Gebruik het installatie-programma van je distributie om deze pakketjes alsnog te installeren of download de benodigde pakketjes van het Internet.
Als het allemaal goed is gegaan, is er een aantal bestanden gemaakt die de computer nodig heeft om het programma te compileren. We kunnen nu het volgende commando intypen:
make
Hiermee geven we opdracht om de sourcecode te compileren. Dit kan kort of lang duren, afhankelijk van het programma dat je wilt compileren. Othello is heel snel gecompileerd, omdat het een klein programmaatje is. Tijdens het compileren van Othello zie je op het scherm:
gcc -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -c othello.c gcc -g -O2 -o othello othello.o
Als make geen foutmeldingen geeft kunnen we blij zijn: we hebben het programma succesvol gecompileerd! We moeten echter nog een paar stappen uitvoeren om het programma voor iedereen beschikbaar te maken.
Stap 5: Installeren
Het programma moet op het systeem worden geinstalleerd. Dit moet je als root doen. Een gewone gebruiker heeft namelijk niet genoeg rechten om dat zelf te doen. We nemen aan dat je het root-wachtwoord weet. Dat heb je hier namelijk nodig. Geef de computer het commando:
su -c 'make install'
Su (set user) is een programma om tijdelijk als een andere gebruiker dingen uit te voeren. In dit geval als de root. De -c optie vertelt dat we een commando willen uitvoeren, in dit geval het commando tussen aanhalingstekens: 'make install'. De computer vraagt om het root-wachtwoord. Als je het goede wachtwoord hebt ingevoerd, installeert de computer het spelletje op je systeem.
Je kunt het nu uittesten met de opdracht:
othello
En, werkt het? :)
Stap 6: Netjes achterlaten
Als het programma goed is geinstalleerd, geef je het commando:
make clean
Dit zorgt er voor dat de bestanden die zijn ontstaan door de compilatie, opgeruimd worden. Eventueel kun je nog de othello-0.03 directory leeg maken en verwijderen. Dit kun je gewoon doen met je favoriete file-manager.
Naschrift
Het is altijd verstandig om voor dat je gaat compileren, de bijgeleverde documentatie te lezen. Dit kan je een hoop hoofdbrekens besparen. Meestal hebben de documenten namen als README en INSTALL. In het bestand ChangeLog kun je de laatste veranderingen aan het programma bekijken. Neem rustig de tijd om het door te lezen. Vaak staat er in de documentatie ook een website genoemd waar je meer kunt lezen over het programma.
Mocht je na een installatie het programma willen verwijderen, dan moet je vanuit de directory met de sourcecode het volgende commando geven:
su -c 'make uninstall'
Nog een tip: de source-directory kan rommelig worden als je veel programma's compileert vanaf de broncode. Ruim daarom regelmatig directory's op die je toch niet meer gebruikt en van programma's die al succesvol zijn geinstalleerd. Dit spaart op langere termijn veel schijfruimte!