示例(使用 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
。)
但要小心!如果sid
sits 在你的sources.list
系统中,你的系统往往会违背你的意愿而变形sid
。为了防止这种情况,请添加一行/etc/apt/apt.conf
如下内容:
APT::Default-Release "stable";
(有无数种其他的预防方法sid
,这个是我所知道的最简单的方法。)
笔记:
- 这个解决方案的线索是在http://debian.distrosfaqs.org/debian-user/signature-of-wheezys-linux-source-package/
- 在我发现这个之前,我偶然发现了数千页告诉你只需从密钥服务器获取丢失的密钥:永远不要做这样愚蠢的事情来验证签名!如果中间人能够向您发送伪造的包裹,那么同样,中间人也能够向您发送伪造的密钥服务器答案。因此,从密钥服务器提取的密钥只是纯粹的骗人的把戏。(而在安全环境中,相信“骗人的把戏”可能是最愚蠢的事情。)