PbuilderHowto

Differences between revisions 20 and 21
Revision 20 as of 2006-04-06 22:15:05
Size: 4586
Editor: pool-151-197-215-128
Comment: Updated Dapper version of pbuilder
Revision 21 as of 2006-04-06 22:18:01
Size: 4612
Editor: pool-151-197-215-128
Comment: Added debootstrap as dependency, and prefixed dapper commands with "sudo "
Deletions are marked like this. Additions are marked like this.
Line 11: Line 11:
The latest pbuilder package in dapper (0.145ubuntu3) should work out of the box. You only need to install it. Then run: The latest pbuilder package in dapper (0.145ubuntu3) should work out of the box. You only need to install it and debootstrap. Then run:
Line 13: Line 13:
pbuilder create sudo pbuilder create
Line 17: Line 17:
pbuilder build my-pacakge_1.0.dsc sudo pbuilder build my-pacakge_1.0.dsc

Introduction

This document describes the steps to setup a chroot jail for building Ubuntu packages using pbuilder. It is recommended for Ubuntu maintainers or anyone interested in building packages using Ubuntu.

You can build packages without pbuilder but you must already have all the build dependencies of the package that you are building installed on your running system.

The following assume you want to install breezy. If you need a hoary or dapper chroot, then exchange breezy with the appropriate distribtion.

Installing Pbuilder on dapper

The latest pbuilder package in dapper (0.145ubuntu3) should work out of the box. You only need to install it and debootstrap. Then run:

sudo pbuilder create 

and then

sudo pbuilder build my-pacakge_1.0.dsc

Installing Pbuilder on warty, hoary, breezy

Install pbuilder package and debootstrap.

Edit /etc/pbuilder/pbuilderrc changing the following directives:

    MIRRORSITE=http://archive.ubuntu.com/ubuntu
    DISTRIBUTION=breezy

Since pbuilder will complain about unauthenticated packages, you have to allow unauthenticated packages. You can make it like so:

Edit your /etc/pbuilder/pbuilderrc:

    APTCONFDIR="/etc/pbuilder/apt.config/"

Now you'll copy needed files of /etc/apt to it and

    sudo -s
    mkdir /etc/pbuilder/apt.config/
    cp -ar /etc/apt/* /etc/pbuilder/apt.config/
    echo "APT::Get::AllowUnauthenticated 1;" >> /etc/pbuilder/apt.config/apt.conf.d/allow-unauthenticated
    exit

NOTE: Make sure to remove 99update-notifier from /etc/pbuilder/apt.config/apt.conf.d/ if you have copied it in the last step. It can potentially break future updates to your pbuilder chroot, as update-notifier won't normally be installed.

Save the file and run the command below to build your breezy chroot:

    sudo pbuilder create --distribution breezy

Rebuilding a package

If you reach this point you now have a Breezy chroot located at /var/cache/pbuilder ready to build a package. We will get a Debian source package from Ubuntu repository to test it.

To check if you can download source packages, you will need an uncommented deb-src line in /etc/apt/sources.list, containing:

    deb-src http://archive.ubuntu.com/ubuntu breezy main restricted 

If the line above is there but not uncommented, uncomment it. Make sure your package index files are synchronized so that apt-get knows where to find the sources:

    sudo apt-get update

We will build bc, a simple calculator, from source, let's download the debian source package from ubuntu repository:

    sudo apt-get source bc

You can build the package using your Breezy chroot with the command:

    sudo pbuilder build *.dsc

In the end, the binary and source package will be at /var/cache/pbuilder/result/

Updating a chroot

I recommend you update your chroot before each build, to this task use the comand below:

    sudo pbuilder update

Universe support

If you want to rebuild a package from universe or build a new one that needs a package out of main you will need to edit /etc/pbuilderrc again, changing:

    OTHERMIRROR="deb http://archive.ubuntu.com/ubuntu breezy universe multiverse"

Now you need to update your chroot with the new configuration:

    sudo pbuilder update --distribution breezy --override-config

Upgrading to Latest Development Release

If you want to participate in the current release cycle, you will want to have a DapperDrake chroot. Sometimes, the development version may not be installable directly. In this case, you have to install the latest release first, and upgrade then to development release

  • change all occurences of breezy in /etc/pbuilderrc and /etc/pbuilder/apt.config/ to dapper

  •  sudo pbuilder update --override-config 

  • use the --override-config option every time you run the update

Note: If you are getting errors complaining about "/etc/shadow" doesn't exist in pbuilder chroot, you are bitten by [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=338976 Debian bug #338976]. Change your /usr/lib/pbuilder/pbuilder-buildpackage-funcs according to the patch at the end of bug report to work around this issue, and wait for pbuilder 0.139 getting merged.

See also

pbuilder User's Manual: http://www.netfort.gr.jp/~dancer/software/pbuilder-doc/pbuilder-doc.html

CategoryDocumentation ["CategoryMOTU"]

PbuilderHowto (last edited 2020-01-28 13:36:36 by paelzer)