我正在尝试获取公钥并将其添加到/etc/apt/trusted.gpg.d/
,但是遇到了不兼容问题。
我跑:
gpg --no-default-keyring --keyring /etc/apt/trusted.gpg.d/example.gpg --import file.asc
哪个有效。
但是当我使用apt-key list
时,它说密钥不兼容。
查看文件类型,我的example.gpg
是GPG keybox database version 1
型,而其他 apt 键是GPG key public ring
型。
如何让gpg
生成GPG key public ring
而不是keybox
?
我知道这很旧,但由于我花了一些时间寻找解决方案,我将分享它。
当涉及到自动化并且似乎没有办法使其使用旧的密钥环 v4 格式时,GnuPG 一直是一个痛苦。 但是,可以通过重新导出密钥来完成。这里有一个丑陋的单行代码,以 MariaDB 存储库为例:
# cd /etc/apt/trusted.gpg.d/ && wget -q -O - https://mariadb.org/mariadb_release_signing_key.asc |
gpg --no-default-keyring --keyring=$(pwd)/mariadb.gpg --batch --import - &&
gpg --no-default-keyring --keyring=$(pwd)/mariadb.gpg --batch --output $(pwd)/mariadb.gpg~ --export --yes &&
mv $(pwd)/mariadb.gpg~ $(pwd)/mariadb.gpg; chmod 644 $(pwd)/mariadb.gpg
这可以通过apt-key
及其--keyring
选项(在Debian Buster 10.7上测试(更容易完成。
$ wget -q -O - https://mariadb.org/mariadb_release_signing_key.asc |
sudo apt-key --keyring /etc/apt/trusted.gpg.d/mariadb.gpg add -
如果您查看apt-key
脚本,您会发现类似于上面的单行代码(但可能更健壮(。 请注意,如果您使用后缀.asc
而不是对受信任文件使用.gpg
,apt-key
将抱怨并失败。这似乎是一个错误,可以通过文件上的先前touch
来避免。
我最近也偶然发现了这个问题,在深入研究源代码后,我找到了几乎完美的解决方案。
您可以只用前缀指定密钥环格式,因此gnupg-ring:
或gnupg-kbx:
。在您的情况下,命令将是:
gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/example.gpg --import file.asc