8.3. tar.gz-pakker

Langt de fleste programmer til Linux er skrevet i C eller C++. Mange programmer distribueres fra deres programmører som en ".tar.gz"-pakke eller ".tgz"-pakke - som er eksakt det samme. En "tar"-pakke er en container af filer lagt ned i en fil, uden komprimering eller kryptering. Typisk fylder en ".tar"-fil ca. dobbelt så meget som den behøver, og derfor man kan kompimere denne med gzip (evt. bzip2), hvorefter filen kommer til at hedde ".tar.gz" til slut (eller ".tar.bz2" hvis bzip2 blev anvendt).

En ".tar.gz"-pakke (eller ".tgz") udpakkes med tar xvzf pakke.tar.gz og på skærmen vises hvilke filer der bliver udpakket. Man kan med tar tvzf pakke.tar.gz se hvilke filer og kataloger der er indeholdt i en given program-pakke. Enkelte programmer skaber ikke et nyt underkatalog med de nye filer (hvilket er god kutume), og i de tilfælde må man selv lave et underkatalog og udpakke program-pakken der. Heldigvis vil langt de fleste programmer automatisk udpakke kildetekst og hjælpefiler i en nyt underkatalog under det nuværende katalog. Gør det f.eks. til en regel at udpakke program-pakker i kataloget src i eget hjemmekatalog, dvs. ~/src/. Og der er ingen grund til at være root før at et program evt. skal installeres på systemet - til oversættelse og test er det (oftest) ikke nødvendigt.

Når man har pakket kildeteksten ud kan man derefter gå ned i det nye katalog (brug cd katalognavn i terminalvinduet) og nu kan vi gå igang med at oversætte kildeteksten til ens egen maskine.

Langt de fleste programmer kan oversættes efter følgende opskrift

  1. Udpak pakken med kildeteksten.

  2. cd UNDERKATALOG_MED_PROGRAMMET

  3. $ ./configure

  4. $ make

  5. $ su

  6. # make install

Eksempel 8-1. Eksempel på oversættelse af et KDE-program: cdbakeoven

Som eksempel kan vi se på kildeteksten til cdbakeoven-1.8.9 som findes til KDE. I dette tilfælde hentes kildeteksten i formen cdbakeoven-1.8.9.tar.bz2.

Først udpakkes kildeteksten:


[tyge@hven ~]$ tar xvjf cdbakeoven-1.8.9.tar.bz2
cdbakeoven-1.8.9/
cdbakeoven-1.8.9/admin/
cdbakeoven-1.8.9/admin/CVS/
cdbakeoven-1.8.9/admin/CVS/Root
cdbakeoven-1.8.9/admin/CVS/Repository
cdbakeoven-1.8.9/admin/CVS/Entries
cdbakeoven-1.8.9/admin/old-ltcf-cxx.sh
cdbakeoven-1.8.9/admin/old-ltcf-gcj.sh
...
cdbakeoven-1.8.9/AUTHORS
cdbakeoven-1.8.9/INSTALL
cdbakeoven-1.8.9/.cvsignore
cdbakeoven-1.8.9/COPYING

Alt kildetekst er nu lagt i kataloget cdbakeoven-1.8.9/. Denne ser vi nu nærmere på.


[tyge@hven ~]$ cd cdbakeoven-1.8.9
[tyge@hven cdbakeoven-1.8.9]$ ls
AUTHORS      Makefile.cvs  aclocal.m4    config.h.in      configure.in.in
COPYING      Makefile.in   admin         configure        kdeutils.lsm
INSTALL      README        cdbakeoven    configure.files  stamp-h.in
Makefile.am  acinclude.m4  config.h.bot  configure.in     subdirs

Der er en hel del, der er værd at lægge mærke til her. Først de fire filer COPYING, AUTHORS, README og INSTALL. De filer vil følge med langt de fleste programmer.

Det er naturligvis forskelle i hvordan de enkelte programmører skriver vejledningen filerne, men ovenstående dækker måske 80% af alle programmer.

Det næste vi skal lægge mærke til er filen configure, der viser at programmørerne har hjulpet os brugere med at lave et konfigurations-script, der automatisk kan se om alle de øvrige nødvendige program-biblioteker er til stede. Typisk bygger programmer på hinanden og configure er et eksekverbart script, der holder styr på det. Nu køres dette - bemærk at man typisk tilføjer "./" foran kommandoen configure for at være sikker på at det er et program-script i det nuværende katalog, der vil blive eksekveret.


[tyge@hven cdbakeoven-1.8.9]$ ./configure
creating cache ./config.cache
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking build system type... i686-pc-linux-gnu
checking for a BSD compatible install... /usr/bin/install -c
...

For hver parameter, der er nødvendig for at oversætte programmet vil configure-scriptet selv afgøre hvad der er rigtigt. Typisk tager det få minutter. Hvis der er fejl bliver man nødt til at efterinstallere program-pakker først, eller give flag til programmet med hvad der skal gøres. Hvordan dette gøres kan ikke beskrives kortfattet, da det afhænger af det enkelte program. Ofte skal der installeres udviklings-pakker af nogle programmer. De hedder typisk "-devel" i navnet.

Efter at have kørt ./configure igennem succes-fuldt kan programmet oversættes - ofte tager dette en del tid (alt efter maskinens CPU-hastighed). Oversættelsen sker ved at køre programmet make, der kalder C/C++-oversætteren gcc og g++. Alle tre dele skal således være installeret.


[tyge@hven cdbakeoven-1.8.9]$ make

Nu er programmet oversat og du har normalt fået et program der kan køres. Det eneste der mangler er at få det installeret og det kan køres ligesom alle andre programmer.


[tyge@hven cdbakeoven-1.8.9]$ su
[root@hven cdbakeoven-1.8.9]# make install
...
[root@hven cdbakeoven-1.8.9]# exit

Nu er programmet installeret - typisk i /usr/local/bin/. Nu er vi færdige :)