Linuxfabrik Packaging
Build pipeline that turns Linuxfabrik's own and third-party software into RPM and DEB packages and publishes them on repo.linuxfabrik.ch. • made by Linuxfabrik
This repository is the single, organization-wide place where Linuxfabrik software is turned into RPM and DEB packages for repo.linuxfabrik.ch. It packages both Linuxfabrik's own products (e.g. FirewallFabrik) and third-party upstream software (e.g. glances, mysqltuner, mydumper). Source repositories stay source-only; the build recipes and pipeline live here once instead of being duplicated into every project's CI.
Each package lives under packages/<name>/ and brings its RPM and/or DEB recipe plus a small
package.conf manifest. The build is package-agnostic: the manifest declares the source and the
target distributions, and the shared scripts under build/ fetch the source, build inside a
per-distro container and collect the resulting packages, one file per distro and version.
See CONTRIBUTING.md for how to add a package and for the packaging conventions (distro-native builds, basing third-party recipes on the official packaging, the split-package pattern for GUI apps, and the release trigger).
linuxfabrik-release sets up the signed Linuxfabrik repository on a host: the repository configuration with the release channel enabled and the testing channel disabled, and the key the packages and the repository metadata are signed with.
RHEL 8, 9 and 10 and compatibles (replace el10 with el8 or el9):
sudo dnf install https://repo.linuxfabrik.ch/linuxfabrik-release-latest-el10.noarch.rpmFedora:
sudo dnf install https://repo.linuxfabrik.ch/linuxfabrik-release-latest-fedora44.noarch.rpmSLES and openSUSE Leap 15 and 16 (replace sle16 with sle15):
sudo rpm --import https://repo.linuxfabrik.ch/linuxfabrik.key
sudo zypper install https://repo.linuxfabrik.ch/linuxfabrik-release-latest-sle16.noarch.rpmDebian 12 and 13, Ubuntu 22.04, 24.04 and 26.04 (replace debian13 with debian12, ubuntu22.04, ubuntu24.04 or ubuntu26.04):
curl --fail --location --remote-name https://repo.linuxfabrik.ch/linuxfabrik-release-latest-debian13.deb
sudo apt install ./linuxfabrik-release-latest-debian13.deb
sudo apt updateThen install packages as usual, e.g. sudo dnf install glances. On RHEL and compatibles, some packages depend on EPEL; glances, for example, needs epel-release and the CRB repository.
New package versions wait in the testing channel for 7 days before they reach release. To try them earlier, enable linuxfabrik-testing (RHEL 8 to 10: dnf config-manager --set-enabled linuxfabrik-testing; Fedora: dnf config-manager setopt linuxfabrik-testing.enabled=1; SLES and openSUSE Leap: zypper modifyrepo --enable linuxfabrik-testing), or on Debian and Ubuntu set Enabled: yes for the testing entry in /etc/apt/sources.list.d/linuxfabrik.sources.
packages/<name>/
package.conf # manifest: source, version, per-format distro targets
src/ # own source, for packages without an upstream (PKG_SOURCE_DIR)
rpm/<name>.spec # RPM recipe (EL, Fedora, SLES)
deb/debian/ # DEB recipe (control, rules, copyright, source/format)
files/ # shared assets, e.g. the systemd unit
build/
changed-packages.sh # which packages a commit range touches (for CI)
check-upstream.sh # is a package behind its upstream release?
containerfiles/ # one build environment per distro (rocky-*, fedora-*, debian-*, ...)
create-package.sh # entry point: fetch source, dispatch to the format builder
create-rpm.sh # build a binary RPM from a spec (dnf or zypper)
create-deb.sh # build a binary .deb from a debian/ recipe
matrix-package.sh # build one package across many distros, each in a container
publish.sh # on the repo server: pull, verify, sign and publish releases
smoke-test-package.sh # install a build into a fresh container and run its smoke test
- Create
packages/<name>/withpackage.conf, the recipes you need (rpm/,deb/) and any sharedfiles/. - Set the source, version and the
PKG_RPM_DISTROS/PKG_DEB_DISTROStargets inpackage.conf. - Build locally to verify (see below).
- Open a pull request. On merge, the pipeline builds the package and publishes it to the
testingchannel; seven days later it moves torelease.
See CONTRIBUTING.md for the details.
PKG_NAME=glances \
PKG_TARGET_DISTROS='rocky-v10 debian-v13' \
PKG_PACKAGE_ITERATION=1 \
PKG_ARCH=x86_64 \
PKG_DIR_REPO="$(pwd)" \
PKG_DIR_PACKAGED="$(pwd)/packaged" \
bash build/matrix-package.shBuilt packages are collected under packaged/<distro>/. Each one is then installed into a fresh container of its distro and smoke-tested. With PKG_ARCH=aarch64 the same runs for arm64, emulated through qemu-user-static on an x86_64 machine.
Enterprise support, including an SLA, is available via a Service Contract.
If this project helps you, consider a donation via GitHub Sponsors or PayPal.
There is no fixed roadmap. Milestones are driven by customer needs and by contributors' time.