A binary repository is a directory exposed by a web server, that contains built package files of precompiled software, which can be installed using pacman. Apart from the packages and their potential Package Signature files, Sync Database files are also present.
For performance reasons, a binary repository does not contain package files directly, as it would require moving files (e.g. from a staging repository to a testing repository). Instead, files are symlinked from a Package Pool, which renders moves between repositories a near-instant operation.
A binary repository usually targets a specific stability guarantee (e.g.
stable) and depending on this should be
consistent among the packages it provides (e.g. a package in
not depend on a soname only provided by a package in
The below example shows the directory layout of a binary repository named
repo alongside its Package Pool directory with a single package in
. ├── /srv/ftp/repo │ └── x86_64 │ ├── package-1.0.0-1-x86_64.pkg.tar.zst -> ../../pool/package-1.0.0-1-x86_64.pkg.tar.zst │ ├── package-1.0.0-1-x86_64.pkg.tar.zst.sig -> ../../pool/package-1.0.0-1-x86_64.pkg.tar.zst.sig │ ├── repo.db │ └── repo.files └── /srv/ftp/pool ├── package-1.0.0-1-x86_64.pkg.tar.zst └── package-1.0.0-1-x86_64.pkg.tar.zst.sig
A package pool is a directory, that contains package files and their potential signatures. Symlinks in Binary Repository directories target files in a package pool, so that files do not have to be moved (instead symlinks are created and cleaned up).