1.3 24. lokakuuta 2004
Emerge ja Ebuild

Ebuild-sovellus on alemman tason rajapinta Portageen. Sillä voi käyttää ebuild-tiedostojen yksittäisiä toimintoja. Mahdollista on vaikkapa asentaa koko sovellus askel askeleelta.

Ebuild-sovellus on ensisijaisesti järjestelmän kehittäjille; lisätietoja ebuildista löytyykin Developers Handbookista. Selvitämme tässä kuitenkin mitä ebuild-tomintoja Portage käyttää asennusprosessissa, ja miten käyttää jälkiasennustoiminnalisuuksia, joita joissain ebuildeissa saattaa olla.

Ohjelmiston asennus käsin Lähdekoodin nouto ja oikeellisuustarkastus

Kun komennolle ebuild antaa jonkun .ebuild-tiedoston, se tarkastaa kaikkien liittyvien tiedostojen tarkastussummat, jotka on annettu Manifest- ja files/digest-<name>-<version>-tiedostoissa. Tämä tehdään lähdekoodien noutamisen jälkeen.

Ebuildilla voi noutaa lähdekoodit seuraavasti:

# ebuild path/to/ebuild fetch

Jos ebuildin md5-tarkistussumma ei täsmää Manifestissa ilmoitettuun tai ladattujen tiedostojen summat eivät täsmää files/digest-<paketti>-tiedoston sisältämiin, saat seuraavan virheilmoituksen:

!!! File is corrupt or incomplete. (Digests do not match)
>>> our recorded digest: db20421ce35e8e54346e3ef19e60e4ee
>>>  your file's digest: f10392b7c0b2bbc463ad09642606a7d6

Seuraavat rivit kertovat ongelmallisen tiedoston.

Jos haettujen lähteiden ja ebuildin oikeellisuus on varmaan, uuden Manifestin ja digest-<paketti>-tiedoston voi tehdä ebuildilla:

# ebuild path/to/ebuild digest
Lähdekoodin purkaminen

Lähdekoodien puretaan hakemistoon /var/tmp/portage (tai muuhun vastaavaan asetustiedostossa /etc/make.conf määriteltyyn) ebuildia käyttämällä:

# ebuild path/to/ebuild unpack

Tämä toiminto suorittaa ebuildin src_unpack()-funktion (joka oletusarvoisesti vain purkaa tiedostot, jollei sitä ole erikseen annettu). Tässä vaiheessa ebuild myös lisää kaikki tarvittavat pätsit.

Lähdekoodin kääntäminen

Seuraavassa vaiheessa käännetään koodia. Ebuildin kääntötoiminto käyttää tähän ebuildin src_compile()-funktiota. Tähän vaiheeseen liittyy myös configuren suoritus, jos aiheellista.

# ebuild path/to/ebuild compile

Käännöstä muuttakseen ebuildien src_compile()-funktiota kannattaa muokata. Voit myös huijata Portagea luulemaan, että ebuild on kääntänyt jo lähdekoodit: suorita kaikki käännökset itse ja lisää hakemistoihin tyhjät tiedosto nimellä .compiled työhakemistoon:

# touch .compiled
Tiedostojen asennus väliaikaishakemistoon

Seuraavassa Portage asentaa kaiken väliaikaishakemistoon. Tämä hakemisto sisältää kaikki tiedostot, jotka siirretään oikeaan järjestelmään. Siirtäminen tapahtuu ebuildin asennustoiminnolla, joka suorittaa ebuildin src_install()-funktion.

# ebuild path/to/ebuild install
Tiedostojen siirto oikeaan järjestelmään

Viimeisenä kaikki tiedostot siirretään käytössä olevaan tiedostojärjestelmään ja rekisteröidään ne Portagelle. Ebuildissa tämän toiminnon nimi on "qmerge" ja siihen liittyy seuravaa:

  • suorita pkg_preinst(), jos sellainen on
  • kopioi tiedosto järjestelmään
  • rekisteröi tiedostot Portagelle
  • suorita pkg_postinst(), jos sellainen on.

Suorittamalla ebuildin qmergen toteutat nämä:

# ebuild path/to/ebuild qmerge
Väliaikaishakemiston siivous

Lopulta, väliaikaishakemiston voi siivota ebuildin puhdistustoiminnolla:

# ebuild path/to/ebuild clean
Muita ebuildin ominaisuuksia Asennuskomentojen suoritus

Ebuildin asennustoiminnot, eli hakemisen, purkamisen, kääntämisen, asennuksen ja qmergen voi suorittaa myös yhdellä käskyllä:

# ebuild path/to/ebuild merge
Asetustoimintojen suorittaminen

Jotkin ohjelmat sisältävät ohjeet paketin tarkempaan säätämiseen järjestelmää varten. Nämä ohjeet voivat olla vuorovaikutteisia, jonka takia niitä ei suoriteta automaattisesti. Kaikki asetustoiminnot, jos sellaisia on, saa suoritettua ebuildin asetustoiminnolla:

# ebuild path/to/ebuild config
Pakettien tai RPM:ien tekeminen

Portagen saa tekemään binääripaketteja, tai jopa RPM-paketteja, ebuildeistaan. Ebuildin paketti- ja rpm-toiminnot kattavat tämän toiminnallisuuden. Niiden käytöksessä on kuitenki eroja:

  • Pakettitoiminto käyttäytyy pitkälti kuin asennustoimintokin: suorittaa tarpeelliset toiminnot (hakemisen, purkamisen, käännön, asennuksen) ennen paketin luontia.
  • Rpm-toiminto tekee RPM-paketin tiedostoista, jotka luodaan ebuildin asennustoiminnon jälkeen.
(Portage-tyylisille binääripaketeille)
# ebuild path/to/ebuild package

(RPM-paketeille)
# ebuild path/to/ebuild rpm

RPM-paketti ei kuitenkaan sisällä niitä riippuvuustietoja, mitä ebuild sisältäisi.

Lisää tietoa!

Man-sivuilta löytyy paljon tietoa Portagesta, ebuild-sovelluksesta ja ebuild-tiedostoista:

$ man portage    (Portagen man-sivu)
$ man emerge     (Emerge-komennon man-sivu)
$ man ebuild     (Ebuild-komennon man-sivu)
$ man 5 ebuild   (Ebuild-tiedoston syntaksin man-sivu)

Tietenkin lisää Gentoon kehitystietoa on myös käsikirjassa Developers Handbook.