Appendix D. Directory layout of the pkgsrc FTP server
Prev |  | Next

# Appendix D. Directory layout of the pkgsrc FTP server

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.

## D.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`).

## D.2. `misc`: Miscellaneous things

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

## D.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. Typically it is the version defining an ABI, e.g. 9.0.

- `TAG` is either `20`YY`Q`N`` for a stable branch, or `current` for packages built from the HEAD branch. The latter should only be used when the packages are updated on a regular basis.

The rationale for this scheme is that users can first search by OPSYS and ARCH, since these are more or less unchangeable. After that, there is a management set of directories with OSVERSION and TAG.

See also `README.md` in `packages` for more details, including about symlinks.

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.

## D.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 D.3, “`packages`: Binary packages”.

## D.5. `current`, `stable`, `pkgsrc-20`xx`Q`y``: source packages

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

Each of the `current`, `stable` and `pkgsrc-20`xx`Q`y`` directories share the same structure. They each contain a `pkgsrc` directory and `pkgsrc.tar.{bz,gz,xz}` file.

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

The `current` directory contains files related to the HEAD branch of the CVS repository. In this directory there is an additional file called `pkgsrc-readmes.tar.{bz,gz,xz}` that contains all pkgsrc `README`s with information about categories and packages.

The `stable` directory is a symlink to the latest `pkgsrc-20`xx`Q`y``.

The `pkgsrc-20`xx`Q`y``. directories contain files related to the `-20`xx`Q`y`` stable branch of the CVS repository. In these directories there is an additional file called `pkgsrc-20`xx`Q`y`.tar.{bz,gz,xz}`, which contains the state of pkgsrc when it was branched.

Prev |  | Next
Appendix C. Build logs | Home | Appendix E. Help topics