This paper describes the approach used by the FreeBSD ports management team to produce a high quality package set suitable for official FreeBSD release media. This document is a work in progress, but eventually it will cover the process used to build a clean package set on the FreeBSD.org “Ports Cluster”, how to configure any other set of machines as a ports cluster, how to split up the packages for the release media, and how to verify that a package set is consistent.
The FreeBSD Ports
collection is a collection of over 24,000
third-party software packages available for FreeBSD. The Ports Management Team <portmgr@FreeBSD.org>
is responsible for maintaining a consistent ports tree that can be used
to create the binary packages that accompany a given FreeBSD
release.
In order to provide a consistent set of third-party
packages for FreeBSD releases, every port is built in a
separate chroot environment, starting with an empty
/usr/local
and
/usr/X11R6
. The requisite dependencies
are installed as packages before the build proceeds. This
enforces consistency in the package build
process. By starting the package build in a pristine
environment, we can assure that the package metadata (such as
required dependencies) is accurate. This way, we will never
generate packages that might work on some systems and not on
others depending on what software was previously
installed.
The “Ports Cluster” for the x86 architecture currently consists of a master node (Dual Pentium® III 733MHz) and 8 slave nodes (Pentium® III 800MHz) to do the actual package builds. With this configuration, a complete package build takes over 24 hours. These machines are co-located with the other FreeBSD Project equipment at Yahoo's corner of Exodus in Santa Clara, CA.
The “Ports Cluster” for the Alpha architecture consists of 7 PWS 500A machines donated by Compaq and also co-located with Yahoo's facilities.
This, and other documents, can be downloaded from http://ftp.FreeBSD.org/pub/FreeBSD/doc/
For questions about FreeBSD, read the
documentation before
contacting <questions@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.