Ero sivun ”Ebuild” versioiden välillä
(→Tyyli) |
|||
Rivi 115: | Rivi 115: | ||
*Käytä eclasseja silloin kuin on soveliasta ja tutustu ohjelmakategoriasi ebuildien teon periaatteisiin, mikäli niitä on dokumentoitu. | *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. | |||
[[Luokka:Ylläpitotyökalut]] | [[Luokka:Ylläpitotyökalut]] |
Versio 23. huhtikuuta 2007 kello 17.14
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
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
Seuraavien tyypillisesti ebuildin alussa määriteltävien muuttujien käyttö 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
Kokonaisuudelle, jonka ebuildin nimi on 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"
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 vastavat 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 20kiB.
- 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 dynaamisestiladattavat 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 kirjattulle 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
Funktiot
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
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 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 make check ja make test
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.
Muut ominaisuudet
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
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
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-paketin, tämä paketti ei välttämättä toimi kuitenkaan kaikissa jakeluissa ja sen ominaisuudet saattavat olla vajavaiset.