Skip to content

RHEL packaging notes

How the el10 packages are composed. The .rpm is built from the same packaging/nfpm.yaml as the .deb, by the same build.sh, with the same payload; the dependency set and the maintainer scripts differ. To install, see Install → RHEL 10 (dnf).

Dependency mapping

Verified with dnf repoquery on AlmaLinux 10.2 and Rocky Linux 10.2.

deb (Ubuntu) rpm (el10) repo note
python3 python3 baseos 3.12 on el10
git git appstream
jq jq baseos
socat socat appstream
curl curl baseos
unzip unzip baseos
rsync rsync baseos
n/a (already base image) zstd, ca-certificates, acl baseos flat depends: on both packagers
age age epel provision-installed
ffmpeg ffmpeg-free epel patent-free build, provision-installed
git-filter-repo git-filter-repo epel provision-installed
openbox openbox agentctl repo rebuilt, not upstream
n/a (deb: KasmVNC vendored by provision) kasmvncserver, libobrender32v5, libobt2v5 agentctl repo rebuilt, not upstream
google-chrome-stable google-chrome-stable google (dnf) provision-installed on both packagers
fonts-croscore liberation-fonts appstream metric-compatible with Arial/Times/Courier
fonts-noto-core google-noto-sans-fonts appstream
fonts-noto-color-emoji google-noto-color-emoji-fonts appstream el9 name is google-noto-emoji-color-fonts
fonts-inter (dropped) — no el10 package in any repo
nftables nftables baseos

The EPEL packages are installed by provision rather than declared as flat rpm dependencies: dependency resolution runs before any of this package's own code, so a flat dependency would require EPEL to be enabled before the first dnf install agentctl. See epelScript in internal/converge/host_content.go.

kasmvnc + openbox rebuilds

Neither package exists in any el10 repo upstream: KasmVNC ships no el10 build for the pinned version or the current release (Fedora 40–43, openSUSE 15 and Oracle Linux 8/9 only), and openbox is retired across RHEL — absent from baseos, appstream, crb and epel on both AlmaLinux 10.2 and Rocky Linux 10.2. That is a real platform gap, not a packaging oversight, so there is no upstream or EPEL package to depend on. agentctl's yum repo closes it by hosting its own rebuilds of both, plus openbox's two sibling libraries (libobrender32v5, libobt2v5) that Debian splits out — this is why installing on el10 requires adding agentctl's own repo rather than relying on EPEL alone. Both rebuilds need EPEL enabled one level down for their own dependencies (Perl modules for kasmvncserver, libImlib2 for libobrender32v5).

Fonts

99-agentctl-render.conf is a fontconfig rule keyed on font family, not package name, so it applies unchanged on el10. The FONT PACKAGES: mirror test in internal/converge/fontconfig_test.go reads the top-level depends: (the apt list) and is unaffected by the rpm override.

Inter is the video MCP's default caption font (STYLE_DEFAULTS in packaging/payload/mcp/video/server.py). With no el10 package, libass takes whatever fontconfig returns, so captions render in a fallback family instead of failing.

ffmpeg-free

EPEL 10 carries no ffmpeg; the full build lives in RPM Fusion, a third-party repo this package does not pull in. ffmpeg-free covers the voice-note transcode to OGG/OPUS. For h264 renders, install the full build — see Install → Known limits.