BULK(8) System Manager's Manual BULK(8)

bulk — fetch pre-built packages

bulk port ...

bulk -u

bulk -h

bulk downloads pre-built packages for ports from the rawnix.org package server into the port directories, and verifies them. It does not install them; use addpkg(8) or pkg(8) for that.

For each port, bulk looks for a directory of that name holding a MAKEPKG in the collections listed in /etc/ports/ports.rsync, then:

  1. Refuses if the port is locked, with a MAKEPKG.lock: the package on the server was built from upstream's recipe, not from the lock.
  2. Derives the package file name from the MAKEPKG. Only .pkg.tar.gz packages are fetched.
  3. Takes the expected SHA256 of that file from the port's .signature, and verifies .signature the way mkpkg(8) does: the key in the recipe's () block must match a trusted key in /etc/ports/keys/, and signify(1) must accept the signature with that key.
  4. Does nothing if the package in the port directory already has that checksum.
  5. Otherwise fetches it with rsync(1) from the bulk module, as bulk/collection/port/ on the server, and checks its SHA256. A package that does not match is deleted.

Any failure refuses the package.

The options are as follows:

, --help
Print a usage summary.
, --update
For every installed package whose port is found and not locked, make sure the port directory holds the current verified package, fetching it if needed. Locked ports are skipped.

/etc/ports/ports.rsync
Server, token and collections, as described in ports(8). host and token are required; module is ignored.
/etc/ports/keys/*.pub
Trusted public keys.
/var/lib/pkg/db
Package database, read by -u.

The bulk utility exits 0 on success, and >0 if an error occurs. It fails if any package could not be fetched and verified.

Fetch two packages, then install one:

# bulk zlib openssl
# addpkg -u '/ports/core/zlib/zlib#1.3.2-1.pkg.tar.gz'

rsync(1), signify(1), addpkg(8), mkpkg(8), pkg(8), ports(8)

September 27, 2026 mkpkg 1.6.0