Informations
Depuis 2020, ajouter une clé GPG pour les dépôts utilisés par apt ne doit plus se faire par le biais de la commande apt-key
; celle-ci est déclaré obsolète ET ne doit plus être utilisée !
Lire le manpage : man 8 apt-key
et tout particulièrement la section « DEPRECATION ».
Then you can directly replace this with (though note the recommendation below):
wget -qO- https://myrepo.example/myrepo.asc | sudo tee /etc/apt/trusted.gpg.d/myrepo.asc Make sure to use the "asc" extension for ASCII armored keys and the "gpg" extension for the binary OpenPGP format (also known as "GPG key public ring"). The binary OpenPGP format works for all apt versions, while the ASCII armored format works for apt version >= 1.4. Recommended: Instead of placing keys into the /etc/apt/trusted.gpg.d directory, you can place them anywhere on your filesystem by using the Signed-By option in your sources.list and pointing to the filename of the key. See sources.list(5) for details. Since APT 2.4, /etc/apt/keyrings is provided as the recommended location for keys not managed by packages. When using a deb822-style sources.list, and with apt version >= 2.4, the Signed-By option can also be used to include the full ASCII armored keyring directly in the sources.list without an additional file.
Pour information, avec Debian 11, apt est en version 2.2.4 ! La version de Test - actuellement nommée « bookworm » et Sid, sont en version 2.5.
La recommandation de placer les clés non officielles dans le répertoire ‹ /etc/apt/keyrings/ › est valable donc pour la version de Test, pour Sid, et le sera dans la future version 12, puisque l’outil apt
est en version 2.4 et l’utilisation de fichiers *.sources (donc au format Deb822).
Explications pratiques
En francais, en pratique, cela nous donne quoi ?!
- En ligne de commande, je récupère la clé GPG (ou le fichier .asc) du projet concerné :
wget -qO- https://url-projet.tld/fichier-cle.gpg | gpg --dearmor | sudo tee /répertoire/nom-projet.fichier.gpg
où /répertoire/
peut-être :
- le répertoire personnel
$HOME
- officiellement
/etc/apt/keyrings/
-
/usr/local/keyrings/
: répertoire par défaut des clés GPG « embarquées » officiellement dans Debian -
/usr/local/share/keyrings/
: le choix que nous recommandons, nécessitant d’abord la création de ce répertoire inexistant par défaut.
- édition « historique » du sources.list :
# apt edit-sources nom-projet
On y ajoute l’information correcte relative à l’URL du dépôt du projet, tel que :
deb [signed-by=/usr/local/share/keyrings/nom-projet.fichier.gpg] url-depot-projet nom-suite composantes
Exemple pour le projet « Element » :
deb [signed-by=/usr/local/share/keyrings/element.gpg] https://packages.riot.im/debian/ default main
- je mets à jour mon système puis j’installe le binaire :
# apt update
# apt install nom-binaire-relatif-projet
Voilà pour les informations pratiques nécessaires, ni plus, ni moins.
Retrouvez ci-dessous un script pour faciliter l’installation et des explications complémentaires :
Script de Gestion des clés
Voici une manière pour ajouter la clé GPG de tout projet tiers, qui ne fournit pas correctement ces clés :
- Créer le script suivant ayant pour nom « add-apt-key.sh » :
#!/bin/sh
dir_keys="/usr/local/share/keyrings"
name=""
url=""
read -p "Quel est le nom du projet ? " name
read -p "Où est l'URL de la clé GPG (à ajouter pour l'outil apt) ? " url
# creation du repertoire local de clés
[ ! -d "${dir_keyrs}" ] && mkdir -p "${dir_keys}"
# recupération de la clé du projet
curl -fsSL "${url}" | gpg --dearmor | tee "${dir_keys}/${name}.gpg" > /dev/null
status="$?"
if [ "${status}" -eq 0 ]; then
printf '%s : %s\n' "OK" "La clé GPG pour le projet '${name}' a bien été ajoutée."
else
printf '%s : %s\n' "KO" "Il semble y avoir un soucis pour ajouter la clé GPG du projet '${name}' !"
fi
- lien vers le répertoire personnel
~/bin
:
$ chmod 0700 $HOME/repertoire/add-apt-key.sh
$ ln $HOME/repertoire/add-apt-key.sh $HOME/bin
- appel du script :
# add-apt-key.sh
Il vous demandera le nom du projet, puis l’URL du dépôt du projet et vous confirmera ou non la bonne installation de la clé GPG dans le répertoire adéquat.
- Gestion du fichier sources
Il y a deux manières possibles de gérer le fichier sources nécessaire pour apt. L’une « historique », l’autre à partir du format de contrôle des données RFC822. Essayez d’utiliser en premier le format deb822, et si vraiment impossible, revenez à la version historique ; ne faites pas les deux, ça ne sert à rien.
édition au format deb822
La RFC822 définit le format deb822. Nous ne rentrerons pas ici dans les détails, pour plus d’informations, merci de lire les liens de documentations ci-dessous.
Ce qui semble fonctionner actuellement :
- Création d’un fichier ‹ /etc/apt/sources.list.d/nom-projet.sources › - à ne pas créer avec l’option ‹ edit-sources › d’apt, car il suffixera automatiquement le nom du fichier de l’extension ‹ .list › ; résultat lors de l’utilisation de l’option ‹ update ›, apt ne comprendra pas le formatage et émettra une erreur à ce propos.
Types: deb
URIs: URL-web-du-depôt-du-projet
Suites: version-debian
Architectures: nom-architecture-cible
Components: cible-depôt
Signed-By: /usr/local/share/keyrings/nom-cle.gpg
Explications :
- URIs est l’URL du dépôt du projet.
- Suites est le nom de la version de Debian utilisée ou la valeur du dépôt selon le projet. Par exemple : stable ; dans le cas du projet « Element », c’est default.
- Components est la cible du dépôt, tel main, contrib et/ou non-free.
-
Signed-By devrait normalement contenir la chaîne textuelle correspondante à la clé GPG - mais comme l’a fait remonter @anon70622873, le support en cours est bogué - donc, dans l’immédiat, c’est le chemin absolu vers le fichier de clé GPG précédemment téléchargé et installé dans le répertoire local
/usr/local/share/keyrings/
.
Pour exemples, voici les fichiers sources construits par nos soins pour différents projets :
- anydesk : Anydesk sur bullseye - #5 par PengouinPdt
- Brave (navigateur web) : Apt : ajout correct d'une clé GPG - #46 par PengouinPdt
- element (client matrix) : Apt : ajout correct d'une clé GPG - #5 par PengouinPdt
- GeoGebra : Apt : ajout correct d'une clé GPG - #55 par FranLou
- google chrome, earth : Apt : ajout correct d'une clé GPG - #45 par PengouinPdt
- lutris : Apt : ajout correct d'une clé GPG - #39 par PengouinPdt
- mega : Apt : ajout correct d'une clé GPG - #40 par PengouinPdt
- spotify : Apt : ajout correct d'une clé GPG - #21 par Bruno1
- teamviewer : Apt : ajout correct d'une clé GPG - #42 par PengouinPdt
- Visual Studio Code : Apt : ajout correct d'une clé GPG - #41 par PengouinPdt
Maintenant, il faut passer à l’étape suivante, celle de la màj et de l’installation du binaire. Si l’update échoue, soit vous vérifiez l’écriture du fichier, soit vous le supprimez puis vous passez à l’édition de manière « historique ».
Passons à l’étape suivante :
- update et installation.
# apt update
# apt install nom-binaire-relatif-projet
Voilà !
(normalement l’installation du binaire, tant désiré, devrait être… il ne reste plus qu’à utiliser votre « précieux »).
⇒ Informations supplémentaires :
Il peut parfois être nécessaire d’ajouter la clé GPG par le biais de l’outil gpg, tel que :
# gpg --no-default-keyring --keyring /usr/local/share/keyrings/nom-projet.gpg --keyserver hkps://keys.openpgp.org --recv-keys clé-à-ajouter
L’identifiant de clé « clé-à-ajouter » est généralement fourni dans le message d’erreur que retourne l’outil apt, par exemple, pour le projet Lutris :
W: Une erreur s'est produite lors du contrôle de la signature. Le dépôt n'est pas mis à jour et les fichiers d'index précédents seront utilisés. Erreur de GPG : http://download.opensuse.org/repositories/home:/strycore/Debian_Unstable InRelease : Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 2F7F0DA5FD5B64B9
W: Impossible de récupérer http://download.opensuse.org/repositories/home:/strycore/Debian_Unstable/InRelease Les signatures suivantes n'ont pas pu être vérifiées car la clé publique n'est pas disponible : NO_PUBKEY 2F7F0DA5FD5B64B9
La « clé-à-ajouter » dans ce cas-là est : 2F7F0DA5FD5B64B9
Documentations :