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.