Conference Schedule - BSDCan 2020

Managing your own Poudrière repository

Date: 2020-06-03
Time: 09:00 - 12:00
Room: Stream 1
Level: Intermediate

All times are based on Ottawa time, which is UTC -4. For example, 9AM is 1300 UTC.

Ever been frustrated by wanting to install a different version of MySQL than the ports default? And then had pkg(8) unceremoniously refuse to play along? Ever found it impossible to compile the package you want because of some other package you've already installed? Frustrated by the default choice of option settings used in the FreeBSD pkg repository?

Poudrière is the solution to these problems. Despite the perception that it is industrial strength and a bit of a beast (in the right hands, it can be), this is the reference environment for FreeBSD package building, and its requirements are surprisingly modest.

This tutorial is an introduction to running your own package repository suitable for anything from a small home network to a reasonably sized business.

Students will use Ansible playbooks to build a functioning repository from a baseline install of FreeBSD. We will discuss managing repositories for different OS versions, customizing defaults and package options, repository maintenance and touch on using poudriere as a test and integration environment for ports development.

Students will need their own laptop or desktop environment with python and ansible-2.7 (or above) installed, and be familiar with the use of SSH keys with ssh-agent or equivalent.

Students will also need to provide a system to set up as their poudriere server. This is a specification for a suitable system:

* Either bare metal, a virtual machine or a jail
* Absolute minimum specification would be 20GiB disk space, 4GiB RAM
* Preferred specification would be at least 100GiB disk space and 8GiB RAM
* ... and as much CPU power as you can throw at it
* System should have network access for downloading distfiles
* A vanilla installation of FreeBSD-12.1
* ZFS is preferred, but not obligatory
* Enable SSH, and set up a login account for yourself
* Your desktop will need:
    ansible-2.7 or more recent
    python-3.6 or more recent
* Any Unix-ish desktop system should work including Linux and MacOS


The following slides have been made available for this session:


Matthew Seaman