cowbuilder(8)
๐ cowbuilder(8) ๐
okay bestie, gather round, because today we're talking about cowbuilder, a manual page straight out of the cowdancer collection, and it's genuinely iconic. it's a pbuilder wrapper, it does cow magic, and by the end of this you're gonna be running it like the main character you are. ๐โจ
๐ NAME ๐
cowbuilder โ a pbuilder wrapper for cowdancer. periodt. that's the whole vibe. ๐ซถ
โจ SYNOPSIS โจ
here's the shape of it, keep these exact:
cowbuilder create [options]
cowbuilder update [options]
cowbuilder build [options] .dsc-file
cowbuilder login [options]
cowbuilder execute [options] -- script [script options]
cowbuilder dumpconfig
๐ DESCRIPTION ๐
cowbuilder executes the specified pbuilder operation with cowdancer. that's it, that's the whole deal. it's giving "let pbuilder cook, but make it cow." ๐ฅ
๐ COMMANDS ๐
most commands invoke pbuilder with the specified commands โ so like, go read the pbuilder manual for the deets, bestie, it's all there. ๐
createโ create thebase.cowimage. heads up: the directory forbase.cowshould be empty, or this command will fail. no cap. ๐จupdate,up,uโ update thebase.cowimage. three names, one queen. ๐ซbuild,bโ build a package given a.dscfile. ๐ฆlogin,lโ start a session within thebase.cow. hi bestie, you're inside now. ๐execute,eโ execute a command within thebase.cow. ๐โโ๏ธdumpconfigโ dump configuration information, used for debugging. the "what is going ON" button. ๐
๐ OPTIONS ๐
most options are the same as pbuilder, except for the following which are handled specially. so don't come for me about the other flags, they're pbuilder's business. ๐โโ๏ธ
--buildplaceโ the place where COW operation takes place. ๐ฎ--basepathโ okay so this has a very different meaning to the--basetgzoption ofpbuilder, because there is no tgz. this option specifies the directory in which the COW master data is stored, and the default is/var/cache/pbuilder/base.cow. ๐๏ธ--configfile[configuration file to load] โ an additional configuration file to read after all other configuration files have been read. late to the party, but welcome. ๐--no-cowdancer-updateโ do not usecowdanceroncowbuilder update. please use this option whencowdanceris interfering with the upgrade process, or whencowdanceritself is being upgraded within the chroot. trust, you'll know when it's time. ๐--debian-etch-workaroundโ workaround for Debian Etch.cow-shellwill search for all files in the chroot, but it will work. lowkey a throwback, but okay. ๐ฐ๏ธ
๐ฆ CONFIGURATION FILES ๐ฆ
cowbuilder reads the following configuration files per default. in this order, bestie, it matters. โญ
/usr/share/pbuilder/pbuilderrcโ application default, not to be changed. do not touch. ๐ โโ๏ธ/etc/pbuilderrcโ system-wide default. ๐~/.pbuilderrcโ user default. ๐- anything specified with
--configfileoption โ additional configuration at runtime. ๐น๏ธ
๐ธ CONFIGURATION FILE OPTIONS ๐ธ
the possible configuration options are as follows. others are ignored. read that again. ๐ซฃ
DISTRIBUTION=distributionBUILDRESULT=directoryBUILDPLACE=directoryBASEPATH=pathMIRRORSITE=http://mirrorNO_COWDANCER_UPDATE=1โ see--no-cowdancer-update๐DEBIAN_ETCH_WORKAROUND=1โ see--debian-etch-workaround๐
๐ฅ EXAMPLES ๐ฅ
cowbuilder create
create a base.cow image. iconic.
# cowbuilder create --hookdir /usr/share/doc/pbuilder/examples/workaround/ --distribution etch --debootstrap debootstrap --basepath /var/cache/pbuilder/base-test.cow
bash: /root/.pbuilderrc: No such file or directory
W: /home/dancer/.pbuilderrc does not exist
I: Running in no-targz mode
Distribution is etch.
Building the build environment
I: running debootstrap
/usr/sbin/debootstrap
I: Retrieving Release
.
.
cowbuilder update
update the base.cow image. glow-up time. โจ
# cowbuilder update
bash: /root/.pbuilderrc: No such file or directory
I: Copying COW directory
I: Invoking pbuilder
W: /home/dancer/.pbuilderrc does not exist
I: Running in no-targz mode
I: copying local configuration
I: mounting /proc filesystem
I: mounting /dev/pts filesystem
I: policy-rc.d already exists
Refreshing the base.tgz
I: upgrading packages
.
.
cowbuilder build test_0.1.dsc
build the package specified in the dsc file, with the base.cow image. ๐ง
pdebuild --pbuilder cowbuilder
run cowbuilder build against the current directory. the current directory should be an extracted Debian source package directory.
edit /etc/pbuilderrc to have PDEBUILD_PBUILDER=cowbuilder to make this the default behavior for pdebuild. set it and forget it, bestie. ๐พ
cowbuilder login --bindmounts /home/dancer
start a cow-shell session inside base.cow, with /home/dancer being bind-mounted to within chroot.
note thatcowbuilderwill not cow-protect what is inside/home/. just so you know. ๐
# cowbuilder login --bindmount ${HOME}
bash: /root/.pbuilderrc: No such file or directory
I: Copying COW directory
I: Invoking pbuilder
W: /home/dancer/.pbuilderrc does not exist
I: Running in no-targz mode
I: copying local configuration
I: mounting /proc filesystem
I: mounting /dev/pts filesystem
I: Mounting /home/dancer
I: policy-rc.d already exists
I: entering the shell
#
cowbuilder create --distribution sid --basepath /var/cache/pbuilder/base-test.cow
cowbuilder create --distribution sid --basepath
/var/cache/pbuilder/base-test.cow
create a base.cow image with the path /var/cache/pbuilder/base-test.cow and distribution sid. ๐ฏ
๐ AUTHOR ๐
Junichi Uekawa (dancer@debian.org) โ absolute legend, we stan. ๐
โญ SEE ALSO โญ
/usr/share/doc/pbuilder/pbuilder-doc.html, pbuilder(8), pdebuild(1)
and that's the whole page, bestie! this was cowbuilder(8) from cowdancer, dated 2007 Jun 17 โ yes, she's vintage, and yes, she still ate. ๐
๐๐ฆ go make some cows. ๐๐
๐ฆ where this page comes from
- debian bookworm: cowbuilder 0.89 ยท GPL-2.0-or-later
- debian trixie: cowbuilder 0.90 ยท GPL-2.0-or-later
- ubuntu jammy: cowbuilder 0.89 ยท GPL-2.0-or-later
- ubuntu noble: cowbuilder 0.89 ยท GPL-2.0-or-later
- ubuntu questing: cowbuilder 0.90
- ubuntu resolute: cowbuilder 0.90build1 ยท GPL-2.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms