Format APT maintenance instructions
This commit is contained in:
1 parent
fb53fe2b70
commit
7c9371b76a
1 file changed
+17
-17
+17
-17
@@ -1,10 +1,10 @@
|
|||||||
# Signed distribution repositories
|
# Signed distribution repositories
|
||||||
|
|
||||||
The canonical source is the existing GERANAS Gitea repository
|
The canonical source is the existing GERANAS Gitea repository
|
||||||
\`gerardo/framebridge\`. Build all three reviewed DEBs from its release commit;
|
`gerardo/framebridge`. Build all three reviewed DEBs from its release commit;
|
||||||
do not edit installed files to produce an update.
|
do not edit installed files to produce an update.
|
||||||
|
|
||||||
One HTTPS repository at \`https://framebridge.betancourt.one/debian/\` contains
|
One HTTPS repository at `https://framebridge.betancourt.one/debian/` contains
|
||||||
three independent suites:
|
three independent suites:
|
||||||
|
|
||||||
| Suite | Tested distribution profile |
|
| Suite | Tested distribution profile |
|
||||||
@@ -14,12 +14,12 @@ three independent suites:
|
|||||||
| mint22 | Linux Mint 22.x, amd64, Python 3.12 |
|
| mint22 | Linux Mint 22.x, amd64, Python 3.12 |
|
||||||
|
|
||||||
Select exactly the suite matching the computer. These are three builds of one
|
Select exactly the suite matching the computer. These are three builds of one
|
||||||
binary package, \`framebridge-original-expanded\`, with unique pool filenames.
|
binary package, `framebridge-original-expanded`, with unique pool filenames.
|
||||||
This table does not certify untested releases or architectures.
|
This table does not certify untested releases or architectures.
|
||||||
|
|
||||||
## Prepare and review
|
## Prepare and review
|
||||||
|
|
||||||
Run \`python3 tools/build_apt_repository.py prepare --help\` in the source
|
Run `python3 tools/build_apt_repository.py prepare --help` in the source
|
||||||
repository. Supply the exact three version-matched DEBs, the existing official
|
repository. Supply the exact three version-matched DEBs, the existing official
|
||||||
public key and a new output directory. The command copies the artifacts, builds
|
public key and a new output directory. The command copies the artifacts, builds
|
||||||
indexes and by-hash paths, and prints the immutable input manifest SHA-256.
|
indexes and by-hash paths, and prints the immutable input manifest SHA-256.
|
||||||
@@ -27,23 +27,23 @@ It does not open a private keyring, sign, publish or install anything.
|
|||||||
|
|
||||||
Review the manifest, package hashes and release identity before signing.
|
Review the manifest, package hashes and release identity before signing.
|
||||||
The public key must contain exactly one primary release key with fingerprint
|
The public key must contain exactly one primary release key with fingerprint
|
||||||
\`2B1F01BC806C0B33CB6CEDDE52859CEBC91B8808\`. Official subkeys are allowed.
|
`2B1F01BC806C0B33CB6CEDDE52859CEBC91B8808`. Official subkeys are allowed.
|
||||||
|
|
||||||
## Sign in the owner's normal terminal
|
## Sign in the owner's normal terminal
|
||||||
|
|
||||||
Run \`python3 tools/build_apt_repository.py sign --help\`. Pass the reviewed
|
Run `python3 tools/build_apt_repository.py sign --help`. Pass the reviewed
|
||||||
output directory and exact manifest SHA-256. The signer requires a non-root
|
output directory and exact manifest SHA-256. The signer requires a non-root
|
||||||
interactive terminal and an owner-private existing signing home. Set
|
interactive terminal and an owner-private existing signing home. Set
|
||||||
\`GPG_TTY=$(tty)\` in that normal terminal if the pinentry implementation needs it.
|
`GPG_TTY=$(tty)` in that normal terminal if the pinentry implementation needs it.
|
||||||
The owner's passphrase is entered only into normal pinentry; it is never an
|
The owner's passphrase is entered only into normal pinentry; it is never an
|
||||||
argument, environment variable or chat message.
|
argument, environment variable or chat message.
|
||||||
|
|
||||||
The signer writes \`Release.gpg\` and \`InRelease\` for each suite, verifies the
|
The signer writes `Release.gpg` and `InRelease` for each suite, verifies the
|
||||||
signatures against the public key and exact reviewed Release plaintext, then
|
signatures against the public key and exact reviewed Release plaintext, then
|
||||||
clears the dedicated signing agent. Existing signatures or partial results
|
clears the dedicated signing agent. Existing signatures or partial results
|
||||||
cause refusal; inspect a partial transaction instead of blindly rerunning it.
|
cause refusal; inspect a partial transaction instead of blindly rerunning it.
|
||||||
|
|
||||||
Run \`verify\` with the same pinned manifest hash after signing and again after
|
Run `verify` with the same pinned manifest hash after signing and again after
|
||||||
transport. Metadata expires after 30 days; publish a freshly signed Release
|
transport. Metadata expires after 30 days; publish a freshly signed Release
|
||||||
before expiry, without altering historical signed artifacts.
|
before expiry, without altering historical signed artifacts.
|
||||||
|
|
||||||
@@ -55,7 +55,7 @@ current public generation before activation. Preserve the existing signed
|
|||||||
0.3.1 downloads and old repository metadata in an archive path.
|
0.3.1 downloads and old repository metadata in an archive path.
|
||||||
|
|
||||||
Publish only reviewed manifest files, the six verified signature files and the
|
Publish only reviewed manifest files, the six verified signature files and the
|
||||||
signing receipt. Public directories must be \`0755\` and files \`0644\`; a private
|
signing receipt. Public directories must be `0755` and files `0644`; a private
|
||||||
staging umask must not leak into the served generation. Never publish the
|
staging umask must not leak into the served generation. Never publish the
|
||||||
signing home, private receipts, account configuration or operational worktree.
|
signing home, private receipts, account configuration or operational worktree.
|
||||||
Activate a complete verified generation, preserving the web unit's existing
|
Activate a complete verified generation, preserving the web unit's existing
|
||||||
@@ -65,26 +65,26 @@ for all three suites through the final HTTPS authority.
|
|||||||
## Configure a client
|
## Configure a client
|
||||||
|
|
||||||
Install the verified official public key as
|
Install the verified official public key as
|
||||||
\`/etc/apt/keyrings/framebridge-archive-keyring.asc\` with mode \`0644\`.
|
`/etc/apt/keyrings/framebridge-archive-keyring.asc` with mode `0644`.
|
||||||
Its fingerprint must match the value above. Add a Deb822 source file:
|
Its fingerprint must match the value above. Add a Deb822 source file:
|
||||||
|
|
||||||
\`\`\`text
|
```text
|
||||||
Types: deb
|
Types: deb
|
||||||
URIs: https://framebridge.betancourt.one/debian/
|
URIs: https://framebridge.betancourt.one/debian/
|
||||||
Suites: trixie
|
Suites: trixie
|
||||||
Components: main
|
Components: main
|
||||||
Architectures: amd64
|
Architectures: amd64
|
||||||
Signed-By: /etc/apt/keyrings/framebridge-archive-keyring.asc
|
Signed-By: /etc/apt/keyrings/framebridge-archive-keyring.asc
|
||||||
\`\`\`
|
```
|
||||||
|
|
||||||
Replace \`trixie\` with \`noble\` or \`mint22\` for those tested profiles. Then use
|
Replace `trixie` with `noble` or `mint22` for those tested profiles. Then use
|
||||||
normal APT commands:
|
normal APT commands:
|
||||||
|
|
||||||
\`\`\`sh
|
```sh
|
||||||
sudo apt update
|
sudo apt update
|
||||||
apt-cache policy framebridge-original-expanded
|
apt-cache policy framebridge-original-expanded
|
||||||
sudo apt install --only-upgrade framebridge-original-expanded
|
sudo apt install --only-upgrade framebridge-original-expanded
|
||||||
\`\`\`
|
```
|
||||||
|
|
||||||
Do not use trusted=yes or disable signature/validity checks. APT update/download
|
Do not use trusted=yes or disable signature/validity checks. APT update/download
|
||||||
verification does not itself prove runtime restart or reboot persistence.
|
verification does not itself prove runtime restart or reboot persistence.
|
||||||
@@ -92,7 +92,7 @@ Confirm the actual installed version and ready connection after each upgrade.
|
|||||||
|
|
||||||
## Tool checks
|
## Tool checks
|
||||||
|
|
||||||
\`python3 tools/test_build_apt_repository.py\` creates disposable packages and a
|
`python3 tools/test_build_apt_repository.py` creates disposable packages and a
|
||||||
disposable signing identity in a temporary directory. It tests actual isolated
|
disposable signing identity in a temporary directory. It tests actual isolated
|
||||||
APT acceptance for each suite and rejects altered packages/indexes/signatures,
|
APT acceptance for each suite and rejects altered packages/indexes/signatures,
|
||||||
unexpected versions, path traversal and bundled extra primary trust keys.
|
unexpected versions, path traversal and bundled extra primary trust keys.
|
||||||
|
|||||||
Reference in new issue
Block a user