Site icon Gioxx.org

DietPi: impossibile aggiornare i pacchetti a causa della GitHub CLI

A figurine of an oktokat in the center, in the background a laptop with the main page of the GitHub open.

Photo by Roman Synkevych on Unsplash

Ero nel bel mezzo di un aggiornamento di sistema su una VM di servizio (dovevo abbandonare Bullseye in favore di Bookworm ma mancavano prima degli step intermedi), e mi sono ritrovato davanti a un errore nell’installazione, causato dall’impossibilità dell’aggiornamento di GitHub CLI perché – leggibile già a monitor – la chiave GPG usata sembrava essere scaduta, invalida.
Non sono il solo, sembra che tutto fosse previsto per lo scorso settembre, e in effetti io da qualche tempo non dovevo aggiornare questa VM, quindi potrei essermi perso qualcosa per strada, accorgendomene solo adesso.

Tutta colpa di GitHub

Fast Forward fino all’errore, nel momento in cui ho lanciato un apt update sulla VM interessata:

root@DietPi:~# apt update
Get:1 https://deb.debian.org/debian bullseye InRelease [116 kB]
Get:2 https://cli.github.com/packages stable InRelease [3917 B]
Get:3 https://deb.debian.org/debian bullseye-updates InRelease [44.1 kB]
Get:4 https://deb.debian.org/debian-security bullseye-security InRelease [27.2 kB]
Get:5 https://deb.debian.org/debian bullseye-backports InRelease [49.0 kB]
Err:2 https://cli.github.com/packages stable InRelease
  The following signatures were invalid: EXPKEYSIG 23F3D4EA75716059 GitHub CLI <opensource+cli@github.com>
Get:6 https://deb.debian.org/debian bullseye/main amd64 Packages [8066 kB]
Get:7 https://dietpi.com/apt bullseye InRelease [3531 B]
Get:8 https://dietpi.com/apt bullseye/main amd64 Packages [2348 B]
Get:9 https://deb.debian.org/debian bullseye/contrib amd64 Packages [50.4 kB]
Get:10 https://deb.debian.org/debian bullseye/non-free amd64 Packages [96.4 kB]
Get:11 https://deb.debian.org/debian bullseye-updates/main amd64 Packages [18.8 kB]
Get:12 https://deb.debian.org/debian-security bullseye-security/main amd64 Packages [301 kB]
Get:13 https://deb.debian.org/debian-security bullseye-security/non-free amd64 Packages [680 B]
Get:14 https://deb.debian.org/debian bullseye-backports/contrib amd64 Packages [6164 B]
Get:15 https://deb.debian.org/debian bullseye-backports/main amd64 Packages [403 kB]
Get:16 https://pkgs.tailscale.com/stable/debian bullseye InRelease
Get:17 https://deb.debian.org/debian bullseye-backports/non-free amd64 Packages [14.4 kB]
Get:18 https://pkgs.tailscale.com/stable/debian bullseye/main amd64 Packages [11.8 kB]
Get:19 https://pkgs.tailscale.com/stable/debian bullseye/main all Packages [354 B]
Reading package lists... Done
W: GPG error: https://cli.github.com/packages stable InRelease: The following signatures were invalid: EXPKEYSIG 23F3D4EA75716059 GitHub CLI <opensource+cli@github.com>
E: The repository 'https://cli.github.com/packages stable InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

C’è una segnalazione aperta su GitHub che annunciava proprio l’inevitabile vicolo cieco se non si fosse intervenuti per tempo, la trovi qui: github.com/cli/cli/issues/9569.

How did this happen?
Since the last time this key expired, the entire GitHub CLI team has changed, resulting in a loss of institutional knowledge. Unfortunately, the current team was unaware of the timebomb in this part of our release process.

Per cavarmela rapidamente, ho utilizzato questo codice suggerito in uno dei commenti della segnalazione:

if [ -f /usr/share/keyrings/githubcli-archive-keyring.gpg ]; then
    keyring_path="/usr/share/keyrings/githubcli-archive-keyring.gpg"
else
    keyring_path="/etc/apt/keyrings/githubcli-archive-keyring.gpg"
fi

# Download and set up the keyring
wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee "$keyring_path" > /dev/null \
    && sudo chmod go+r "$keyring_path"

Lo script si occupa semplicemente di verificare e impostare il file keyring (una chiave pubblica usata per verificare la provenienza e l’integrità dei pacchetti) per GitHub CLI, controllando se esiste già nella posizione /usr/share/keyrings/githubcli-archive-keyring.gpg o – in alternativa – in /etc/apt/keyrings/githubcli-archive-keyring.gpg.
Una volta individuato, scarica il file aggiornato direttamente dal repository di GitHub per evitare di andare nuovamente incontro all’errore durante l’aggiornamento pacchetti della macchina, cambia i permessi necessari e termina.

Problema risolto, macchina aggiornata con successo.

#KeepItSimple


Immagine di copertina Roman Synkevych on Unsplash

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

Pillole

Le pillole sono articoli di veloce lettura dedicati a notizie, script o qualsiasi altra cosa possa essere "divorata e messa in pratica" con poco. Uno spazio del blog riservato agli articoli "a bruciapelo"!
Se vuoi leggere le altre pillole fai clic qui.

Condividi l'articolo con i tuoi contatti:
Exit mobile version