来自 ppa 的 Ansible 不会安装与 python 相关的软件包

来自 ppa 的 Ansible 不会安装与 python 相关的软件包

当我构建我的dockerfile时,它会执行以下操作:

FROM debian:jessie
...
RUN echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" > /etc/apt/sources.list \
    && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 \
    && apt-get update \
    && apt-get install ansible

我得到:

The following packages have unmet dependencies:
 ansible : Depends: python-jinja2 but it is not installable
           Depends: python but it is not installable
           Depends: python-yaml but it is not installable
           Depends: python-paramiko but it is not installable
           Depends: python-httplib2 but it is not installable
           Depends: python-six but it is not installable
           Depends: python-crypto (>= 2.6) but it is not installable
           Depends: python-setuptools but it is not installable
           Depends: sshpass but it is not installable
           Depends: python-pkg-resources but it is not installable

安装 ansible 的过程中不应该已经安装这些软件包吗?我对此有点菜鸟,但据我所知,一个软件包可以列出其他软件包的依赖项,那么为什么这些软件包没有自动安装?Debian 至少也应该附带 python 吗?

我已将它们放入 apt-get 脚本中,并且它有效,但它不应该是自动的吗?如果 ppa 中的新 ansible 包需要更多包怎么办?这会破坏我的 dockerfile

答案1

您不需要/etc/apt/sources.list使用覆盖文件,而是>可以使用附加文本>>

因此它将类似于下面的内容。

RUN echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" >> /etc/apt/sources.list \
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 \
&& apt-get update \
&& apt-get install -y ansible

答案2

尝试将-f选项添加到apt-get install,以尝试修复损坏的依赖项。在运行之前,apt-get update您可能还想运行apt-get clean以清除本地 apt 存储库。这些对我使用 Ansible 配置程序的 Packer 构建有效。

您的代码将变成:

RUN echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" > /etc/apt/sources.list \
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 \
&& apt-get autoclean \
&& apt-get update \
&& apt-get install -f ansible

如需更多详细信息,我建议这个优秀的答案对于更广泛的问题,“添加 PPA 后,如何解决未满足的依赖关系?”

答案3

对于当前支持的 Ubuntu 版本您可以使用以下方式更新系统不支持来自的包裹这个不受信任的 PPA通过将 ppa:ansible/ansible 添加到系统的软件源中。

deb http://ppa.launchpad.net/ansible/ansible/ubuntu YOUR_UBUNTU_VERSION_HERE main 
deb-src http://ppa.launchpad.net/ansible/ansible/ubuntu YOUR_UBUNTU_VERSION_HERE main

您可以使用以下命令安装 ansible。

$ sudo apt update
$ sudo apt install software-properties-common
$ sudo apt-add-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible 

请注意,如果你使用的是 18.04 之前的 Ubuntu 版本没有-u--update开关,apt-add-repository因此,如果是这种情况,请将--update开关从上面的第 3 行代码中去掉。

资料来源:

https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#installing-ansible-on-ubuntu

man apt-add-repository

相关内容