我有一个西贝德荔枝房车运行 Debian 映像,但由于缺少密钥而无法安装软件。
我已遵循包裹认证说明但我收到此错误:
root@sipeed:/etc/apt# gpg --keyserver hkps://keys.openpgp.org --recv-keys 0xE852514F5DF312F6
gpg: key E852514F5DF312F6: new key but contains no user ID - skipped
gpg: Total number processed: 1
gpg: w/o user IDs: 1
我的sources.list
文件包含:
deb http://ftp.ports.debian.org/debian-ports/ sid main
命令apt update
返回
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY E852514F5DF312F6
答案1
如果无法导入 gpg 密钥,可以debian-ports-archive-keyring
手动安装。
wget http://ftp.us.debian.org/debian/pool/main/d/debian-ports-archive-keyring/debian-ports-archive-keyring_2022.02.15_all.deb
sudo dpkg -i debian-ports-archive-keyring_2022.02.15_all.deb
或者使用:
wget -O - https://www.ports.debian.org/archive_2022.key |sudo apt-key add -
正如在Debian 端口网页。
答案2
包认证
如果你想 apt 验证下载的包,你可以 安装debian-ports-archive-keyring包裹或者手动将 Debian ports 存档密钥导入到 apt [...]
而不是尝试查看 GPG 密钥是如何被错误处理的并考虑到使用apt-key
已被弃用并且可能很快就会消失,另一种方法还需要一个单独运行的 Debian 系统(任何体系结构,因为该软件包没有体系结构,并且至少稳定的释放)可以使用。我宁愿安装为存储库提供身份验证方法的包:debian-ports-archive-keyring
无需知道它是如何具体实施或将来可能发生变化的。
为了引导信任源并避免先有鸡还是先有蛋的信任问题,可以要求其他 Debian 系统提供有效软件包的信息。因此,下面的命令应该在正确验证其存储库源的其他 Debian 系统上运行(不需要是 root,但 root 应该apt update
最近执行过):
$ apt-get --print-uris --reinstall install debian-ports-archive-keyring
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
debian-ports-archive-keyring
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 29.7 kB of archives.
After this operation, 52.2 kB of additional disk space will be used.
'http://deb.debian.org/debian/pool/main/d/debian-ports-archive-keyring/debian-ports-archive-keyring_2022.02.15%7edeb11u1_all.deb' debian-ports-archive-keyring_2022.02.15~deb11u1_all.deb 29692 MD5Sum:698ade2c82f6319d63a491231c4f0417
这提供了检索包的位置,而不是尝试下载和安装它,并且还提供了大小和校验和,以验证这是正确的包。它将通过验证..._bullseye_InRelease
(或其他版本而不是牛眼)文件的 GPG 签名来自行验证此信息,该签名涵盖了文件的有效性..._main_binary-XXX_Packages
(XXX 是其他 Debian 系统的架构,这对于软件包来说并不重要)没有架构)提供目标包的信息。这两个文件都存在于/var/lib/apt/lists/
.
这允许通过任何方式和在任何地方(通过稍微改变 URL)下载包debian-ports-archive-keyring_2022.02.15~deb11u1_all.deb
,然后在这种情况下验证其大小和校验和md5sum
。
下载并验证后,可以使用此软件包将其安装在目标系统上dpkg -i ...
(它不依赖任何东西,这可以方便地避免必须为每个依赖项递归地执行此方法,如果存在具有架构的软件包,这将更加困难),然后系统像往常一样升级。debian-ports-archive-keyring
可能会在此过程中升级。