我有一个运行 Debian 映像的Sipeed Lichee RV,但由于缺少密钥,我无法安装软件。
我已按照包身份验证说明进行操作,但收到此错误:
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
如果无法导入 gpg 密钥,可以
debian-ports-archive-keyring
手动安装。或使用:
正如debian 端口网页中提到的那样。
与其尝试查看 GPG 密钥是如何被错误处理的,还考虑到using
apt-key
已被弃用并可能很快消失,另一种方法还需要一个单独的运行 Debian 系统(任何架构的,因为该软件包没有架构,并且至少是稳定的)释放)可以使用。我宁愿安装为存储库提供身份验证方法的包:debian-ports-archive-keyring
而不必知道它是如何实现的或将来可能会改变。为了引导信任源并避免鸡与蛋的信任问题,可以要求其他 Debian 系统提供有效软件包的信息。因此,下面的命令应该在另一个正确验证其存储库源的 Debian 系统上运行(不需要是 root,但应该是
apt update
最近执行的 root):这提供了检索包的位置,而不是尝试下载和安装它,并且沿着这个大小和校验和验证这是正确的包。它将通过验证
..._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
在此过程中可能会升级。