Kuidas kompileerida programmi Linuxis

Allikas: Pingviini viki

Tihti tekib algajatel küsimus, kuidas paigaldada lähtekoodina tar.gz arhiivides levitatavat tarkvara, mida ei leidu nende distributsiooni varamutes. Enne kompileerima asumist on soovitatav selgeks teha paar lihtsat asja.

1. Miks sa üldse kompileerimist plaanid? Kompileerimine ise ei pruugi olla keeruline, aga sisaldab algaja jaoks komistuskivisid, mis võivad kokkuvõttes muuta süsteemi ebastabiilsemaks ja/või halvasti uuendatavaks. Seepärast kaalu järgnevaid variante.

  • Tahan kasutada programmi X, pakihalduriga seda paigaldada ei õnnestunud.
    • Uuri, kas pole võimalik häälestada pakihaldur kasutama lisahoidlat (repositooriumi), kus võib see programm pakituna (deb, rpm) olemas olla
    • Uuri, kas pole seda programmi võimalik pakituna (deb, rpm) arendaja või projekti kodulehelt alla tirida
    • Kui sinu süsteem kasutab deb-e, uuri kas pole saadaval rpm-i, ja vastupidi. Programm alien aitab teisendada võõra paki sobivasse vormingusse.
    • Seda programmi pole pakendatud, seepärast on alljärgnev juhend minu ainus võimalus.
  • Olen uudishimulik ja tahan asju sügavuti tundma õppida. Seda juhendit vajan, et paremini mõista, mis karu kõhus toimub.

2. Kas sa oled kursis elementaarsete käsureavõimalustega? Kui sa ei tea, mida teevad cd, ls, mv, cp ja rm, tutvu kõigepealt lihtsamate käskudega [1]

  • Mõnikord kui asukoht kaunis pikk ja keeruline kirjutada: cd /koht/kataloog/asupaik/ümber kivi/vanaema juures/dokument või Teil ei tule lihtsalt meelde, kus otsitav täpselt asub siis tuleb see kõigepealt üles otsida. Siis saate käske cd, ls, mv ja cp kasutada teisiti: avate terminali, tõstate kataloogist, kuhu te terminalis liikuda tahate mingi faili lihtsalt terminali aknasse ja teile ilmub hüpikmenüü eelpool mainitud käskudrga. valite sealt ntäiteks cd ja terminal on hopsti selles kaustas.

Järgnevalt lühike õpetus, mis annab ülevaate, kuidas toimub üldiselt programmide kompileerimine Linuxis.

Lühidalt

Lühidalt võiks kogu protsessi kirjeldada viie sammuna:

  1. Tõmba endale arhiiv, näiteks wgeti kasutades
  2. Paki arhiiv lahti
  3. Häälesta programm oma süsteemi jaoks configure abil
  4. Kompileeri programm make abil
  5. Paigalda programm

Pikemalt

Nüüd kõigest pikemalt. Esmalt seletame lahti mõne mõiste, mida juhendis kasutame. programm on programmi nimi. Juhul, kui tõmbad internetist progrmmi lähtekoodi arhiivi, siis veendu, et annad täpse nime! NB! alati on oluline eristada suuri ja väikeseid tähti! veebileht.ee on veebilehe aadress, kust soovitud programmi lähtekoodi tõmbad. Nüüd siis aga jätkame:

  • Esmalt tõmba arvutisse soovitud programmi lähtekoodi arhiivi. Enamasti on arhiiv pakitud tar.gz-sse (vahel laiendiga .tgz), viimasel ajal on palju hakatud kasutama ka tar.bz2 vormingus pakkimist, väga harva tuleb ette ka tar.Z vormingut.
wget http://veebileht.ee/programm.tar.gz
  • Kasulik on kontrollida alla laetud arhiivi terviklikkust. Reeglina pakutakse allalaadimise juures ka faili kontrollsummat, näiteks sellisel kujul MD5 sum: 0e2e0f757f9e1e89b66033905860fded. Allalaetud faili kontrollsumma peab tulema täpselt sama, selle saab arvutada käsuga:
md5sum programm.tar.gz
  • Nüüd pakime selle arhiivi lahti tar käsu abil, sõltuvalt vormingust võib see välja näha ühel järgneval viisil:
tar -xvf programm.tar.gz
tar -xvf programm.tgz
tar -xvf programm.tar.bz2
tar -xvf programm.tar.Z
  • Nüüd siseneme kataloogi
cd programm
  • Järgmiseks on rangelt soovituslik tutvuda kaasa tuleva dokumentatsiooniga. Juhendid installeerimiseks on tavaliselt failis INSTALL, vahel on sellest failist eri platvormide tarbeks eri laienditega versioonid, näiteks INSTALL.w32 sisaldab juhiseid MS Windowsis kompileerimiseks ja paigaldamiseks. Samuti võib oluline info olla failides README ja HOWTO.
    Kõige tähtsam on dokumentatsioonist välja selgitada, kas selle programmi paigaldamiseks on eelnõudeid. Sageli on vaja eelnevalt paigaldada mõni muu programm või teek (library). Sellisel juhul pole mõtet enne järgmiste sammude juurde asuda, kui need nõuded on täidetud. Mõned eelnõuded on nii elementaarsed, et dokumentatsioonis neid ei mainitagi. Näiteks make ja gcc on sellised programmid ning kui neid süsteemis pole, ajab juba ./configure käpad püsti ja keeldub edasisest koostööst.
    NB! Kui Sa soovid tagada stabiilset ja uuendatavat süsteemi, proovi alati lisada kõik nõutud programmid ja teegid kasutatava süsteemi pakihalduri kaudu. Kui oled veendunud, et eelnõudeid pole võimalik eelpakendatud tarkvaraga täita, tuleb ka need ise kompileerida ja paigaldada
    Käsurealt saad tutvuda dokumentatsiooniga näiteks käskude more või less abil
more README
less INSTALL
  • Nüüd anname configure käsu, sellega häälestame paigaldatava programmi sinu süsteemi järgi. configure loob faili Makefile, kuhu on koondatud reeglid, kuidas ja mida kompileerida ning kuhu saadud tarkvara hiljem paigaldada. configure-t on võimalik peenemalt suunata paljude võtmetega, mille kohta saad alati täpsemat infot mainitud dokumentatsioonifailidest, reeglina toimib kõige paremini vaikekäsk:
./configure
  • Nüüd kompileerime programmi, see on kõige töömahukam etapp ning sõltuvalt valitud tarkvarast ja kasutatavast arvutusvõimsusest võib kompileerimiseks kuluv aeg olla väga erinev. Üldjuhul pole see aeg ka suuremate programmide korral moodsatel arvutitel pikem tundidest, küll aga võib vanema arvuti korral kuluda päevi. Ära käivita järgnevat käsku, kui sul on parjasti kiire ja tahaks juba arvuti kinni panna.
make
  • Sageli tuleb programmi lähtekoodiga kaasa testimissüsteem, millega saab kontrollida, kas kompileerimine õnnestus. Täpsemad juhised on jälle dokumentatsioonis ning võid arvestada, et paljud suuremad programmid ei läbi testimist päris puhtalt. Seega: enne kui pilli nurka viskad, veendu, kas saadud viga on ikka fataalne.
    Testimine pole kohustulik etapp, aga aitab vältida hilisemat karvakitkumist, kui mingi järgmise sõltuva programmi kompileerimisel saad pidevalt mingeid arusaamatuid vigu. Sõltuvalt tarkvarast võib testimine toimuda ühel järgmisel viisil:
make test
make check
make -k check [ei peatu esimese saadud vea peale]
  • Nüüd aga paigaldame tarkvara root-kasutaja õigustes ja muudame kompileeritud tarkvara süsteemselt kasutatavaks:
sudo make install

või siis

su
make install
Vihje: Debiani pakihaldust kasutavates distributsioonides nagu Ubuntu võib siinkohal make install käsu asemel deb paki luua, mida on hiljem kergem eemaldada. Vaata Checkinstalli lehte.
  • Pärast paigaldamist võib selguda, et see programm ei vasta sinu ootustele. Siis tuleks see jälle süsteemist eemaldada. Sageli, kuid paraku mitte alati, on lähtekoodist paigaldatavatel programmidel võimalus teha uninstall. Kui paigaldasid administraatori õigustes, siis on neid õigusi vaja ka eemaldamiseks:
sudo make uninstall

või siis

su
make uninstall

Kui aga sellist eemaldamisvõimalust pole, on kõigist paigaldatud failidest lahtisaamine kaunikesti tüütu. See on üks põhilisi põhjuseid, miks vajalik tarkvara tuleks võimalusel alati paigaldada paketihalduri kaudu: paketihaldur võimaldab hiljem süsteemist eemaldada kõik paketi paigaldamisel sinna laiali laotatud failid

  • "Kui midagi saab untsu minna, siis ta ka läheb," on öelnud kodanik Murphy. Ja kui juba läheb, siis enne uut katset on kasulik kõigepealt eemaldada lähtekoodi kataloog koos kõige sinna tekitatuga ning pöörduda uuesti lahtipakkimise punkti juurde.
cd ..
rm -rvf programm

Näpunäited

  • Kindlasti on vaja kompileerimiseks paigaldada mõningaid lisaprogramme. Näiteks GCC, mille leiad oma paketihaldurist.
  • Juhul, kui sa ei viitsi mingil põhjusel nimesid lõpuni kirjutada, siis võid panna sinna *. Näiteks cd prog* teeb sama asja, mis cd programm [eeldusel, et selles kataloogis pole rohkem faile ega katalooge, mille nime alguses oleks samuti "prog"]. Samuti tar -xvf programm* teeb sama, mis tar -xvf programm.tar.gz.