Pbuilder

Linux.fista
Versio hetkellä 29. kesäkuuta 2008 kello 12.27 – tehnyt Heikki (keskustelu | muokkaukset)
Siirry navigaatioon Siirry hakuun

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:

  1. Käännösaikaiset riippuvuudet (build-depends) asennetaan automaattisesti
  2. 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.
  3. 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/.

Katso myös