我正在创建一个包,它将自动将一些存储库安装到 LAN 中的所有主机。该包将可从中央存储库访问。
我发现可以将 repo 列表放在“/etc/apt/sources.list.d/*.list”中。现在我需要导入它们的密钥,例如,这个。但是,当我将其放入“/etc/apt/trusted.gpg.d/Opera.gpg”时,apt-get update
会出现大量NO_PUBKEY
错误全部我有的 repos,包括 Opera!
怎么了? :)
答案1
从存储库下载的密钥应该合并到新的 GPG 密钥环中,以便您可以将它们放入“/etc/apt/trusted.gpg.d/*.gpg”,如下所示:
gpg --no-default-keyring --keyring ./Opera.gpg --import Opera.key
sudo cp Opera.gpg /etc/apt/trusted.gpg.d/Opera.gpg
答案2
您实际上可以两全其美:创建一个额外的密钥环/etc/apt/trusted.gpg.d/
并使用它apt-key
,而不是gpg
直接使用。
如果您本地已有密钥文件,例如Opera.key
,则运行以下命令:
sudo apt-key --keyring /etc/apt/trusted.gpg.d/Opera.gpg add Opera.key
当然,您仍然可以按照 MestreLion 所演示的那样直接导入密钥:
wget -q -O - http://deb.opera.com/archive.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/Opera.gpg add -
答案3
此外,您可以使用apt-key
来添加密钥,而不必手动将文件拖放到该路径。假设您将文件保存为Opera.key
:
sudo apt-key add Opera.key
您甚至可以动态下载并导入密钥文件,而不是将其保存到本地文件:
wget -q -O - http://deb.opera.com/archive.key | sudo apt-key add -
Apt-key 管理主文件的内容/etc/apt/trusted.gpg
而不是使用目录,这可能会给您带来方便或负担。
答案4
我认为接受的答案完全是误导性的,或者至少是过时的。当前的 ubuntu 不支持 GPG 密钥箱数据库文件格式作为密钥环片段。
如果你使用该答案,apt 更新将引发警告:W: The key(s) in the keyring /etc/apt/trusted.gpg.d/test.gpg are ignored as the file has an unsupported filetype.
其余答案涉及已弃用的命令apt-key
,该命令在当前的 ubuntu 版本中不再存在。
正确的做法是
# cd into a dir which is 700 for yourself
gpg --no-default-keyring --keyring tmp.keyring.gpg --keyserver keyserver.ubuntu.com --recv-keys <key-id1> <key-id2>
gpg --no-default-keyring --keyring tmp.keyring.gpg --output my-keys.gpg --export
sudo cp /tmp/my-keys.gpg /etc/apt/trusted.gpg.d/
请注意,新的 apt 支持装甲密钥文件,因此如果您已经拥有 .asc 文件,则无需将其作为旧版 ubuntu (<16.04) 进行卸载