<- Home

This post explains, at a high level, how Arch-style packages work, how pacman consumes repositories, and why I maintain both a binary mirror and a source repo for “Rostam‑exclusive” packages.

Links for reference:

Arch packaging model in brief

+------------------+     makepkg      +---------------------+
|   PKGBUILD (+)   | ---------------> | .pkg.tar.zst (+sig) |
|  sources/patches |                   +---------------------+
       |                                         |
       v                                  repo-add -> repo.db/.files
+------------------+        publish        +---------------------------+
|   build chroot   | --------------------> |  static repo (x86_64/)   |
+------------------+                       +---------------------------+

How pacman consumes repos

pacman uses libalpm to sync repository databases and resolve transactions.

$ pacman -S foo
   |
   v
[mirrorlist] -> fetch repo.db[.sig]
   |
resolve dependencies -> build transaction
   |
download .pkg.tar.zst[.sig] -> verify -> extract to /

A minimal repository config (example; check the packages repo for the current URL):

# /etc/pacman.conf
[rostam]
SigLevel = Optional TrustAll
Server = <rostam_repo_url>/$arch

Why Rostam packages exist

RostamOS repositories

Build pipeline overview

RostamOS/rostam-packages (PKGBUILDs)
            |
            v
       makepkg in clean environment
            |
            v
 .pkg.tar.zst (+ .sig)  -- repo-add -->  repo.db / repo.files
            |                               |
            +----------- publish -----------+

For details and the current setup, see the READMEs in the two repositories linked above.