|
|
| Rivi 53: |
Rivi 53: |
| Kaikki rakennusjärjestelmät tarvitsevat usein apua löytääkseen järjestelmästä puuttuvat kehityskirjastot (headerit). ''[[pkg-config]]'' on standardi työkalu, joka auttaa rakennusjärjestelmiä löytämään tarvittavat kirjastotiedostot ja niiden sijainnit. | | Kaikki rakennusjärjestelmät tarvitsevat usein apua löytääkseen järjestelmästä puuttuvat kehityskirjastot (headerit). ''[[pkg-config]]'' on standardi työkalu, joka auttaa rakennusjärjestelmiä löytämään tarvittavat kirjastotiedostot ja niiden sijainnit. |
|
| |
|
| == Perinteinen GNU Autotools tapa == | | == Perinteinen GNU Autotools -tapa == |
| Vaikka tämä prosessi on edelleen validi ja käytössä monissa vanhemmissa tai yksinkertaisemmissa projekteissa, se ei enää edusta ainoaa tai edes yleisintä tapaa kääntää ohjelmia nykyaikaisessa Linux-ympäristössä. | | Vaikka nykyaikaiset järjestelmät ovat yleistyneet, tämä prosessi on edelleen validi ja käytössä monissa vanhemmissa tai yksinkertaisemmissa projekteissa. |
|
| |
|
| Ohjelmat kannattaa yleisesti ottaen asentaa jotenkin [[Ohjelmien asentaminen|muuten]] kuin muualta haettua koodia kääntämällä. Jos itse kääntäminen on välttämätöntä, käy se yleensä näin: | | Ohjelmat kannattaa yleisesti ottaen asentaa jotenkin muuten kuin muualta haettua koodia kääntämällä. Jos itse kääntäminen on välttämätöntä, käy se yleensä näin: |
|
| |
|
| * Tarkista että ainakin [[gcc]] ja [[make]] ovat asennettuina.
| | # '''Valmistelut:''' Tarkista, että ainakin [[gcc]] ja [[make]] ovat asennettuina. |
| * Hanki jostakin ohjelman lähdekoodit, joko kopioi ohjelman lähdekoodipaketti ja pura se
| | # '''Lähdekoodin haku ja purku:''' |
|
| |
|
| [[tar]] xvzf hyvasofta.tar.[[gz]] | | [[tar]] xvzf hyvasofta.tar.[[gz]] |
| Rivi 65: |
Rivi 65: |
| tar xvjf hyvasofta.tar.[[bz2]] | | tar xvjf hyvasofta.tar.[[bz2]] |
|
| |
|
| tai käytä ohjelmistoprojektin [[versionhallintajärjestelmä]]ä. | | tai käytä ohjelmistoprojektin [[versionhallintajärjestelmä]]ä (esim. [[Git]]). |
|
| |
|
| * Siirry paketin hakemistoon.
| | # '''Siirry hakemistoon komennolla:''' |
| cd hyvasofta | | cd hyvasofta |
|
| |
|
| * Hakemistossa on yleensä tekstitiedostoja, joiden nimet ovat <tt>README</tt>, <tt>INSTALL</tt> tai vastaavaa. Lue nämä ja varmista, että kääntäminen todella tapahtuu niin kuin seuraavassa kerrotaan.
| | Lue hakemistossa olevat ''README''- tai ''INSTALL''-tiedostot. |
|
| |
|
| * Mikäli ''configure''-tiedostoa ei löydy. Aja [[autoreconf]]-[[Bash-skriptaus|skripti]] komennolla:
| | # ''configure'' -tiedoston luonti (tarvittaessa): Mikäli configure-tiedostoa ei löydy, aja ''autoreconf''-[[Bash-skriptaus|skripti]] komennnolla: |
|
| |
|
| autoreconf -i | | autoreconf -i |
|
| |
|
| * autoreconf ajaa automaattisesti autoconf-, autoheader-, aclocal-, automake-, gettextize- ja libtoolize-ohjelmat oikeassa järjestyksessä ja luo configure-skriptin.
| | autoreconf ajaa automaattisesti tarvittavat ohjelmat ja luo configure-skriptin. |
|
| |
|
| * Aja [[autoconf|<tt>configure</tt>]]-[[Bash-skriptaus|skripti]] komennolla:
| | # '''Konfigurointi:''' Aja ''configure''-[[Bash-skriptaus|skripti]] komennolla: |
|
| |
|
| ./configure | | ./configure |
| | | # tai määrittele asennuspolku käyttäjän kotihakemistoon: |
| tai | |
| | |
| ./configure --prefix=$HOME/ohjelmat/ | | ./configure --prefix=$HOME/ohjelmat/ |
|
| |
|
| Jos käyttää tällaista vipua käytetään niin käännetty ohjelma pitäisi löytyä hakemistosta $HOME/ohjelmat/bin. | | * Riippuvuudet: Jos ''configure'' epäonnistuu puuttuvien riippuvuuksien vuoksi (kehityskirjastot eli headerit), ne löytyvät paketinhallinnasta yleensä päätteellä ''-devel'' tai ''-dev''. [[Debian]]-pohjaisissa jakeluissa ne on usein helppo asentaa komennolla: |
|
| |
|
| Configure luo käännöksessä tarvittavan [[Makefile]]n. Jos <tt>configure</tt>-skriptiä ei ole, kokeile komentoja <tt>make config</tt> ja/tai <tt>make menuconfig</tt>. Jos mistään ei tapahdu mitään, katso olisiko hakemistossa <tt>install.sh</tt>-tyylistä skriptiä. Jos on, aja se komennolla:
| | sudo apt-get build-dep ohjelma |
| ./install.sh
| |
|
| |
|
| Osassa ohjelmapaketteja saattaa myös olla Makefile valmiina, jolloin <tt>configure</tt>a ei ole, eikä sitä tarvitse ajaa.
| | # '''Kääntäminen:''' |
| * Jos <tt>configure</tt>-skripti ei mene kunnialla läpi, on syy usein puuttuvissa kehitys[[kirjasto]]issa eli headereissa (skripti mainitsee jonkin tietyn riippuvaisuuden puuttuvan). Nämä löytyvät paketinhallinnan kautta yleensä päätteellä ''-devel'' tai ''-dev'' (esimerkiksi ''[[gimp]]-devel'', pääte vaihtelee jakeluittain). Tilan säästämiseksi useimpien ohjelmien paketointien mukana ei toimiteta niiden kehityskirjastoja, vaan nämä on asennettava erillisestä paketista. Joskus ongelmana voi myös olla se, ettei <tt>configure</tt> löydä tarvittavaa riippuvaisuutta vaikka se ja sen kehityskirjastot olisi asennettu. Tällöin niiden sijainti on yleensä mahdollista määritellä erillisellä [[valitsin|valitsimella]]. Lisätietoja valitsimista saa komennolla:
| | make |
| ./configure --help | |
|
| |
|
| Myös <tt>INSTALL</tt>- tai <tt>README</tt>-tiedostoissa on usein mainittu asiasta jotakin. [[Debian]]-pohjaisissa jakeluissa kehityskirjastot on yleensä helppo asentaa komennolla <tt>[[apt-get]] build-dep ohjelma</tt>.
| | # '''Asennus:''' Siirry [[pääkäyttäjä]]ksi ja asenna ohjelma (katso kuitenkin kohta [[Kääntäminen#Kääntäminen ja paketinhallinta|Kääntäminen ja paketinhallinta]]): |
| * Käännä ohjelma komennolla:
| |
| make
| |
|
| |
|
| Käännön aikana ruutuun tulostuu yleensä runsaasti tietoa käännön etenemisestä. Jos <tt>make</tt>-komento ei mene läpi, vaan pysähtyy ilmoittaen virheestä jollakin rivillä, on lähdekoodissa todennäköisesti vikaa. Yleensä kyse on lähdekoodin epäyhteensopivuudesta käytetyn kääntäjäversion kanssa. Virheilmoituksen perusteella saattaa olla mahdollista helpostikin korjata virhe. Muussa tapauksessa kannattaa lähettää palautetta ohjelman kehittäjälle.
| | sudo make install |
|
| |
|
| * Siirry [[pääkäyttäjä]]ksi ja asenna ohjelma komennolla:
| | # '''Siivoaminen ja poisto:''' Voit poistaa luodut binäärit ja Makefilen lähdekoodihakemistosta komennolla ''make clean''. Joskus Makefilessa on myös poistotoiminto ''make uninstall''. |
| [[sudo]] make install | | make clean |
|
| |
|
| Tämä kopioi käännetyt binäärit lopulliseen asennushakemistoonsa. Mikäli et halua asentaa ohjelmaa pääkäyttäjänä, voit antaa tunnuksellesi kirjoitusoikeudet asennushakemistoon asennuksen ajaksi. Voit toki käyttää ohjelmaa myös lähdekoodihakemistosta käsin tai määrittää sopivan asennuspolun omasta kotihakemistostasi. Tämä tapahtuu <tt>configure</tt>n valitsimella <tt>--prefix</tt>, esimerkiksi <tt>--prefix=/home/kayttaja/hyvasofta</tt>.
| | == Kääntäminen ja paketinhallinta == |
| | Kenties paras vaihtoehto on tehdä käännetystä ohjelmasta oman jakelun mukainen paketti ja asentaa se paketinhallinnan kautta. Tällöin komentoa ''make install'' ei anneta. |
|
| |
|
| Joskus Makefilessä on uninstall-toiminto, jolla ohjelma poisto onnistuu kätevästi komennolla:
| | Katso esimerkiksi [[CheckInstall]], sekä [[Deb-paketin tekeminen]]. |
| make uninstall
| |
|
| |
|
| Huomaa kuitenkin, että mikäli esimerkiksi poistat näin jonkin [[kirjasto]]n, sitä käyttävät ohjelmat lakkaavat toimimasta. Jos jostain syystä haluat kääntää ohjelman uudelleen, voit poistaa luodut binäärit ja Makefilen lähdekoodihakemistosta komennolla:
| | Jos käännettävä ohjelmisto tarjoaa jotakin toiminnallisuutta, josta paketinhallinnan olisi hyvä olla tietoinen, voit luoda niin sanotun '''"dummy"'''-paketin. Dummy-paketti sisältää vain riippuvuudet ja muun metadatan. Debianissa tällaisen paketin tekoon on olemassa apupaketti ''equivs''. |
| make clean
| |
|
| |
|
| == Kääntäminen ja paketinhallinta == | | == Kääntäminen ja paketinhallinta == |