Portál AbcLinuxu, 21. listopadu 2025 00:38
Pbuilder (Personal Builder) je sada skriptů určená pro balíčkování. Umožňuje balíčkovat pro různé distribuce a architektury bez nutnosti instalace jiného systému, využívá tzv. chrooty. Hodí se třeba pro backporty do starších verzí distribuce, balíčkování pro repozitáře (sestavení balíků v chrootu je vždy stejné), sám si instaluje všechny závislosti. Pro ušetření místa se ke kompresi chrootu používá formát tar.gz.
Nejdříve si budeme muset pbuilder nainstalovat, udělejte to jakýmkoliv způsobem; apt-get, Aptitude, Synaptic, …
Doporučuji nainstalovat také balíky dpkg-dev, devscripts, fakeroot, cdebootstrap a je-li to možné, také sudo, pokud chybí.
Po instalaci se vám v /usr/bin objeví pár binárek, v /usr/lib/pbuilder několik scriptů (není třeba je upravovat) a také výchozí konfigurační soubor /etc/pbuilderrc. Ten obsahuje pouze jeden řádek, a to mirror Debianu. Většinou se pro normální využití nehodí, a proto si za chvíli vytvoříme vlastní konfigurační soubor.
Váš uživatelský konfigurační soubor pbuilderu se nachází ve vaší domovské složce, jmenuje se .pbuilderrc a vypadá třeba takhle.
#!/bin/bash
# Kódová jména větví Debianu
UNSTABLE_CODENAME="sid"
TESTING_CODENAME="squeeze"
STABLE_CODENAME="lenny"
# Dostupná vydání Debianu
DEBIAN_SUITES=($UNSTABLE_CODENAME $TESTING_CODENAME $STABLE_CODENAME
"unstable" "testing" "stable")
# Dostupná vydání Ubuntu
UBUNTU_SUITES=("jaunty" "intrepid" "hardy")
# Servery, ze kterých stahovat
DEBIAN_MIRROR="ftp.debian.org"
UBUNTU_MIRROR="archive.ubuntu.com"
UBUNTU_PORTS_MIRROR="ports.ubuntu.com"
# Nastavit architekturu, pokud nezadána
: ${ARCH:="$(dpkg --print-architecture)"}
NAME="$DIST"
# pokud je architektura nastavena, použít jiný název tarballu
if [ -n "${ARCH}" ]; then
NAME="$DIST-$ARCH"
DEBOOTSTRAPOPTS=("--arch" "$ARCH" "${DEBOOTSTRAPOPTS[@]}")
fi
DISTRIBUTION="$DIST"
BASETGZ="/var/cache/pbuilder/$NAME-base.tgz"
BUILDRESULT="/var/cache/pbuilder/$NAME/result/"
APTCACHE="/var/cache/pbuilder/$NAME/aptcache/"
BUILDPLACE="/var/cache/pbuilder/build/"
if $(echo ${DEBIAN_SUITES[@]} | grep -q "$DIST"); then
# Debian
MIRRORSITE="http://$DEBIAN_MIRROR/debian/"
COMPONENTS="main contrib non-free"
elif $(echo ${UBUNTU_SUITES[@]} | grep -q "$DIST"); then
# Ubuntu
MIRRORSITE="http://$UBUNTU_MIRROR/ubuntu/"
COMPONENTS="main restricted universe multiverse"
else
echo "Neznámá distribuce: $DIST"
exit 1
fi
# pro architektury armel a lpia použít ubuntu-ports, když se kompiluje pro ubuntu
case $ARCH in
armel|lpia)
if $(echo ${UBUNTU_SUITES[@]} | grep -q "$DIST"); then
MIRRORSITE="http://$UBUNTU_PORTS_MIRROR/ubuntu-ports/"
fi
;;
esac
# když se kompiluje více věcí, které na sobě závisí, je dobré mít kompilační skript,
# který po každé kompilaci vytvoří lokální repozitář, a ten pak nastavit jako OTHERMIRROR
# (a také ve skriptu pohlídat, aby se rozbalovalo jen jednou
# a komprimovalo také jednou, před a po kompilaci všeho)
OTHERMIRROR="deb file:///var/cache/pbuilder/$NAME/result/ /"
if $(echo ${UBUNTU_SUITES[@]} | grep -q "$DIST"); then
case $ARCH in
armel|lpia)
if [ -z "$OTHERMIRROR" ]; then
OTHERMIRROR="deb http://$UBUNTU_PORTS_MIRROR/ubuntu-ports/ $DIST-security $COMPONENTS | deb http://$UBUNTU_PORTS_MIRROR/ubuntu-ports/ $DIST-updates $COMPONENTS"
else
OTHERMIRROR="$OTHERMIRROR | deb http://$UBUNTU_PORTS_MIRROR/ubuntu-ports/ $DIST-security $COMPONENTS | deb http://$UBUNTU_PORTS_MIRROR/ubuntu-ports/ $DIST-updates $COMPONENTS"
fi
;;
*)
if [ -z "$OTHERMIRROR" ]; then
OTHERMIRROR="deb http://$UBUNTU_MIRROR/ubuntu/ $DIST-security $COMPONENTS | deb http://$UBUNTU_MIRROR/ubuntu/ $DIST-updates $COMPONENTS"
else
OTHERMIRROR="$OTHERMIRROR | deb http://$UBUNTU_MIRROR/ubuntu/ $DIST-security $COMPONENTS | deb http://$UBUNTU_MIRROR/ubuntu/ $DIST-updates $COMPONENTS"
fi
;;
esac
fi
# použít ccache pro rychlejší opakované kompilace
sudo mkdir -p $PBUILDERPLACE/ccache
sudo chmod a+w $PBUILDERPLACE/ccache
export CCACHE_DIR="$PBUILDERPLACE/ccache"
export PATH="/usr/lib/ccache:${PATH}"
BINDMOUNTS="${CCACHE_DIR} $PBUILDERPLACE/$NAME/result"
# extra balíky v chrootu
EXTRAPACKAGES="ccache"
Jak vidíte, je to vcelku obyčejný bashovský script. Všechny proměnné můžete ovlivnit při spouštění pbuilderu – např.:
sudo DIST=hardy pbuilder create
Nyní vám popíšu proměnné, které pbuilder využívá (všechny se dají nahradit parametry pbuilderu), ostatní už si snad napíšete sami, když byla v úvodu požadována znalost bashe ;-)
Když už máme hotový konfigurační soubor, můžeme si vytvořit první chroot. Spusťte tedy:
sudo DIST=squeeze pbuilder create
Pak čekejte, v závislosti na vašem internetovém připojení to bude chvilka, nebo věčnost. Pokud je nutné chroot aktualizovat, nahraďte create slovem update.
Teď už můžeme balíček zkompilovat. Pokud máte zdrojový balík, spusťte prostě:
sudo DIST=squeeze pbuilder build *.dsc
a pokud ne, můžete použít pdebuild v adresáři se zdrojáky – musí obsahovat adresář debian.
sudo DIST=squeeze pdebuild
Programu můžete zadat různé parametry, ty se zadávají na konec příkazu, ale při parametru build před název dsc souboru. Zde uvedu pár základních, o dalších se můžete dočíst v manuálové stránce.
Tento návod byl určen jen jako úvod do práce s pbuilderem. Dále doporučuji pročíst dokumenty uvedené pod článkem jako Odkazy a zdroje.
--debuild | debuild Stejné jako pdebuild.Ale nikde není uvedené, co dělá pdebuild ;) Jinak zajímavý článek
Čítaš niekedy čo napíšeš, tak toto je napísané pre toho kto to nepetrebuje čítať, kto nevie o čo ide aj tak nepochopí čo je čo, takže zas ďaľší zbytočný článok, celkom by ma to zaujímalo, takže sadni si k tomu znova a prepíš to s vysvetlením pojmov, lebo viac mi napovie "man", dík.
S lítostí se musím připojit k tomuto názoru... na základě tohoto stručného výtahu z man stránek se to nedá pochopit, je to spíš stručný seznam klíčových slov pro toho, kdo to všechno ví a zná a jenom se mu nechce si to pamatovat. (Jestli to tak ovšem bylo myšleno, pak je to napsáno dobře.)
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.