Package repositories
Polaris publishes dnf and pacman repositories, so an upgrade is part of the host’s normal update rather than a download and an exact filename.
sudo dnf upgrade # Fedora, Bazzitesudo pacman -Syu # Arch, CachyOSAdding the repository is a one-time step. Downloading a release package by hand still works and is still supported; the repository is an easier path to the same package, not a different one.
Fedora
Section titled “Fedora”sudo rpm --import https://repo.papi-ux.com/polaris.gpgsudo curl --location --output /etc/yum.repos.d/polaris.repo \ https://repo.papi-ux.com/fedora/polaris.reposudo dnf install polarissudo -H polaris --setup-hostsystemctl --user restart polarisAfter that, sudo dnf upgrade carries Polaris with everything else.
The first dnf command against the repository asks you to accept the signing
key, showing fingerprint 58017EDFFA9F803E07ED26F835F13F14FAAD15CC. That is
expected: rpm --import populates rpm’s keyring, and dnf keeps its own record
of which repositories it trusts. Accepting once is enough.
It also means the first non-interactive use finds nothing rather than failing —
a script on a fresh host should run sudo dnf -y makecache before relying on
the repository.
Bazzite and other ostree hosts
Section titled “Bazzite and other ostree hosts”The same repository works, layered rather than installed:
sudo rpm --import https://repo.papi-ux.com/polaris.gpgsudo curl --location --output /etc/yum.repos.d/polaris.repo \ https://repo.papi-ux.com/fedora/polaris.reporpm-ostree install polarissystemctl rebootLayered packages are updated by rpm-ostree upgrade, so Polaris follows the
image update instead of needing to be re-layered from a downloaded RPM.
Seat isolation still needs the input group, which on ostree hosts lives in
/usr/lib/group. See the Bazzite guide.
Arch and CachyOS
Section titled “Arch and CachyOS”curl -fsSL https://repo.papi-ux.com/polaris.gpg | sudo pacman-key --add -sudo pacman-key --lsign-key 58017EDFFA9F803E07ED26F835F13F14FAAD15CCThen append to /etc/pacman.conf:
[polaris]SigLevel = Required DatabaseRequiredServer = https://repo.papi-ux.com/arch/$archsudo pacman -Sy polarissudo -H polaris --setup-hostsystemctl --user restart polarisSigLevel = Required DatabaseRequired is deliberate. Without it pacman falls
back to the checksum recorded in the database and reports Validated By: SHA-256 Sum — it never looks at the signature, so anyone who can rewrite the database
rewrites the checksum with it.
SteamOS
Section titled “SteamOS”SteamOS is not served by a repository and will not be. The rootfs is read-only and pacman state does not survive a SteamOS update, so a repository would promise upgrades it cannot deliver. Follow the SteamOS guide.
Ubuntu
Section titled “Ubuntu”Not yet served by a repository. The Ubuntu package remains the download-and- install path described in the release notes.
What the repository serves
Section titled “What the repository serves”The package a repository serves is the package the release published, byte for byte, with a signature added to the repository copy. Nothing is rebuilt: a rebuild would ship a binary that CI never tested, and the Fedora packaging pulls a CUDA toolkit over the network at build time, which no sandboxed rebuild service permits.
The repository currently carries the latest stable release only. Prereleases are never published to it. Rolling back means installing an older release package by hand from the releases page.
Publishing runs on a schedule, so there is a short window after a release where
the repository still serves the previous version and dnf upgrade correctly
reports nothing to do. What it currently serves is not a guess:
curl -fsS https://repo.papi-ux.com/PUBLISHED_TAGWhere this is published from
Section titled “Where this is published from”The repositories are built and served by papi-ux/packages, not from this repository.
That is not organisational tidiness. GitHub reserves
<user-domain>/<repo-name> for any repository with a Pages site, so publishing
from here took over papi-ux.com/polaris/ — a real page on the docs site — and
replaced it with a redirect to the repository. A custom domain does not avoid
the collision, only changes what it returns. A repository whose name collides
with nothing does avoid it.
Signing keys, the publishing schedule, and the tooling are documented there. The
key fingerprint is 58017EDFFA9F803E07ED26F835F13F14FAAD15CC, and the repository serves its own public key at
repo.papi-ux.com/polaris.gpg.