Skip to content

How updates reach an installed machine

Venu Pacific ships its own package archive. Once a machine is installed, it receives fixes the same way it receives Debian's: through apt, in kilobytes, without downloading a new image.

For users

Nothing to set up. Every Venu Pacific installation already trusts and points at the archive.

Once a day, at an off-peak hour, the machine refreshes the list of what is available — a few hundred kilobytes of index, no packages — and if anything can be updated you get a desktop notification saying how many.

Nothing is ever downloaded or installed without you choosing it. Data here is often capped or metered, so applying an update is always a deliberate act: open Synaptic, or run

sudo apt update && sudo apt upgrade

To check where updates come from:

apt policy venu-pacific-desktop

What is in the archive

Package What it holds
venu-pacific-content Disaster Readiness and Services Directory data — the cyclone, tsunami and earthquake guidance, and the government/health/education contacts
venu-pacific-apps Welcome, Hub, Disaster Readiness, Services Directory, Help
venu-pacific-assistant the offline AI assistant
venu-pacific-branding wallpapers, boot splash, icons
venu-pacific-l10n Bislama and Fijian translations
venu-pacific-settings session defaults and the update notifier
venu-pacific-archive-keyring the archive's signing key and source entry
venu-pacific-desktop metapackage depending on all of the above

The split is not cosmetic. venu-pacific-content is separate because it is the part most likely to need correcting between releases and the part where being wrong matters most — an out-of-date evacuation instruction is a safety problem, and at a few hundred kilobytes it can be fixed over a connection that could never carry a 4.7GB image.

The large bundled content — the Kiwix encyclopedias, Kolibri, the assistant's 2.4GB model — is not in the archive. Those are fetched at image-build time and are far too big to push over the connections this distro serves. They change with a new image, not with apt upgrade.

Verifying the archive

Every index is signed. apt checks that signature on every apt update and refuses anything that fails, so a mirror or network that tampers with a package cannot get it installed.

The signing key ships in venu-pacific-archive-keyring at /usr/share/keyrings/venu-pacific-archive-keyring.gpg, and the source entry in /etc/apt/sources.list.d/venu-pacific.sources binds it to this one archive with Signed-By: — so the Venu Pacific key can never vouch for something claiming to be from Debian.

The archive signing key

This is the authoritative fingerprint. Everything Venu Pacific has ever published to the archive is signed with this key:

Venu Pacific Archive Signing Key <archive@venupacific.org>
37034C65 973FF8A0 99FEF888 C3911397 DCE079CB

To check that the key on your machine is that key:

gpg --show-keys /usr/share/keyrings/venu-pacific-archive-keyring.gpg

The fingerprint it prints must match the one above, character for character. If it does not, stop and report it — a machine trusting the wrong key would accept packages Venu Pacific did not publish.

Reading it from this page over HTTPS is a reasonable check, and it is the one most people can actually perform. It is not an absolute one: anyone who could serve you a tampered archive and a tampered copy of this page could show you a matching pair. Publishing the fingerprint in more than one place is what closes that gap, and is worth doing as the project grows.

The key does not expire. That is deliberate — an expired archive key breaks apt update on every installed machine at once, with an error most people cannot act on, and these machines may go months between connections.

For maintainers

Publishing a release, key handling and the archive layout are covered in scripts/apt-repo/README.md and in the release runbook. The short version:

./scripts/build-debs.sh
R2_ACCOUNT_ID=<account-id> ./scripts/apt-repo/publish.sh

A content fix — the common case, and the reason for all of this — is: edit the JSON, add a debian/changelog entry, run those two commands. Machines pick it up at their next daily check and notify their users. No image rebuild, no re-imaging, no USB run to the pilot site.

The version is defined in exactly one place, debian/changelog. Everything else derives from it: /etc/venu-pacific-release, the PRETTY_NAME and VENU_PACIFIC_VERSION fields in /etc/os-release, the version on the Help page, and the installer's title.

What still needs a new image

Anything installed by a live-build hook rather than a package: the llama.cpp build and its 2.4GB model, Kolibri, the Kiwix ZIM files, the xfdesktop4 fix, and the base Debian package selection. These are either too large to push over these connections or sit outside what a package can reasonably own.