几个月后,我尝试更新生产服务器。在更新 apt 缓存时,我收到以下消息。
sudo apt update
Hit:1 http://tw.archive.ubuntu.com/ubuntu xenial InRelease
Hit:2 http://tw.archive.ubuntu.com/ubuntu xenial-updates InRelease
Hit:3 http://tw.archive.ubuntu.com/ubuntu xenial-backports InRelease
Get:4 http://security.ubuntu.com/ubuntu xenial-security InRelease [102 kB]
Ign:5 http://download.owncloud.org/download/repositories/stable/Ubuntu_16.04 InRelease
Hit:6 http://download.owncloud.org/download/repositories/stable/Ubuntu_16.04 Release
Get:7 http://download.owncloud.org/download/repositories/stable/Ubuntu_16.04 Release.gpg [481 B]
Ign:7 http://download.owncloud.org/download/repositories/stable/Ubuntu_16.04 Release.gpg
Reading package lists... Done
N: Ignoring file '50unattended-upgrades.ucf-old' in directory '/etc/apt/apt.conf.d/' as it has an invalid filename extension
W: GPG error: http://download.owncloud.org/download/repositories/stable/Ubuntu_16.04 Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 47AE7F72479BC94B
E: The repository 'http://download.owncloud.org/download/repositories/stable/Ubuntu_16.04 Release' 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.
我发现无法验证其中一个软件包ownloud
。我想暂时跳过更新此软件包,然后继续更新其他软件包。
问题:
- 我是否应该继续
sudo apt upgrade
升级所有其他版本? - 在以下情况下,如何解决无法验证软件包公钥的问题:
(我) 我信任该软件包并且想要升级吗?
(ii) 我不想升级这个包? (不过我以后会处理这个问题)。
答案1
好的,首先,特别是在生产服务器上,您必须只拥有真正需要的源列表。其他一切都必须删除。然后,您拥有的每个源列表都应提供trusted
软件包,检查方法很简单 - 每个提供的软件包都由提供它的人签名。您的系统有可以验证软件包签名的密钥。可以使用 查看这些密钥apt-key list
。您缺少 的密钥http://download.owncloud.org/download/repositories/stable/Ubuntu_16.04
。我看到Owncloud
的密钥几个月前已经过期,他们发布了一个新的。您可以从 获得它http://download.owncloud.org/download/repositories/stable/Ubuntu_16.04/Release.key
。下载它wget ...
并使用 导入它apt-key add <filename>
。运行apt-get update
以刷新缓存。
接下来 - 您要问如何屏蔽软件包以防止其被更新。这可以通过 来完成sudo apt-mark hold package_name
。希望这对您有所帮助。