不管怎样,我刚刚重新安装了 stretch,问题就解决了。也许我只是做了一些不小心的事情……
本周早些时候(4 月 17 日),我在我的台式电脑上安装了 debian stretch,使用的是 Debian Installer Stretch RC3 版本,可以从这里找到: https://www.debian.org/devel/debian-installer/
系统现已安装到位并运行良好,但有以下警告:当我执行 apt-get update 时,我得到以下输出
Get:1 http://ftp.us.debian.org/debian stretch InRelease [186 kB]
Ign:1 http://ftp.us.debian.org/debian stretch InRelease
Fetched 186 kB in 0s (410 kB/s)
Reading package lists... Done
W: GPG error: http://ftp.us.debian.org/debian stretch InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 8B48AD6246925553 NO_PUBKEY 7638D0442B90D010
W: The repository 'http://ftp.us.debian.org/debian stretch InRelease' is not signed.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
(我的 /etc/apt/sources.list 只包含
deb http://ftp.us.debian.org/debian/ stretch main non-free
deb-src http://ftp.us.debian.org/debian/ stretch main non-free
)
当然,这“只是”一个警告 - 我仍然可以通过 apt-get 进行更新/升级/dist-upgrade;我收到了上述抱怨,但它仍然有效。
当我尝试执行以下操作时,我第一次注意到该问题:
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
我得到输出:
gpg: WARNING: nothing exported
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0
(不管怎样,我尝试以这种方式添加其他签名,但没有成功——同样的错误。我将 wget 的结果保存到文件中,并使用文件名作为参数调用 apt-get key——再次出现同样的错误。)
无论如何,我不记得收到“apt-get update”的警告直到之后执行上述命令尝试安装签名密钥。现在这种情况一直发生。
我搜索并阅读了大量关于此内容的内容;有一段时间,我认为这与以下内容有关reddit-debian-讨论我很确定我曾经收到过 _apt 用户无法读取密钥环的报告。因此,我可能有在 /etc/apt 中更改了文件“trusted.gpg”的权限:
drwxr-xr-x 2 root root 4.0K Apr 17 14:31 apt.conf.d
-rw-r--r-- 1 root root 104 Apr 17 13:04 listchanges.conf
drwxr-xr-x 2 root root 4.0K Apr 1 15:39 preferences.d
-rw-r--r-- 1 root root 142 Apr 19 12:05 sources.list
-rw-r--r-- 1 root root 126 Apr 18 15:44 sources.list~
drwxr-xr-x 2 root root 4.0K Apr 18 15:44 sources.list.d
-rw-r--r-- 1 root root 193 Apr 18 15:44 sources.list.save
-rw------- 1 root root 1.2K Apr 18 14:56 trustdb.gpg
-rw-r--r-- 1 root root 32 Apr 18 11:16 trusted.gpg
drwxr-xr-x 2 root root 4.0K Apr 18 15:17 trusted.gpg.d
(尽管该文件的权限现在与 ./trusted.gpg.d 中文件的权限相匹配,所以我怀疑这是一个问题(?))
另外,FWIW:gpg 适用于用户在这台机器上。
最后的数据点:我有另一台 debian-box——一台笔记本电脑。在那台机器上,我上周刚刚从 jessie 升级到 stretch,而且我不有这个问题——apt-get update 没有报告警告。(不过,我想自从升级到 stretch 以来,我还没有尝试过执行“apt-key add”……)
可以说,这个警告并不是什么大问题,也许可以通过软件升级来解决。但无法使用 apt-key 添加包签名密钥感觉很糟糕。而且:如果我的配置有问题,我应该知道……
谢谢您的帮助/建议!!
答案1
我昨天在 Debian 9.0.0 官方版本(amd64)中遇到了这个问题。在全新安装 Stretch 时发生,并且可重现。
据我所知,如果使用 software-properties-gtk 编辑 /etc/apt/sources.list,第一次执行此操作时,它会创建一个文件 /etc/apt/trusted.gpg,并且该文件已损坏、为空或具有错误的权限。
从那一刻起,该文件的存在似乎阻止了对 /etc/apt/trusted.gpg.d 中的密钥的查询。它似乎还阻止了 apt-key add 的运行,如果 /etc/apt/trusted.gpg 出了问题(文件问题或软件错误),这很正常。
删除 /etc/apt/trusted.gpg 似乎是个解决方法,而且在删除一次之后似乎不会重新创建它(通过进一步使用 software-properties-gtk)。
我花了昨天的大部分时间追踪 NO_PUBKEY 错误,之后我在 debian-user 列表中发布了此信息,该错误似乎是由于 a) /etc/apt/trusted.gpg 文件存在但可以使用 0644 权限访问而引起的。(最初,我看到一条关于用户“_apt”无法读取 /etc/apt/trusted.gpg 的错误,这是因为该文件最初具有 0600 权限。