Warning: apt-key is deprecated

Aus wissen.becker-heiko.de

Diese Fehlermeldung erscheint bei mir ab Debian 11.1.0, wenn ich versuche einen neuen GPG-Schlüssel hinzuzufügen.

Bei Drittanbieter-Paketquellen von APT-Paketen wird meist der öffentliche Schlüssel heruntergeladen und direkt an apt-key add übergeben, beispielsweise so:

hb@hb:~ $ wget -q -O - https://download.hb.de/pki/GPG-KEY-hb | sudo apt-key add -
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
OK

Wie füge ich dann ohne apt-key einen neuen Schlüssel hinzu?

Zunächst brauchen wir ein Verzeichnis für die Ablage des Keys, z.B.:

sudo mkdir /usr/local/share/keyrings

Als nächstes brauchen wir den öffentlichen PGP-Schlüssel als Datei. Es macht an der Stelle Sinn, gleich mit file zu prüfen, ob es wirklich ein PGP-Key ist. Nicht von old verwirren lassen, „PGP public key block Public-Key (old)“ ist in Ordnung.

$ wget -q -O key.gpg https://download.hb.de/pki/GPG-KEY-hb
$ file key.gpg
key.gpg: PGP public key block Public-Key (old)

Nun müssen wir uns einen Schlüsselring erstellen, den wir APT übergeben können:

$ gpg --no-default-keyring --keyring ./tmp.gpg --import key.gpg
gpg: key 32E9750179FCEA62: public key "Heiko Becker <info@becker-heiko.de>" imported
gpg: Total number processed: 1
gpg:               imported: 1

$ gpg --no-default-keyring --keyring ./tmp.gpg --export --output hb_key.gpg

$ rm tmp.gpg key.gpg

Fertig ist hb_key.gpg, der hier auch gleich einen sprechenden Name zur Zuordnung erhalten hat. Diesen verschieben wir nun in das zuvor erstellte Verzeichnis:

sudo mv hb_key.gpg /usr/local/share/keyrings

Auf den verweist du nun im Eintrag deiner deb-Paketquelle.

sudo nano /etc/apt/sources.list

Im normalen Paketquellen-Eintrag fügt man zwischen deb und der URL folgendes ein:

[signed-by=/usr/local/share/keyrings/hb_key.gpg]

Beispiel:

deb [arch=amd64 signed-by=/usr/local/share/keyrings/hb_key.gpg] https://apt.hb.de/ stable main

Dies ist natürlich entsprechend der Architektur, Paketquellen-URL und ggf. des von dir gewählten Pfades anzupassen. Nun kannst du die Paketquellen ganz normal via sudo apt update aktualisieren, damit sich apt den Paketindex aus dem neu hinzugefügten Repository laden kann. Hier sollte euer Repository (im Beispiel ecodms.de) gelistet sein und keine Fehlermeldung erscheinen.

hb@hb:/# sudo apt update
OK:1 http://deb.debian.org/debian bullseye InRelease
OK:2 http://deb.debian.org/debian bullseye-updates InRelease                     
OK:3 http://security.debian.org/debian-security bullseye-security InRelease      
Holen:4 http://www.ecodms.de/ecodms_211264/bullseye  InRelease [1.741 B]         
Holen:5 http://www.ecodms.de/ecodms_211264/bullseye  Packages [1.190 B]
Es wurden 2.931 B in 0 s geholt (6.490 B/s).
Paketlisten werden gelesen… Fertig
Abhängigkeitsbaum wird aufgebaut… Fertig
Statusinformationen werden eingelesen… Fertig
Alle Pakete sind aktuell.