# apt
Quinjet publishes a signed apt repository for Debian and Ubuntu on x86-64 and
ARM64. Add its key and source once, then install the package:
```bash
sudo install -d -m 0755 /etc/apt/keyrings
sudo apt update
sudo apt install quinjet
```
The signing key fingerprint is
`B7B5DF2C5A252DF24D2EA181C1336A9FF4ED3EAF`. Inspect the downloaded key before
installing it when you want to verify that value yourself:
```bash
The package declares Git as a dependency and `gh` as a suggestion. It installs:
```text
/usr/bin/quinjet
/usr/bin/q
/usr/share/bash-completion/completions/quinjet
/usr/share/fish/vendor_completions.d/quinjet.fish
/usr/share/zsh/vendor-completions/_quinjet
/usr/share/man/man1/quinjet.1
```
## Update
```bash
sudo apt update
sudo apt install --only-upgrade quinjet
```
`quinjet update` refuses to replace an apt-owned executable because doing so
would make dpkg's installed-version record inaccurate. It prints the apt
upgrade command instead. `quinjet update --check` still checks the newest
release without changing the installation.
## Inspect
```bash
apt-cache policy quinjet
dpkg-query --show quinjet
dpkg-query --listfiles quinjet
```
## Remove
```bash
sudo apt remove quinjet
sudo rm /etc/apt/sources.list.d/quinjet.list
sudo rm /etc/apt/keyrings/quinjet.asc
sudo apt update
```
## Releasing
The Linux release jobs use `cargo-deb` to package the same static binaries that
the install script and Homebrew consume. Each package is installed and smoke
tested on its native release runner before upload. The successful release then
triggers the Pages workflow, which downloads the latest `.deb` files, generates
apt metadata for both architectures, signs `InRelease` and `Release.gpg`, and
asks apt to resolve and download Quinjet from the finished local repository
before deployment.
The private signing key lives only in the `APT_SIGNING_KEY` Actions secret. Its
public half is committed at `packaging/apt/quinjet.asc`, and the deployment
refuses to sign when their fingerprints differ.