Ero sivun ”Ebuild” versioiden välillä
Ei muokkausyhteenvetoa |
p ({{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}}}) |
||
(42 välissä olevaa versiota 11 käyttäjän tekeminä ei näytetä) | |||
Rivi 1: | Rivi 1: | ||
{{Ohjelma | nimi=ebuild | kuva= | | {{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}}} | ||
{{Ohjelma | |||
| nimi=ebuild | |||
| kuva= | |||
| kuvateksti= | |||
| lisenssi=[[GPL]] | |||
| käyttöliittymä=ei | |||
| kotisivu=[http://gentoo.org gentoo.org] | |||
}} | |||
'''ebuild''' on kieli jolla kuvaillaan, miten paketteja asennetaan sekä ohjelma, joka toteuttaa kyseisen kielen. Ebuild on käytössä erityisesti [[Gentoo]]-[[jakelu|jakelussa]] [[paketinhallintajärjestelmä| paketinhallintajärjestelmän]] osana. | |||
==Kieli== | ==Kieli== | ||
ebuild epäilemättä on kielenä monipuolinen jopa | ebuild epäilemättä on kielenä monipuolinen, jopa tietyllä tapaa täydellinen. On kuitenkin tärkeää muistaa noudattaa oikeita käytäntöjä tehtäessä paketteja Gentoo-järjestelmään. Esimerkiksi valmiiseen järjestelmään kirjoittaminen useimmissa funktioissa on huonoa tyyliä, ja aiheuttaakin tyypillisesti esimerkiksi [[portage |portagessa]] [[sandbox]]-loukkauksen. | ||
===Muuttujat=== | ===Muuttujat=== | ||
Seuraavien muuttujien määrittely on suositeltavaa | Seuraavien tyypillisesti ebuildin alussa määriteltävien muuttujien määrittely on suositeltavaa: | ||
#kuvaus | #kuvaus | ||
DESCRIPTION="tässä kerrot | DESCRIPTION="tässä kerrot mitä ohjelma tekee" | ||
#ohjelman kotisivu | #ohjelman kotisivu | ||
HOMEPAGE="http://hyodyllinen.ohjelma.org" | HOMEPAGE="http://hyodyllinen.ohjelma.org" | ||
#mistä | #mistä ohjelman lähdekoodi haetaan | ||
SRC_URI="ftp://hyodyllinen.ohjelma.org/pub/${P}.tar.bz2" | SRC_URI="ftp://hyodyllinen.ohjelma.org/pub/${P}.tar.bz2" | ||
#ohjelman lisenssi | #ohjelman lisenssi | ||
LICENCE="GPL-2" | LICENCE="GPL-2" | ||
#kertoo, mihin slottiin ebuild asentuu, | #kertoo, mihin slottiin ebuild asentuu, Gentoossa samassa slotissa | ||
#ei voi olla kahta samannimistä pakettia | #ei voi olla kahta samannimistä pakettia | ||
SLOT="0" | SLOT="0" | ||
#kertoo | #kertoo mihin avainsanoihin ebuild kuuluu | ||
KEYWORDS="x86 -*" | KEYWORDS="x86 -*" | ||
#kertoo | #kertoo mitkä USE-muuttujat vaikuttavat ebuildiin | ||
IUSE="" | IUSE="" | ||
#kertoo | #kertoo mitkä paketit ovat paketin riippuvuuksia | ||
DEPEND="dev-libs/hyodyllinen-kirjasto" | DEPEND="dev-libs/hyodyllinen-kirjasto" | ||
#kertoo ne ebuildit, jotka ovat ebuildin ajonaikaisia riippuvuuksia | #kertoo ne ebuildit, jotka ovat ebuildin ajonaikaisia riippuvuuksia | ||
#tyypillisesti | #tyypillisesti dynaaminen kirjastolinkkaus voi hajota vain näihin. | ||
RDEPEND="dev-libs/hyödyllinen-kirjasto" | RDEPEND="dev-libs/hyödyllinen-kirjasto" | ||
=== | ====Paketinnimi-muuttujat==== | ||
Kokonaisuudelle, jonka ebuildin nimi on kategoria/paketti-1.0-r1.ebuild muuttujat ovat | |||
*P="paketti-1.0" | |||
*PN="paketti" | |||
*PV="1.0" | |||
*PR="r1" | |||
*PVR="1.0-r1" | |||
*PF="paketti-1.0-r1" | |||
*CATEGORY=kategoria | |||
=== | Näitä on hyvä käyttää SRC_URI:n ja muun tarvittavan kanssa. Mikäli [[gentoo|gentoon]] tai muun [[jakelu|jakelun]] tarjoama versiomuotoilu ei sovi, määrittele vastaavat sopivat muuttujat MY_ -etuliitteellä, esim. MY_P. Älä muuta ebuildin nimeä. | ||
Import-lauseella voit sisällyttää ebuildiin .eclass-tiedostoja eclass-hakemistosta | |||
====Hakemistomuuttujat==== | |||
*ROOT="/" kertoo, mitä juurta portagen, tai vastaavan, ylläpitämä systeemi käyttää. Älä koske tämän ulkopuolelle, äläkä muuta tätä muuttujaa. | |||
*WORKDIR="${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/work" kertoo mihin hakemistoon ohjelman SRC_URI-objektit puretaan tai siirretään kääntämistä, tai muuta, varten. | |||
*FILESDIR="${PORTDIR}/${CATEGORY}/${PN}/files" files-kansio ebuidin hakemistosta tänne voit tallettaa esimerkiksi pienikokoisia patcheja, alle 20 KiB. | |||
*S="${WORKDIR}/${P}" Tämä kertoo pääasiallisen kansion, jossa työ tehdään oletusasetusta voi muokata tarpeen mukaan, yleensä suhteessa WORKDIR:iin. | |||
*T="${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/temp" Tilapäishakemisto vapaasti käytettävissä. | |||
*D="${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/image" Hakemistokuva asennettavasta kokonaisuudesta. Älä muuta. | |||
====Riippuvuusmuuttujat==== | |||
*DEPEND Ebuildin riippuvuudet, näiden tulee olla asennettuina, ennen kuin ebuild ajetaan. | |||
*RDEPEND Ebuildin ajonaikaiset riippuvuudet, esimerkiksi dynaamisesti ladattavat kirjastot. | |||
*PDEPEND Ebuildin jälkeisriippuvuudet, nämä tulee asentaa ebuildin ajon jälkeen. | |||
*PROVIDE Kuvailee paketin tarjoaman virtuaalipaketin, älä käytä, jos et tiedä, mitä olet tekemässä. | |||
Dynaamisten riippuvuuksien määrittely seuraavia yhdistelemällä loogisina lausekkeina. riippuvuudet ilmaistaan pitkässä muodossa kategoria/paketti-(versio) | |||
*<, >, =, >= ja <= nämä kuvaavat, että riippuvuuden version tulee olla kirjatulle versiolle pienempi, suurempi, yhtäsuuri kuin, suurempi tai yhtä suuri kuin tai pienempi tai yhtä suuri kuin. | |||
*use? riippuvuus on voimassa, mikäli USE-muuttuja use on asetettu. Vastaavasti ei voimassa kun !use?. | |||
*|| tai-operaattori jomman kumman riippuvuuksista täytyy olla täytetty | |||
*!kategoria/paketti käänteinen riippuvuus. Tämä ei saa olla asennettuna ebuildia asennettaessa. | |||
* *-jälkiliite, versionumerossa vastaa mitä tahansa merkkijonoa. | |||
====Muut muuttujat==== | |||
*RESTRICT, rajoittaa portagen ominaisuuksia listan mukaan, listaerottimena toimii välilyönti | |||
**binchecks, jätetään binäärien laadunvalvonta suorittamatta. | |||
**confcache, ei käytetä confcachea | |||
**fetch, SRC_URI-kohdetta ei yritetä hakea | |||
**mirror, älä hae SRC_URI-kohdetta gentoon omilta palvelimilta | |||
**primaryuri, hae ensisijaisesti SRC_URI-kohde suoraan SRC_URI:sta | |||
**strip, ei poisteta debug-symboleja | |||
**test, ei ajeta src_test-funktiota | |||
**userpriv | |||
*QA-muuttujat Nämä muuttujat vaientavat portagen laadunvalvontavaroituksia. Muuttujien tarkoitus on lähinnä estää varoitukset suljetun lähdekoodin binääreistä, joita ei voida käytännössä korjata. | |||
**QA_TEXTRELS | |||
**QA_EXECSTACK | |||
**QA_WX_LOAD | |||
===Funktiot=== | |||
ebuild-kielessä on otsikon jälkeen [[Bash-skriptaus|bash-syntaksin]] mukaisia funktioita, joilla on oma osansa paketin asennuksessa. Mitään näistä funktioista ei ole pakko määritellä. Funktioton ebuild toimiikin tyypillisesti [[autotools]]-ohjelmaa varten, jolle ei tarvitse määritellä käännösaikaisia valintoja. src-alkuiset funktiot ajetaan tyypillisesti [[sandbox|sandboxin]] sisällä, eikä niissä saisi kajota muuhun järjestelmään. | |||
====pkg_nofetch==== | |||
Tätä funktiota kutsutaan, mikäli RESTRICT="fetch" on asetettu ja ebuildin SRC_URI kohdetta ei kyetä noutamaan. | |||
pkg_nofetchin jälkeen muita funktioita ei kutsuta vaan siirrytään ohjelman loppuun. | |||
====pkg_setup==== | |||
Ajetaan tarkistuksia asetusten suhteen. | |||
====src_unpack==== | |||
Puretaan SRC_URI-objekti $WORKDIR-muuttujan osoittamaan kansioon ja ajetaan eutils.eclassin epatch-funktio patcheille tarpeen mukaan, tar.bz2 ja tar.gz -pakatuille ohjelmille riittää tässä oletusfunktio. | |||
====src_compile==== | |||
Tässä funktiossa käännetään lähdekoodi tai tehdään muuta vastaavaa. | |||
====src_test==== | |||
Funktiota kutsutaan src_compilen jälkeen, mikäli FEATURES="test" on määritelty, funktiossa tulee ajaa asennettavan ohjelman tarjoamat yksikkötestaus-rutiinit, oletustoteutuksessa nämä ovat <tt>make check</tt> ja <tt>make test</tt> | |||
====src_install==== | |||
Tässä funktiossa siirretään kokonaisuuden asennettava osa, esim suoritettava binääri, hakemistorakenteeseen, jonka juurena toimii muuttujan $D osoittama hakemisto, esimerkiksi make install DESTDIR=$D | |||
====pkg_preinst ja pkg_postinst==== | |||
Nämä funktiot ajetaan sandboxin ulkopuolella ennen ja jälkeen $D-kuvan sisällyttämistä varsinaiseen ROOT-muuttujan osoittamaan kohteeseen, tyypillisesti "/". | |||
====pkg_prerm ja pkg_postrm==== | |||
Vastaavasti kuin edelliset nämä ajetaan ennen ja jälkeen kokonaisuuden sisällön, eli sen, minkä asensit $D:hen, poistamista järjestelmästä. | |||
====pkg_config==== | |||
Ajetaan viimeiseksi tässä uudistetaan systeemin asetuksia, mikäli se on tarpeen. | |||
===Apufunktiot=== | |||
====Usea tarkkailevat apufunktiot==== | |||
USE-muuttujan USE="valinta" suhteen nämä funktiot tekevät seuraavaa | |||
*useq valinta, Tämä palauttaa tosi, mikäli valinta on määritelty. | |||
Seuraavat ovat lisäksi käteviä autotools-ohjelmien kanssa. | |||
*use_with valinta [configure-valitsin=valinta] [configure-valitsinasetus], palauttaa <tt>--with-configure-valitsin=configure-valitsinasetus</tt> tai without, mikäli muuttujaa ei ole määritelty. | |||
*use_enable valinta [configure-valitsin=valinta] [configure-valitsinasetus], palauttaa | |||
<tt>--enable-configure-valitsin=configure-valitsinasetus</tt> tai disable, mikäli muuttujaa ei ole määritelty. | |||
====Tulostusfunktiot==== | |||
*einfo "viesti", merkityksetön tuloste esimerkiksi asennuksen edistymisestä | |||
*elog "viesti", tuloste, joka on tarkoitettu huomioitavaksi ja joka tulostetaan myös logeihin | |||
*ewarn "varoitusviesti", varoitustuloste | |||
*eerror "virheilmoitus", virhetuloste | |||
*ebegin "tapahtumailmoitus", tulostaa ilmoituksen tapahtumasta, jonka onnistumisesta voidaan ilmoittaa funktiolla eend. | |||
*eend <onnistuma> "virheilmoitus" jos onnistuma ei ole 0 tulostetaan virheilmoitus, muuten ilmoitetaan onnistumisesta. | |||
===Muut ominaisuudet=== | |||
*Import-lauseella voit sisällyttää ebuildiin .eclass-tiedostoja eclass-hakemistosta | |||
*'#'-merkillä alkavat rivit sivuutetaan kommentteina samalla tavalla kuin [[bash]]issa. Omia muuttujia voidaan määritellä bash-tyylisesti missä tahansa ebuidin kohdassa. | |||
===Tyyli=== | |||
Tässä tärkeitä asioita tyylistä ebuildien tekemisestä erityisesti [[gentoo|gentoolle]] | |||
*Käytä muuttujia, erityisesti oletusmuuttujia silloin kuin ne on määritelty. Tämä tekee ebuildeista portattavia - hyvin tehdyn ebuildin kohteen uuden version ebuildin voikin tyypillisesti tehdä vain ebuildin nimeä muuttamalla. Lisäksi esimerkiksi portagen ylläpitämän järjestelmän juuri ei aina ole "/", esimerkiksi osX:ssä, mutta se on aina $ROOT. | |||
*Käytä apufunktioita silloin kuin sopii. | |||
*Käytä eclasseja silloin kuin on soveliasta ja tutustu ohjelmakategoriasi ebuildien teon periaatteisiin, mikäli niitä on dokumentoitu. | |||
==Ohjelma== | ==Ohjelma== | ||
Ebuildia käytetään seuraavasti | |||
ebuild <polku ebuildiin><ohjelma>-<versio>.ebuild <toiminto> | |||
Tässä saatetaan edellyttää, että kohteena oleva ebuild on oikeassa paikassa hakemistopuussa, esimerkiksi PORTDIR_OVERLAY, ja että ohjelman SRC_URI-objekti on saatavilla DISTDIR=${PORTDIR}/distfiles - hakemistossa. | |||
===Toiminnot=== | |||
====Ebuildeja ajavat toiminnot==== | |||
Seuraavat ajavat ebuildilleen (lähes)nimikkofunktionsa täsmälleen | |||
*unpack | |||
*compile | |||
*test | |||
*preinst | |||
*install | |||
*postinst | |||
*qmerge | |||
*prerm | |||
*postrm | |||
*config | |||
Nämä taas ajavat useampia funktioita, jotka riittävät paketin asennukseen(merge) tai poistoon (unmerge) | |||
*merge, myös hakee kokonaisuuden SRC_URI-objektin | |||
*unmerge | |||
====Muut toiminnot==== | |||
*digest, luo SRC_URI-objektin varmentamiseen vaadittavat kryptografiset tiivisteet. Tiivisteet lasketaan $DISTDIR:ssä olevasta objektista tai haetaan tarvittaessa netistä. | |||
*manifest, Luo tiivisteet itse ebuildiin liittyvistä tiedostoista. | |||
*fetch, noutaa SRC_URI:n ja asettaa sen $DISTDIR:iin | |||
*clean, siistii ebuildin luoman hakemistopuun $PORTAGE_TMPDIR:stä | |||
*package, luo binääripaketin tar.bz2-muodossa $D:n hakemistopuusta ja asettaa sen PGKDIR="${PORTDIR}/packages"-muuttujan osoittamaan hakemistoon | |||
*rpm, luo package-toimintoa vastaavasti [[rpm|rpm-paketin]], tämä paketti ei välttämättä toimi kuitenkaan kaikissa [[jakelu|jakeluissa]] ja sen ominaisuudet saattavat olla vajavaiset. | |||
==Lähdekoodin muokkaus- ja uudelleenasennusesimerkki== | |||
Esimerkki squidin ohjelmakoodin muuttamisesta ja uudelleenasennuksesta. Squid on aiemmin jo asennettu järjestelmään. | |||
$ sudo su | |||
# cd /usr/portage/net-proxy/squid | |||
# ebuild squid-3.4.5.ebuild digest | |||
# ebuild squid-3.4.5.ebuild fetch | |||
# ebuild squid-3.4.5.ebuild unpack | |||
# cd /var/tmp/portage/net-proxy/squid-3.4.5/work/squid-3.4.5/src/ | |||
# $EDITOR <tiedosto> tai aja omat patch-tiedostot | |||
# cd /usr/portage/net-proxy/squid | |||
# ebuild squid-3.4.5.ebuild compile | |||
# ebuild squid-3.4.5.ebuild install | |||
# ebuild squid-3.4.5.ebuild qmerge | |||
==Muuta luettavaa== | |||
*[[portage]] | |||
*[[emerge]] | |||
*[[eclass]] | |||
===Man-sivut=== | |||
*<tt>[[man]] 1 ebuild</tt> ebuild-ohjelman man-sivu | |||
*<tt>[[man]] 5 ebuild</tt> ebuild-tiedostorakenteen, tai kielen, man-sivu | |||
Lisää man-sivuja aiheesta [[gentoo|gentoossa]] saat | |||
[[emerge]] portage-manpages | |||
*<tt>[[man]] eutils.[[eclass]]</tt> ... | |||
[[Luokka:Paketinhallinta]] | |||
[[Luokka:Gentoo]] |
Nykyinen versio 31. maaliskuuta 2016 kello 01.18
ebuild | |
---|---|
Käyttöliittymä | ei |
Lisenssi | GPL |
Kotisivu | gentoo.org |
ebuild on kieli jolla kuvaillaan, miten paketteja asennetaan sekä ohjelma, joka toteuttaa kyseisen kielen. Ebuild on käytössä erityisesti Gentoo-jakelussa paketinhallintajärjestelmän osana.
Kieli[muokkaa]
ebuild epäilemättä on kielenä monipuolinen, jopa tietyllä tapaa täydellinen. On kuitenkin tärkeää muistaa noudattaa oikeita käytäntöjä tehtäessä paketteja Gentoo-järjestelmään. Esimerkiksi valmiiseen järjestelmään kirjoittaminen useimmissa funktioissa on huonoa tyyliä, ja aiheuttaakin tyypillisesti esimerkiksi portagessa sandbox-loukkauksen.
Muuttujat[muokkaa]
Seuraavien tyypillisesti ebuildin alussa määriteltävien muuttujien määrittely on suositeltavaa:
#kuvaus DESCRIPTION="tässä kerrot mitä ohjelma tekee" #ohjelman kotisivu HOMEPAGE="http://hyodyllinen.ohjelma.org" #mistä ohjelman lähdekoodi haetaan SRC_URI="ftp://hyodyllinen.ohjelma.org/pub/${P}.tar.bz2" #ohjelman lisenssi LICENCE="GPL-2" #kertoo, mihin slottiin ebuild asentuu, Gentoossa samassa slotissa #ei voi olla kahta samannimistä pakettia SLOT="0" #kertoo mihin avainsanoihin ebuild kuuluu KEYWORDS="x86 -*" #kertoo mitkä USE-muuttujat vaikuttavat ebuildiin IUSE="" #kertoo mitkä paketit ovat paketin riippuvuuksia DEPEND="dev-libs/hyodyllinen-kirjasto" #kertoo ne ebuildit, jotka ovat ebuildin ajonaikaisia riippuvuuksia #tyypillisesti dynaaminen kirjastolinkkaus voi hajota vain näihin. RDEPEND="dev-libs/hyödyllinen-kirjasto"
Paketinnimi-muuttujat[muokkaa]
Kokonaisuudelle, jonka ebuildin nimi on kategoria/paketti-1.0-r1.ebuild muuttujat ovat
- P="paketti-1.0"
- PN="paketti"
- PV="1.0"
- PR="r1"
- PVR="1.0-r1"
- PF="paketti-1.0-r1"
- CATEGORY=kategoria
Näitä on hyvä käyttää SRC_URI:n ja muun tarvittavan kanssa. Mikäli gentoon tai muun jakelun tarjoama versiomuotoilu ei sovi, määrittele vastaavat sopivat muuttujat MY_ -etuliitteellä, esim. MY_P. Älä muuta ebuildin nimeä.
Hakemistomuuttujat[muokkaa]
- ROOT="/" kertoo, mitä juurta portagen, tai vastaavan, ylläpitämä systeemi käyttää. Älä koske tämän ulkopuolelle, äläkä muuta tätä muuttujaa.
- WORKDIR="${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/work" kertoo mihin hakemistoon ohjelman SRC_URI-objektit puretaan tai siirretään kääntämistä, tai muuta, varten.
- FILESDIR="${PORTDIR}/${CATEGORY}/${PN}/files" files-kansio ebuidin hakemistosta tänne voit tallettaa esimerkiksi pienikokoisia patcheja, alle 20 KiB.
- S="${WORKDIR}/${P}" Tämä kertoo pääasiallisen kansion, jossa työ tehdään oletusasetusta voi muokata tarpeen mukaan, yleensä suhteessa WORKDIR:iin.
- T="${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/temp" Tilapäishakemisto vapaasti käytettävissä.
- D="${PORTAGE_TMPDIR}/portage/${CATEGORY}/${PF}/image" Hakemistokuva asennettavasta kokonaisuudesta. Älä muuta.
Riippuvuusmuuttujat[muokkaa]
- DEPEND Ebuildin riippuvuudet, näiden tulee olla asennettuina, ennen kuin ebuild ajetaan.
- RDEPEND Ebuildin ajonaikaiset riippuvuudet, esimerkiksi dynaamisesti ladattavat kirjastot.
- PDEPEND Ebuildin jälkeisriippuvuudet, nämä tulee asentaa ebuildin ajon jälkeen.
- PROVIDE Kuvailee paketin tarjoaman virtuaalipaketin, älä käytä, jos et tiedä, mitä olet tekemässä.
Dynaamisten riippuvuuksien määrittely seuraavia yhdistelemällä loogisina lausekkeina. riippuvuudet ilmaistaan pitkässä muodossa kategoria/paketti-(versio)
- <, >, =, >= ja <= nämä kuvaavat, että riippuvuuden version tulee olla kirjatulle versiolle pienempi, suurempi, yhtäsuuri kuin, suurempi tai yhtä suuri kuin tai pienempi tai yhtä suuri kuin.
- use? riippuvuus on voimassa, mikäli USE-muuttuja use on asetettu. Vastaavasti ei voimassa kun !use?.
- || tai-operaattori jomman kumman riippuvuuksista täytyy olla täytetty
- !kategoria/paketti käänteinen riippuvuus. Tämä ei saa olla asennettuna ebuildia asennettaessa.
- *-jälkiliite, versionumerossa vastaa mitä tahansa merkkijonoa.
Muut muuttujat[muokkaa]
- RESTRICT, rajoittaa portagen ominaisuuksia listan mukaan, listaerottimena toimii välilyönti
- binchecks, jätetään binäärien laadunvalvonta suorittamatta.
- confcache, ei käytetä confcachea
- fetch, SRC_URI-kohdetta ei yritetä hakea
- mirror, älä hae SRC_URI-kohdetta gentoon omilta palvelimilta
- primaryuri, hae ensisijaisesti SRC_URI-kohde suoraan SRC_URI:sta
- strip, ei poisteta debug-symboleja
- test, ei ajeta src_test-funktiota
- userpriv
- QA-muuttujat Nämä muuttujat vaientavat portagen laadunvalvontavaroituksia. Muuttujien tarkoitus on lähinnä estää varoitukset suljetun lähdekoodin binääreistä, joita ei voida käytännössä korjata.
- QA_TEXTRELS
- QA_EXECSTACK
- QA_WX_LOAD
Funktiot[muokkaa]
ebuild-kielessä on otsikon jälkeen bash-syntaksin mukaisia funktioita, joilla on oma osansa paketin asennuksessa. Mitään näistä funktioista ei ole pakko määritellä. Funktioton ebuild toimiikin tyypillisesti autotools-ohjelmaa varten, jolle ei tarvitse määritellä käännösaikaisia valintoja. src-alkuiset funktiot ajetaan tyypillisesti sandboxin sisällä, eikä niissä saisi kajota muuhun järjestelmään.
pkg_nofetch[muokkaa]
Tätä funktiota kutsutaan, mikäli RESTRICT="fetch" on asetettu ja ebuildin SRC_URI kohdetta ei kyetä noutamaan. pkg_nofetchin jälkeen muita funktioita ei kutsuta vaan siirrytään ohjelman loppuun.
pkg_setup[muokkaa]
Ajetaan tarkistuksia asetusten suhteen.
src_unpack[muokkaa]
Puretaan SRC_URI-objekti $WORKDIR-muuttujan osoittamaan kansioon ja ajetaan eutils.eclassin epatch-funktio patcheille tarpeen mukaan, tar.bz2 ja tar.gz -pakatuille ohjelmille riittää tässä oletusfunktio.
src_compile[muokkaa]
Tässä funktiossa käännetään lähdekoodi tai tehdään muuta vastaavaa.
src_test[muokkaa]
Funktiota kutsutaan src_compilen jälkeen, mikäli FEATURES="test" on määritelty, funktiossa tulee ajaa asennettavan ohjelman tarjoamat yksikkötestaus-rutiinit, oletustoteutuksessa nämä ovat make check ja make test
src_install[muokkaa]
Tässä funktiossa siirretään kokonaisuuden asennettava osa, esim suoritettava binääri, hakemistorakenteeseen, jonka juurena toimii muuttujan $D osoittama hakemisto, esimerkiksi make install DESTDIR=$D
pkg_preinst ja pkg_postinst[muokkaa]
Nämä funktiot ajetaan sandboxin ulkopuolella ennen ja jälkeen $D-kuvan sisällyttämistä varsinaiseen ROOT-muuttujan osoittamaan kohteeseen, tyypillisesti "/".
pkg_prerm ja pkg_postrm[muokkaa]
Vastaavasti kuin edelliset nämä ajetaan ennen ja jälkeen kokonaisuuden sisällön, eli sen, minkä asensit $D:hen, poistamista järjestelmästä.
pkg_config[muokkaa]
Ajetaan viimeiseksi tässä uudistetaan systeemin asetuksia, mikäli se on tarpeen.
Apufunktiot[muokkaa]
Usea tarkkailevat apufunktiot[muokkaa]
USE-muuttujan USE="valinta" suhteen nämä funktiot tekevät seuraavaa
- useq valinta, Tämä palauttaa tosi, mikäli valinta on määritelty.
Seuraavat ovat lisäksi käteviä autotools-ohjelmien kanssa.
- use_with valinta [configure-valitsin=valinta] [configure-valitsinasetus], palauttaa --with-configure-valitsin=configure-valitsinasetus tai without, mikäli muuttujaa ei ole määritelty.
- use_enable valinta [configure-valitsin=valinta] [configure-valitsinasetus], palauttaa
--enable-configure-valitsin=configure-valitsinasetus tai disable, mikäli muuttujaa ei ole määritelty.
Tulostusfunktiot[muokkaa]
- einfo "viesti", merkityksetön tuloste esimerkiksi asennuksen edistymisestä
- elog "viesti", tuloste, joka on tarkoitettu huomioitavaksi ja joka tulostetaan myös logeihin
- ewarn "varoitusviesti", varoitustuloste
- eerror "virheilmoitus", virhetuloste
- ebegin "tapahtumailmoitus", tulostaa ilmoituksen tapahtumasta, jonka onnistumisesta voidaan ilmoittaa funktiolla eend.
- eend <onnistuma> "virheilmoitus" jos onnistuma ei ole 0 tulostetaan virheilmoitus, muuten ilmoitetaan onnistumisesta.
Muut ominaisuudet[muokkaa]
- Import-lauseella voit sisällyttää ebuildiin .eclass-tiedostoja eclass-hakemistosta
- '#'-merkillä alkavat rivit sivuutetaan kommentteina samalla tavalla kuin bashissa. Omia muuttujia voidaan määritellä bash-tyylisesti missä tahansa ebuidin kohdassa.
Tyyli[muokkaa]
Tässä tärkeitä asioita tyylistä ebuildien tekemisestä erityisesti gentoolle
- Käytä muuttujia, erityisesti oletusmuuttujia silloin kuin ne on määritelty. Tämä tekee ebuildeista portattavia - hyvin tehdyn ebuildin kohteen uuden version ebuildin voikin tyypillisesti tehdä vain ebuildin nimeä muuttamalla. Lisäksi esimerkiksi portagen ylläpitämän järjestelmän juuri ei aina ole "/", esimerkiksi osX:ssä, mutta se on aina $ROOT.
- Käytä apufunktioita silloin kuin sopii.
- Käytä eclasseja silloin kuin on soveliasta ja tutustu ohjelmakategoriasi ebuildien teon periaatteisiin, mikäli niitä on dokumentoitu.
Ohjelma[muokkaa]
Ebuildia käytetään seuraavasti
ebuild <polku ebuildiin><ohjelma>-<versio>.ebuild <toiminto>
Tässä saatetaan edellyttää, että kohteena oleva ebuild on oikeassa paikassa hakemistopuussa, esimerkiksi PORTDIR_OVERLAY, ja että ohjelman SRC_URI-objekti on saatavilla DISTDIR=${PORTDIR}/distfiles - hakemistossa.
Toiminnot[muokkaa]
Ebuildeja ajavat toiminnot[muokkaa]
Seuraavat ajavat ebuildilleen (lähes)nimikkofunktionsa täsmälleen
- unpack
- compile
- test
- preinst
- install
- postinst
- qmerge
- prerm
- postrm
- config
Nämä taas ajavat useampia funktioita, jotka riittävät paketin asennukseen(merge) tai poistoon (unmerge)
- merge, myös hakee kokonaisuuden SRC_URI-objektin
- unmerge
Muut toiminnot[muokkaa]
- digest, luo SRC_URI-objektin varmentamiseen vaadittavat kryptografiset tiivisteet. Tiivisteet lasketaan $DISTDIR:ssä olevasta objektista tai haetaan tarvittaessa netistä.
- manifest, Luo tiivisteet itse ebuildiin liittyvistä tiedostoista.
- fetch, noutaa SRC_URI:n ja asettaa sen $DISTDIR:iin
- clean, siistii ebuildin luoman hakemistopuun $PORTAGE_TMPDIR:stä
- package, luo binääripaketin tar.bz2-muodossa $D:n hakemistopuusta ja asettaa sen PGKDIR="${PORTDIR}/packages"-muuttujan osoittamaan hakemistoon
- rpm, luo package-toimintoa vastaavasti rpm-paketin, tämä paketti ei välttämättä toimi kuitenkaan kaikissa jakeluissa ja sen ominaisuudet saattavat olla vajavaiset.
Lähdekoodin muokkaus- ja uudelleenasennusesimerkki[muokkaa]
Esimerkki squidin ohjelmakoodin muuttamisesta ja uudelleenasennuksesta. Squid on aiemmin jo asennettu järjestelmään.
$ sudo su # cd /usr/portage/net-proxy/squid # ebuild squid-3.4.5.ebuild digest # ebuild squid-3.4.5.ebuild fetch # ebuild squid-3.4.5.ebuild unpack # cd /var/tmp/portage/net-proxy/squid-3.4.5/work/squid-3.4.5/src/ # $EDITOR <tiedosto> tai aja omat patch-tiedostot # cd /usr/portage/net-proxy/squid # ebuild squid-3.4.5.ebuild compile # ebuild squid-3.4.5.ebuild install # ebuild squid-3.4.5.ebuild qmerge
Muuta luettavaa[muokkaa]
Man-sivut[muokkaa]
Lisää man-sivuja aiheesta gentoossa saat
emerge portage-manpages