piuparts is a tool for automatic testing of whether a package can be installed, upgraded, and removed. Like [Lintian], it is useful to run in a centralized fashion, in addition to each package maintainer running it manually.

This page describes how to set up piuparts to run on the entire Ubuntu archive.

Installation and setup

You should run piuparts in a KVM instance, for safety. Piuparts installs foreign packages, which may be quite buggy, and even though it does it in a chroot, that is not all that safe. So you should run piuparts in a KVM to keep your host safe. See KvmVirtManagerEtc for information about setting up KVM.

Piuparts is packaged for Ubuntu, so installing is simple:

sudo apt-get install piuparts

The piuparts package contains piuparts-master and piuparts-slave, which take care of running piuparts on any new packages. They also only run piuparts on packages whose dependencies have already been tested successfully.

To set them up, follow instructions in /usr/share/doc/piuparts/README.gz, in the section Distributed testing.

Running piuparts-slave

You don't need to run piuparts-master at all. piuparts-slave invokes the master itself whenever it is needed.

Installing .deb packages currently requires that the packages have access to a terminal if they need it. (This is an ancient, unfortunate requirement in the Debian Policy, which will hopefully be fixed in the relatively near future.)

Because of this, you need to run piuparts-slave from the command line manually, rather than from a crontab. Log into the piupartss user (see the README referred to above) and run the following command:


This should be all you need to do.

The slave creates a tarball to speed testing up. This tarball contains a snapshot of the chroot, so that piuparts does not need to run debootstrap every time it runs. Occasionlly it is good to refresh the tarball so that it reflects the current state of the archive. If you do not do this, then piuparts needs to upgrade the unpacked tarball, which takes time. Thus, every day or ever few days, remove the tarballs in /home/piupartss.

Testing more than main

Piuparts shares with lintian the unfortunate assumption that all interesting packages are in main, because it was originally written for Debian, where that is true. Thus, you need to run several instances of piuparts, one for each section you want to test: main, universe, multiverse, restricted.

Publishing results

The results of running piuparts-slave on the entire Ubuntu archive are a very large number of log files. These are located in the directory you configure in piuparts-slave.conf using master-directory. The sub-directories fail and pass are the most interesting ones, most of the others should be empty (except for reserved, which you should not touch).

To publish the log files, copy them (with rsync) to some place that is visible via HTTP.

More info/help

LarsWirzenius wrote piuparts, and used to run it against the Ubuntu archive. He's glad to help if you have questions.

Testing/Automation/Piuparts (last edited 2008-08-06 16:22:54 by localhost)