我已经创建了自己的 Debian 存储库并遇到了这个问题。
我知道
--ignore-release-gpg
或者
gpg --keyserver pgp.mit.edu --recv-keys xxxxxxxxx
gpg --armor --export xxxxxxxxx | apt-key add -
两个问题:
- 为什么 apt-get 不会自动从在线存储库中导入此公钥?
- 为什么我在其他存储库中看不到此消息?
回答 #1:它是其设计中的一种安全机制。APT 不是人类,也不知道该信任什么或信任谁。只在您信任的人的密钥环中导入密钥。GPG 验证可防止对包内容的中间人攻击,并验证包的完整性与上传到存档/存储库时的状态相同。这样,即使是官方镜像上的管理员也无法在您不注意的情况下篡改文件。另请参阅此问题。
#2:一些密钥是在安装时安装的。Debian 档案和 Debian Developers 的主要密钥都在包中debian-keyring
,并标记为可信任以与 apt 一起使用。
回到您的目标 - 维护您自己的 Debian 软件包存储库而不会出现这些错误。最好的解决方案是签署存档中的所有包,并让您的存储库的用户安装您的公钥。这是它通常的工作方式,例如参见VirtualBox.org如何处理这个问题。
一些随机陷阱:添加新密钥后不要忘记运行apt-get update
(或)。aptitude update
如果您使用 Ubuntu 并构建免费软件,请考虑使用 PPA。Ubuntu 的 PPA(个人包档案)带有简洁的用户友好脚本来安装存储库以及用于验证的 GPG 密钥。( apt-add-repository ppa:my-ppa/myarchive
)
一些网站提到如何通过APT::Get::AllowUnauthenticated yes;
在其配置中设置来禁用 APT 验证。我真的不建议这样做,因为它会影响所有存储库。