Portál AbcLinuxu, 1. května 2025 05:16
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.