At work we have a love/hate relationship with Launchpad ... we can turn Debian source packages into APT repositories but only if we jump through the hoops just right. Discussing the many limitations of Launchpad is a black hole, so I just want to share an experiment I completed recently. Most Debian packaging tutorials start with the GNU Hello program, so I used that for consistency.

I first started with a list of requirements:

  1. Store packaging files in git
  2. Build packages for multiple Ubuntu releases
  3. Create APT repositories

We use (and love) Travis CI a ton and it seemed like the perfect place to iterate on packages. With the typical build environment already available, the only extra tools I used were:

  1. deb-s3 for creating and managing APT repositories in the cloud without rsyncing local copies of everything
  2. pbuilder to isolate the package building environment

The contents of the hello/debian directory will be straightforward to anyone familiar with Debian packaging and all of the interesting bits are contained in the .travis.yml file.

The resulting repository is hosted on S3 and can be added to your system with the following APT source:

deb precise main

Next steps:

  1. Use sbuild or similar to solve the multiple distributions issue
  2. Inject the APT repository into the build sources so that dependent packages can be created
  3. Sign the packages and repository catalogs
  4. Create a community index for GitHub repositories and S3 buckets