Programok fordítása forráskódból Linux-on

Linux rendszereken olykor szükséges lehet bizonyos programokat egyedileg fordítani forráskódból. Nem angolról magyarra, hanem elkészíteni a futtatható állományokat az adott disztribúcióra, ha nincs hozzá, vagy valamiért nem alkalmas az előre csomagolt verzió.

Egy ilyen fordítás és telepítés alapvetően három lépésből áll. Lássuk őket!

Kötelező lépések

Bizonyos lépéseket nem hagyhatunk ki. Ez egyszerűen kell. Nézzük sorban!

./configure

Ez végzi a konfigurációt. Mindig az adott program forráskönyvtárában van. Akár bele is lehet nézni. A parancs után szóközzel írva paramétereket olyan beállítások adhatók meg, amik nagy részt utólag is módosíthatók egy konfigurációs fájlban. Például modulokat engedélyezhetünk, választhatunk különböző opciók közül, meghatározhatjuk a telepítési könyvtárat és egyéb útvonalakat.

Ennél a lépésnél beleütközhetünk hiányzó programok problémájába. A configure megpróbálja felderíteni a szükséges programkönyvtárakat, és ha valamit nem talál, leáll a keresés és megjelenik egy nem biztos, hogy elég információgazdag hibaüzenet is. Ilyenkor a config.log fájba lehet belenézni. Az ott található bővebb információ alapján google-ben rá lehet keresni a problémára, ahol a megoldást is meg lehet általában találni.

A configure futása eltart egy darabig, de nem olyan vészes, mint a következő pontban írt kispajtása, a "make".

Mivel minden programnak egyedi beállításai lehetnek, így egyedi paraméterei is a configure szkriptnek. Van viszont egy, ami minden mást listáz. És ez a --help
./configure --help | less

A less a függőleges vonal ( pipe karakter ) után csak a lapozható lista miatt kell. A listában a fel-le nyilakkal görgethetünk. A page down és page up billentyűkkel pedig lapozhatunk. A "q" billentyűvel pedig kiléphetünk a listából.

A --prefix szokott a program telepítési könyvtára lenni. Így meghatározott mappába kerülhetnek a futtatható fájlok és a konfigurációs állományok.
./configure --prefix=/opt/programneve

A prefix útvonal végére sose tegyünk per jelet! Az útvonalak változó részei "/" jellel kerülnek hozzáfűzésre a prefixhez.

make

A make parancsot ne keresse senki a program forráskönyvtárában!

Az a "/usr/bin/" mappában van, de abban a könyvtárban levő forráskódot próbálja fordítani, amiben lefuttatjuk.

Ebben a lépésben is előfordulhatnak még problémák, ám ezt csak kiírja a képernyőre, ami kifuthat a látókörünkből. Így célszerű magunknak megoldani a naplózást. Ezt a make 2>make.log futtatásával tehetjük meg. A 2-es szám a hibaüzeneteket jelöli. Ezeket irányítjuk a ">" jellel a "make.log" fájlba. Mivel itt csak a hibaüzenetek lesznek, könnyebb lesz áttekinteni. És így megoldást találni rájuk.

Ez a parancs sok türelmet igényel, mert sokáig képes futni a rendszer erőforrásaitól függően. Azért a fél napot nem kell rááldozni, de előfordulhat, hogy közben még meg is ebédelhetünk. Ez persze a programtól is függ, hogy mennyi dolga van a fordítónak.

make install

A lefordított program telepítése. Ekkor kerül minden a helyére. Viszonylag gyorsan végez a dolgával. Úgyhogy ezalatt maximum egy frissítőre lesz idő.

Hasznos

Van még két hasznos parancs a "make"-hez kapcsolódóan. Ejtenék ezekről is pár szót.

make clean

Ezt akkor kell futtatni, ha már a "make" parancs futtatása után rájövünk, hogy hibás lett a "./configure" paraméterezése, így a fordítás nem a céljainknak megfelelően történt. A "make" minden futtatásakor ugyanis csak azokat fordítja le, amiket azelőtt még nem fordított. Ez a parancs kitörli az összes ideiglenes fájlt és tiszta lappal lehet újrakezdeni a make futtatását.

make test

A "make" után használandó. Teszteket futtat le a már lefordított programon. Ez felderítheti annak hibáit, ami az adott környezetben fordulhat elő, és amiről jelentést lehet küldeni a fejlesztőknek. Ez is egy időigényes művelet. Talán még a "make"-nél is hosszabb időbe telik, így én ezt általában kihagyom. Szégyellem is magam érte.

Összegzés

Ezzel a módszerrel sokszor találkozhat, aki linux rendszerek haladó használatával próbálkozik. Akinek nincsenek különleges igényei, valószínűleg enélkül is elboldogul, hiszen a programok jó része könnyedén telepíthető tárolókból. A többiek viszont ne ijedjenek meg a saját fordítástól, mert nem egy nagy varázslat. A neheze inkább a configure optimális paraméterezésében rejlik. Legtöbbször viszont van egy alapértelmezett értéke mindennek. Így legfeljebb nem lesz testreszabott, de működni fog. És természetesen az adott program telepítési útmutatója mindig kötelező olvasmány, ahol közvetlenebb utasításokkal találkozhatunk.

Kategóriák: 
Megosztás/Mentés

Hozzászólások

Anonymous képe

Köszi, hasznos volt. :)