Linux - Friheden til at vælge installation: Version 5.8.20040526 - 2020-12-31 | ||
---|---|---|
forrige | Kapitel 8. Programmer til Linux | næste |
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
Udpak pakken med kildeteksten.
cd UNDERKATALOG_MED_PROGRAMMET
$ ./configure
$ make
$ su
# 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.
COPYING: I denne fil beskrives licensen for programmet - oftest GPL - General Public License.
AUTHORS: I denne fil anføres hvem der har lavet programmet og evt. kontaktinformation.
README: I denne fil skrives typisk lidt eller meget om hvad programmet er og hvad man kan forvente.
INSTALL: I denne fil skrives typisk en kort vejledning i hvordan man kan få oversat programmet på ens egen maskine.
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 opsætnings-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 kørbart 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 kørt.
[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 :)