Frank Lichtenheld and others have brought up the idea of automatically
testing installation, upgrading, and removal of packages. It struck me
that it should be pretty simple to implement at least basic versions of
this. The result: http://liw.iki.fi/liw/download/piuparts-0.4.tar.gz

I have attached the manual page.

The current version is quite simplistic. It may well be too simplistic
to work for more than in simple cases, but it's a start.

I'd be very curious to hear about suggestions for improvements.

piuparts(1)                                                        piuparts(1)



NAME
       piuparts  -  Debian  package installation, upgrade, and removal testing
       suite

SYNOPSIS
       piuparts [-apvV] [-d distro] [-i filename] [-l logfile] [-m url] [pack-
       age]...

DESCRIPTION
       piuparts  tests that Debian packages can be installed and removed with-
       out ill effects. It is meant for people who create Debian  packages  to
       test them before they upload them to the Debian package archive.

       piuparts  creates  a chroot environment with a minimal Debian installa-
       tion, plus any packages that are needed for the test. It then  installs
       the packages, and removes and purges them, and checks that no files are
       left behind, and that no extra files are removed.

       The test consists of the following steps:

       1.     Create a chroot by running debootstrap, and configuring it suit-
              ably.   Meta data (filenames and data returned by lstat) is cap-
              tured and remembered for later.

       2.     Install the packages named on the command line. Technically this
              works  by  doing  dpkg  -i  on  the  package files, then running
              apt-get -yf, which installs also any missing dependencies.

       3.     Uninstall (first dpkg --remove, then dpkg --purge) the  packages
              and what dependencies were added.

       4.     Compare the final state of the chroot with what was saved in the
              first step. Any files that are missing,  modified,  or  new  are
              reported. Modification is done only by comparing file meta data,
              not actual file contents.

       If the package is known to apt-cache, piuparts  also  does  an  upgrade
       test,  where  it  first  installs  the  package  with apt-get, and then
       installs from the package files given on the command line, and  finally
       removes  and  purges  everything that got installed.  The assumption is
       that the version apt-get finds is older  than  the  package  file.  The
       upgrade test is not performed if -a is used.

OPTIONS
       -a, --apt
              The  package  arguments on the command line are to be treated as
              package names and installed via apt-get instead of  being  names
              of package files, to be installed via dpkg -i.

       -b tarball, --basetgz=tarball
              Use  tarball  as  the contents of the initial chroot, instead of
              building a new one with debootstrap.

       -d name, --distribution=name
              Which Debian distribution to use: a code name (sarge, etch, sid)
              or experimental. The default is sid (i.e, unstable).

       -i filename, --ignore=filename
              Add  a filename to the list of filenames to be ignored when com-
              paring changes before and after installation. By  default,  piu-
              parts  ignores files that always change during a package instal-
              lation and  uninstallation,  such  as  dpkg  status  files.  The
              filename  should  be  relative  to the root of the chroot (e.g.,
              var/lib/dpkg/status).

       -l filename, --log-file=filename
              Write log file to filename in addition to the standard output.

       -m url, --mirror=url
              Which    Debian    mirror    to    use.    The    default     is
              http://ftp.debian.org/.

       -p, --pbuilder
              Use  /var/cache/pbuilder/base.tgz as the base tarball. This is a
              shorthand so that you don't need to use -b for it.

       -s filename, --save=filename
              Save the chroot, after it has been set up, into filename. It can
              then be used with -b.

       -v, --verbose
              Write also debugging log messages (used once) and really verbose
              debugging log messages (used twice) to the standard  output.  If
              there  are  additional  log  files, they always get all log mes-
              sages.

       -V, --version
              Write out the version number of the program.

EXAMPLES
       Assume that you have just built a new version of your  Debian  package,
       to  be  uploaded to Debian unstable. It is in ../foo_1.0-2_i386.deb and
       you would like to know whether it  installs  and  uninstalls  properly.
       Here's what you would do:

       piuparts ../foo_1.0-2_i386.deb

SEE ALSO
       pbuilder(1)

AUTHOR
       Lars Wirzenius ([EMAIL PROTECTED]).



                                  2005-06-12                       piuparts(1)

Reply via email to