Appendix C. Directory layout of the pkgsrc FTP server

Table of Contents

C.1. distfiles: The distributed source files
C.2. misc: Miscellaneous things
C.3. packages: Binary packages
C.4. reports: Bulk build reports
C.5. current, pkgsrc-20xxQy: source packages

As in other big projects, the directory layout of pkgsrc is quite complex for newbies. This chapter explains where you find things on the FTP server. The base directory on ftp.NetBSD.org is /pub/pkgsrc/. On other servers it may be different, but inside this directory, everything should look the same, no matter on which server you are. This directory contains some subdirectories, which are explained below.

C.1. distfiles: The distributed source files

The directory distfiles contains lots of archive files from all pkgsrc packages, which are mirrored here. The subdirectories are called after their package names and are used when the distributed files have names that don't explicitly contain a version number or are otherwise too generic (for example release.tar.gz).

C.2. misc: Miscellaneous things

This directory contains things that individual pkgsrc developers find worth publishing.

C.3. packages: Binary packages

This directory contains binary packages for the various platforms that are supported by pkgsrc. Each subdirectory is of the form OPSYS/ARCH/OSVERSION_TAG. The meaning of these variables is:

  • OPSYS is the name of the operating system for which the packages have been built. The name is taken from the output of the uname command, so it may differ from the one you are used to hear.

  • ARCH is the hardware architecture of the platform for which the packages have been built. It also includes the ABI (Application Binary Interface) for platforms that have several of them.

  • OSVERSION is the version of the operating system. For version numbers that change often (for example NetBSD-current), the often-changing part should be replaced with an x, for example 4.99.x.

  • TAG is either 20xxQy for a stable branch, or head for packages built from the HEAD branch. The latter should only be used when the packages are updated on a regular basis. Otherwise the date from checking out pkgsrc should be appended, for example head_20071015.

The rationale for exactly this scheme is that the pkgsrc users looking for binary packages can quickly click through the directories on the server and find the best binary packages for their machines. Since they usually know the operating system and the hardware architecture, OPSYS and ARCH are placed first. After these choices, they can select the best combination of OSVERSION and TAG together, since it is usually the case that packages stay compatible between different version of the operating system.

In each of these directories, there is a whole binary packages collection for a specific platform. It has a directory called All which contains all binary packages. Besides that, there are various category directories that contain symbolic links to the real binary packages.

C.4. reports: Bulk build reports

Here are the reports from bulk builds, for those who want to fix packages that didn't build on some of the platforms. The structure of subdirectories should look like the one in Section C.3, “packages: Binary packages”.

C.5. current, pkgsrc-20xxQy: source packages

These directories contain the real pkgsrc, that is the files that define how to create binary packages from source archives.

The directory pkgsrc contains a snapshot of the CVS repository, which is updated regularly. The file pkgsrc.tar.gz contains the same as the directory, ready to be downloaded as a whole.

In the directories for the quarterly branches, there is an additional file called pkgsrc-20xxQy.tar.gz, which contains the state of pkgsrc when it was branched.