我正在使用Salt(SaltStack)在Ubuntu 18.04中安装软件包。例如,我想安装一个formula for docker。当我应用docker
状态时,由于无法对公式中使用的软件包存储库进行签名,导致出现无法安装软件包的错误。
ID: docker package
Function: pkg.installed
Name: docker-engine
Result: False
Comment: An error was encountered while installing package(s): E: Failed to fetch https://apt.dockerproject.org/repo/dists/ubuntu-bionic/InRelease 403 Forbidden [IP: 13.33.98.216 443]
E: The repository 'https://apt.dockerproject.org/repo ubuntu-bionic InRelease' is not signed.
当我使用另一个公式时,也会发生同样的事情。
我发现,如果要通过命令行手动安装软件包,则可以使用--allow-unauthenticated
选项。
但是使用盐和盐配方时解决此问题的方法是什么?如何从未签名的存储库安装软件包?
答案 0 :(得分:0)
在任何情况下,禁用程序包验证都是一个非常糟糕的主意。 Docker存储库完全符合Ubuntu软件包签名标准,并发布了GPG密钥进行验证。可以手动将其添加到系统中:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
但这不是这里的主要问题-这是您所指的Salt规则已过时并且设置了错误的Docker repo URL-在最近的安装脚本中,他们已将其从https://apt.dockerproject.org/repo更改为{{ 3}},虽然旧的镜像似乎可以正常工作,但是新版本的签名文件似乎在那里不可用,这很容易造成混淆。
因此使用Ansible(对不起,我不知道Salt):
- apt_key:
url: https://download.docker.com/linux/ubuntu/gpg
- apt_repository:
repo: 'deb https://download.docker.com/linux/ubuntu/ bionic stable'
- apt: name=docker-ce
答案 1 :(得分:-1)
您可以使用skip_verify
来避免进行GPG验证检查(例如--allow-unauthenticated
或--force-bad-verify
)
httpd:
pkg.installed:
- fromrepo: mycustomrepo
- skip_verify: True