Operations grimoire/Packages repository
The packages repository provide packages for FreeBSD and RHEL.
It's accessible at https://packages.nasqueron.org/ and served from WindRiver.
FreeBSD packages
The /freebsd path is divided by ABI. For example, `FreeBSD:14:amd64` is used for FreeBSD 14 on amd64 architecture.
To add a package:
- for a custom software at Nasqueron, commit a port to rPORTS following FreeBSD porters handbook - automation is fully there
- for a special configuration of an upstream package, build it on WindRiver, and copy it to /var/repo - no automation currently, but we could automate based on rOPS: roles/devserver/userland-software/ports.sls logic.
Automated builds
Poudriere and portshaker are used to build automatically the ports per D3520.
To update the packages repository, just run rebuild-nasqueron-packages
as root. It takes care to update FreeBSD and Nasqueron Git repositories, merge them and trigger a ports build. That poudriere build will take care of repository metadata too.
https://packages.nasqueron.org/freebsd/experimental/ serves automated builds content.
RHEL packages
Currently unavailable. Dwellers is a good candidate to prepare packaging, as the only RHEL-family development server we have.
For RHEL 8/9, we probably only need "dive" (3rdparty) and "docker-processes" (Nasqueron).
Build a package
Resources:
- https://ftp.osuosl.org/pub/rpm/max-rpm/
- https://docs.fedoraproject.org/en-US/package-maintainers/Packaging_Tutorial/
How to recreate the repository
As of October 2024, the easiest would be to :
- create a datacube "packages/redhat" in addition to "packages/freebsd" at rOPS: pillar/devserver/datacubes.sls, deploy
- copy packages to /datacube/packages/redhat directory
- configure nginx to serve /redhat as
alias /datacube/packages/redhat;
at rOPS: roles/webserver-alkane/nginx/files/vhosts/nasqueron.org/packages.conf
Automation
The copr project - https://copr.fedorainfracloud.org/ - has resources to automate the process. That could be investigated if we've a lot of packages to build (we don't currently).