A GitHub Actions workflow that automatically compiles the latest upstream releases of the Podman container stack into native .deb packages for amd64 Ubuntu 26.04.
| Package | Upstream Repo | Description |
|---|---|---|
podman |
containers/podman | Container engine |
crun |
containers/crun | OCI runtime (default for Podman) |
conmon |
containers/conmon | Container monitor |
netavark |
containers/netavark | Network stack |
aardvark-dns |
containers/aardvark-dns | DNS server for rootless containers |
skopeo |
containers/skopeo | Container image utility |
fuse-overlayfs |
containers/fuse-overlayfs | FUSE overlay driver |
passt |
passt.top/passt | User-mode networking for rootless containers |
containers-common |
containers/common | Shared config files (/etc/containers/*) |
containers-storage |
containers/storage | Container storage library and CLI |
- Scheduled builds: Runs daily at 08:00 UTC via cron.
- Manual trigger: You can also click Run workflow from the Actions tab.
- Smart skipping: Checks if a release already exists for the current upstream version. If yes, that package is skipped. Only new versions trigger a build.
- Native compilation: Each package compiles inside an
ubuntu:26.04container to match your target environment exactly. - GitHub Releases: Successful builds are published as GitHub Releases with downloadable
.debassets.
Download the .deb for the package you want from the Releases page, then install:
# example
sudo dpkg -i podman_5.x.x-0local1_amd64.deb
# If apt complains about missing dependencies:
sudo apt-get install -fIf you're installing everything fresh, use this order so dependencies resolve correctly:
sudo dpkg -i containers-common_*.deb containers-storage_*.deb conmon_*.deb crun_*.deb netavark_*.deb aardvark-dns_*.deb fuse-overlayfs_*.deb passt_*.deb skopeo_*.deb podman_*.deb
sudo apt-get install -fOr install all packages at once:
sudo dpkg -i *.deb
sudo apt-get install -f| Package | Depends on |
|---|---|
podman |
conmon, crun, netavark, aardvark-dns, fuse-overlayfs, containers-common, containers-storage |
skopeo |
containers-common |
| Everything else | No custom dependencies declared |
Note about
skopeo: The upstreamskopeopackage ships/etc/containers/policy.json, which conflicts with Ubuntu'sgolang-github-containers-commonpackage. This build strips that file fromskopeoand instead declarescontainers-commonas a dependency, so the config is provided cleanly by one package.
To prevent Ubuntu's older packages from overwriting these builds on apt upgrade, create a pinning file:
sudo tee /etc/apt/preferences.d/podman-stack <<'EOF'
Package: podman crun conmon netavark aardvark-dns skopeo fuse-overlayfs passt containers-common containers-storage
Pin: origin ""
Pin-Priority: 1001
EOFNote: Since these packages use epoch
1:(e.g.,1:5.4.0-0local1), they will naturally outrank Ubuntu's un-epoch'd packages even without pinning. Pinning is just extra insurance.
- Matrix strategy — Each package builds independently. If one fails, the others continue.
- Epoch pinning — Packages are built with
--epoch 1so APT always prefers them over distro versions. - Dependency mapping — The
podmanpackage declares dependencies on all companion tools soaptresolves them automatically.
- Ubuntu 26.04 (or compatible) amd64 system
dpkg/aptfor package management