如何使 apt-get 源验证正常工作?

如何使 apt-get 源验证正常工作?

示例(使用 Debian Wheezy):

sudo apt-get source hello

结果:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Need to get 705 kB of source archives.
Get:1 http://ftp.us.debian.org/debian/ testing/main hello 2.8-3 (dsc) [1287 B]
Get:2 http://ftp.us.debian.org/debian/ testing/main hello 2.8-3 (tar) [697 kB]
Get:3 http://ftp.us.debian.org/debian/ testing/main hello 2.8-3 (diff) [6598 B]                                                               
Fetched 705 kB in 8s (80.6 kB/s)                                                                                                              
gpgv: keyblock resource `/root/.gnupg/trustedkeys.gpg': file open error
gpgv: Signature made Wed Feb 13 10:30:20 2013 UTC using RSA key ID 9F1B8B32
gpgv: Can't check signature: public key not found
dpkg-source: warning: failed to verify signature on ./hello_2.8-3.dsc
dpkg-source: info: extracting hello in hello-2.8
dpkg-source: info: unpacking hello_2.8.orig.tar.gz
dpkg-source: info: unpacking hello_2.8-3.debian.tar.gz

dpkg-dev 和 debian-keyring 包已安装。

我尝试以用户身份和 root 身份运行 apt-get source,并预先以用户身份和 root 身份使用“gpg --recv-keys 9F1B8B32”。但都无法验证下载的源代码。

我怎样才能摆脱这个“dpkg-source:警告:无法验证签名”警告?

答案1

apt-get install debian-keyring

安装所有 Debian 开发人员密钥环。之后会进行检查。

答案2

这是debian-keyring您想要的(.dsc被检查的文件由维护者签名),但安装debian-keyring仍然需要完成一些管道工作以gpg考虑开发人员密钥(自动考虑它们会非常麻烦,这大概就是为什么管道工作不作为安装后的一部分完成的原因)。

如果是一次性的,请.dsc在提取后重新检查:

gpg --keyring /usr/share/keyrings/debian-maintainers.gpg --verify *.dsc

如果你要抓取多个,请添加:

keyring /usr/share/keyrings/debian-maintainers.gpg

到您的~/.gnupg/gpg.conf;从那时起,gpg(和gpgv)将考虑开发人员/维护人员密钥进行签名验证。(如果您比较偏执,您可以使用/usr/share/keyrings/debian-keyring.gpg包括完整开发人员但不包括维护人员的密钥。)

这两种方法都不会使密钥被视为有效,但这可能正是你想要的——如果你使用debian-keyring合理配置的apt-get/aptitude包的签名已经过检查,您可以有理由相信其中的密钥确实属于开发人员/维护人员。

答案3

这里缺少的重要细节是您需要来自 的密钥环sid,而不是来自 的密钥环stable,因为只有 sid 的密钥环包含所有开发人员。请注意/sid下一行中的:

apt-get install debian-keyring/sid

为了获得sid通常需要如下一行/etc/apt/source.list

deb http://http.debian.net/debian/ sid main

(之后别忘记apt-get update。)

但要小心!如果sidsits 在你的sources.list系统中,你的系统往往会违背你的意愿而变形sid。为了防止这种情况,请添加一行/etc/apt/apt.conf如下内容:

APT::Default-Release "stable"; 

(有无数种其他的预防方法sid,这个是我所知道的最简单的方法。)

笔记:

  • 这个解决方案的线索是在http://debian.distrosfaqs.org/debian-user/signature-of-wheezys-linux-source-package/
  • 在我发现这个之前,我偶然发现了数千页告诉你只需从密钥服务器获取丢失的密钥:永远不要做这样愚蠢的事情来验证签名!如果中间人能够向您发送伪造的包裹,那么同样,中间人也能够向您发送伪造的密钥服务器答案。因此,从密钥服务器提取的密钥只是纯粹的骗人的把戏。(而在安全环境中,相信“骗人的把戏”可能是最愚蠢的事情。)

答案4

从“gpgv:keyblock 资源 `/root/.gnupg/trustedkeys.gpg':文件打开错误”行来看,你一定遇到了gpg的错误。最后使用switchapt-get source运行。如果不存在 homedir ( ),则失败。可以使用以下方法补救:。更多详细信息gpg--no-option~/.gnupggpg -k这里

相关内容