当前位置: 首页>>技术教程>>正文


apt – 从未签名的存储库强制更新

, ,

问题描述

我在Ubuntu 16.04中使用来自Debian多媒体的未签名存储库:

deb http://www.deb-multimedia.org jessie main

要安装deb-multimedia-keyring,我正在运行:

apt-get update && apt-get install deb-multimedia-keyring -y

这给出了一个错误:

W: GPG error: http://www.deb-multimedia.org jessie InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5C808C2B65558117
E: The repository 'http://www.deb-multimedia.org jessie InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

最佳答案

您可以使用以下选项绕过一些重要的防护措施:

--allow-unauthenticated

从apt-get的手册页中:

--allow-unauthenticated
    Ignore if packages can't be authenticated and don't prompt about
    it. This can be useful while working with local repositories, but
    is a huge security risk if data authenticity isn't ensured in
    another way by the user itself. The usage of the Trusted option for
    sources.list(5) entries should usually be preferred over this
    global override. Configuration Item:
    APT::Get::AllowUnauthenticated.

但是要更广泛地使用此选项时要谨慎一点,安全措施已经到位,可以保护您的计算机而不限制您的自由…

次佳答案

您可以在sources.list(位于/etc/apt/sources.list)中设置选项:

deb [trusted=yes] http://www.deb-multimedia.org jessie main

可信选项是关闭GPG检查的选项。有关详细信息,请参见man 5 sources.list

您可以使用vim(或您喜欢的任何一种)或任何非终端编辑器(如gedit)在终端中编辑文件。

第三种答案

另一个通用的解决方案是

sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 5C808C2B65558117

注意:我没有使用此存储库测试该解决方案,但是我使用Skype存储库进行了测试,并且效果很好。

针对您的情况的另一种解决方案是安装密钥

wget http://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2012.05.05_all.deb -O deb-multimedia-keyring.deb
sudo dpkg -i multimedia-keyring_all.deb

如完整介绍Here中所述

第四种答案

如果您试图从存储库中获取软件包,在存储库中密钥被打包并包含在存储库中,而没有其他地方,那么使用dpkg下载和安装密钥/密钥包可能会很烦人,而且这样做非常困难。以易于编写和重复的方式。

如果可以从密钥服务器安装密钥(如在另一个答案中使用apt-key adv的建议),或者可以通过https从受信任的源下载密钥并使用apt-key(例如wget https://trusted.key.site/my-trusted-key.gpg | sudo apt-key add -)安装,则不建议使用以下脚本,但是如果不这样做,则不建议使用以下脚本。没有其他方法,您可以使用此方法。

echo "deb http://your.repo.domain/repository/ $(lsb_release -c -s) universe" | sudo tee /etc/apt/sources.list.d/your-repo-name.list

sudo apt -o Acquire::AllowInsecureRepositories=true \
-o Acquire::AllowDowngradeToInsecureRepositories=true \
update

## if the 'apt update' above fails it is likely due to previously
## having the GPG key and repository on the system, you can clean
## out the old lists with `sudo rm /var/lib/apt/lists/your.repo.domain*`

apt-get -o APT::Get::AllowUnauthenticated=true install repo-keyring-pkgname

## If you ever run `sudo apt-key del your-repos-keyID`
## you may have to `sudo apt remove --purge repo-keyring-pkgname`
## Update should run without the GPG warnings now that the key is installed

apt-get update
apt-get install somepkg-from-repo

我最初把它们放在一起是因为i3在他们的sur5r存储库中是这样做的,但是后来我发现他们的密钥在keyserver.ubuntu.com列表中,因此我可以使用sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E3CA1A89941C42E6来避免所有额外的软件包麻烦。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11390.html,未经允许,请勿转载。