Nykyinen versio |
Oma tekstisi |
Rivi 1: |
Rivi 1: |
| {{DISPLAYTITLE:{{lcfirst:{{PAGENAME}}}}}}
| | {{Ohjelma | nimi=ebuild | kuva= | kuvateksti= | lisenssi=[[GPL]]| käyttöliittymä=ei | kotisivu=[http://gentoo.org gentoo.org] }} |
| {{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.
| | 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== |
Rivi 15: |
Rivi 7: |
|
| |
|
| ===Muuttujat=== | | ===Muuttujat=== |
| Seuraavien tyypillisesti ebuildin alussa määriteltävien muuttujien määrittely on suositeltavaa: | | Seuraavien tyypillisesti ebuildin alussa määriteltävien muuttujien käyttö on suositeltavaa: |
|
| |
|
| #kuvaus | | #kuvaus |
Rivi 38: |
Rivi 30: |
| #tyypillisesti dynaaminen kirjastolinkkaus voi hajota vain näihin. | | #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ä.
| |
|
| |
| ====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=== | | ===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. | | 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. |
|
| |
|
| ====pkg_nofetch====
| | pkg_nofetch |
| Tätä funktiota kutsutaan, mikäli RESTRICT="fetch" on asetettu ja ebuildin SRC_URI kohdetta ei kyetä noutamaan.
| | pkg_setup |
| pkg_nofetchin jälkeen muita funktioita ei kutsuta vaan siirrytään ohjelman loppuun.
| | src_unpack |
| ====pkg_setup====
| | src_compile |
| Ajetaan tarkistuksia asetusten suhteen.
| | src_test |
| ====src_unpack====
| | src_install |
| 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.
| | pkg_preinst |
| | | pkg_postinst |
| ====src_compile====
| | pkg_prerm |
| Tässä funktiossa käännetään lähdekoodi tai tehdään muuta vastaavaa.
| | pkg_postrm |
| | | pkg_config |
| ====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=== | | ===Muut ominaisuudet=== |
| *Import-lauseella voit sisällyttää ebuildiin .eclass-tiedostoja eclass-hakemistosta
| | 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.
| | \#-merkillä alkavat rivit sivuutetaan kommentteina samalla tavalla kuin [[bash]]issa. |
| | |
| ===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==
| |
| 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:Ylläpitotyökalut]] |
| [[Luokka:Gentoo]]
| |