Pbuilder
Pbuilder on järjestelmä, joka kääntää ja rakentaa Deb-paketit omassa pienessä chroot-järjestelmässä. Pbuilderia käytettäessä saavutetaan mm. seuraavat edut:
- Käännösaikaiset riippuvuudet (build-depends) asennetaan automaattisesti
- Paketti käännetään puhtaassa ja mahdollisimman yksinkertaisessa ympäristössä, johon ei ole asennettu mitään ylimääräistä. Näin varmistetaan, että paketin kääntäminen onnistuu kaikissa järjestelmissä ja että käännösaikaiset riippuvuudet ovat riittävät.
- Paketin voi kääntää eri jakeluille ja jopa eri arkkitehtuurille
Pbuilderin käyttö aloitetaan luomalla käännösympäristö komennolla (pääkäyttäjän oikeuksin)
pbuilder create
Komento luo tiedoston /var/cache/pbuilder/base.tgz, joka sisältää pakatun chroot-ympäristön. Ympäristön luominen kestää jonkin aikaa, sillä se lataa tarvittavat paketit palvelimelta, asentaa ne chroot-järjestelmään ja lopuksi pakkaa luodun järjestelmän.
Tämän jälkeen Pbuilderin vaatimat valmistelut on tehty ja paketit voidaan kääntää siinä ajamalla paketin hakemistossa komento pdebuild. Käännetty paketti löytyy hakemistosta /var/cache/pbuilder/result.
Pintaa syvemmälle
Monesti Pbuilderia halutaan käyttää luomaan paketteja muille jakeluille tai arkkitehtuureille (esimerkiksi 64-bittisessä Debianissa luodaan Pbuilderilla paketti 32-bittiselle Ubuntulle). Tätä varten on luotava chroot-ympäristöt kaikille näille jakeluille ja tehtävä muutamia asetuksia.
Tehdään seuraavaksi sellaiset asetukset, että voimme luoda paketteja sekä Debianin että Ubuntun eri versioille. Muut Debian-pohjaiset jakelut on mahdollista ottaa käyttöön samalla tavalla. Tehdään Pbuilderin asetukset lisäämällä tiedostoon ~/.pbuilderrc seuraavat rivit:
#Tarvittavia muuttujia : ${DIST:=$(lsb_release --short --codename)} : ${ARCH:=$(dpkg --print-architecture)} NAME="$DIST-$ARCH" DISTRIBUTION="$DIST" DEBOOTSTRAPOPTS=("--arch" "$ARCH" "${DEBOOTSTRAPOPTS[@]}") BASETGZ="`dirname $BASETGZ`/$NAME-base.tgz" BUILDRESULT="/var/cache/pbuilder/$NAME/result/" # Hakemisto luotaville paketeille APTCACHE="/var/cache/pbuilder/$NAME/aptcache/" case "$DIST" in intrepid|hardy|gutsy) # Ubuntu MIRRORSITE="http://fi.archive.ubuntu.com/ubuntu/" COMPONENTS="main restricted universe multiverse" ;; sid|lenny|etch) # Debian MIRRORSITE="http://ftp.fi.debian.org/debian/" COMPONENTS="main contrib non-free" ;; *) echo "Unknown distribution: $DIST" exit 1 ;; esac
Jolloin Pbuilder tunnistaa käytettävän jakelun DIST-ympäristömuuttujasta ja arkkitehtuurin ARCH-ympäristömuuttujasta. Jos ympäristömuuttujille ei erikseen anneta arvoja, käytetään nykyisen järjestelmän tietoja.
Nyt voimme luoda chroot-ympäristöt eri jakeluille määrittelemällä tarvittavat ympäristömuuttujat, esimerkiksi 32-bittiselle Debian Sidille (Debianin kehitysversio) luodaan ympäristö komennolla (pääkäyttäjänä)
DIST=sid ARCH=i386 pbuilder create
Kun halutut ympäristöt on luotu, voidaan paketit kääntää tässä ympäristössä käyttäen samoja ympäristömuuttujia, esimerkkitapauksessamme
DIST=sid ARCH=i386 pdebuild
Luotu paketti löytyy hakemistosta /var/cache/pbuilder/sid-i386/.