.deb
/.rpm
packaging & repository publishing toolkit leveraging Github Actions & Github Pages.
Documentation | Pakste Manual |
Repository | Pakste on GitHub |
Author | kakwalab © 2025 |
License | MIT |
Pakste is a toolkit for developers packaging software for Debian and Red Hat-based distributions. It provides reasonably consistent and reproducible package builds across different distribution & version, without the hassle of setting up and maintaining build servers.
Key features:
- Wrapper & integration between
.rpm
and.deb
build & repo management tools, providing easier to remember commands likemake rpm_repo
ormake deb_repo
. - Helpers to easily package upstream repositories with a good level reproducibility.
- Multi-Distribution & CPU Architecture targeting thanks to
mock
/pbuilder
&binfmt
respectively. - Build dependencies consistency, again, thanks to
mock
/pbuilder
and their disposable build containers. - Github Action Workflow for automated builds and publication via Github Pages (easily customizable for other destinations).
Example projects:
- Debian/Ubuntu packaging for RPM/Mock.
- Misc Open Feature Flag packages.
- Packages for the author's projects.
- Misc packages from upstream projects.
.deb tools:
apt install make debhelper reprepro cowbuilder wget
.rpm tools (requires configuration):
# Configure repository
. /etc/os-release
ARCH=$(dpkg --print-architecture)
# GPG Key
wget -qO - https://kakwa.github.io/debian-rpm-build-tools/GPG-KEY.pub | \
gpg --dearmor | tee /etc/apt/trusted.gpg.d/debian-rpm-build-tools.gpg >/dev/null
# Repository
echo "deb [arch=${ARCH}] \
https://kakwa.github.io/debian-rpm-build-tools/deb.${VERSION_CODENAME}.${ARCH}/ \
${VERSION_CODENAME} main" | \
tee /etc/apt/sources.list.d/debian-rpm-build-tools.list
# Update
apt update
# Install packages
apt install mock createrepo-c rpm dnf gnupg2
.rpm tools:
dnf install make rpm-sign expect rpm-build createrepo mock wget
.deb tools:
dnf install pbuilder apt dpkg debian-keyring ubu-keyring reprepro
Initialize and configure a new package:
./common/init_pkg.sh -n foo
cd foo/
Setup source recovery & metadata:
vim Makefile
make manifest
Package setup:
# .deb packaging
vim debian/rules debian/control
# .rpm packaging
vim rpm/component.spec
Build packages in clean, isolated chroot environments:
# deb
make deb_chroot DIST=trixie # ARCH=arm64
# rpm
make rpm_chroot DIST=el9 # ARCH=aarch64