Ansible do ppa não instalará pacotes relacionados a python

0

Quando eu construo meu dockerfile, o que faz o seguinte:

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

Eu recebo:

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

O processo de instalação do ansible não deveria já instalar esses pacotes? Eu estou meio noob nisso, mas como eu sei, um pacote pode listar dependências para outros pacotes, então por que eles não estão sendo instalados automaticamente? O Debian não deve vir com o python pelo menos?

Eu os coloquei no script apt-get e no workset, mas não deveria ser automático? E se um novo pacote ansible no ppa exigir mais pacotes? Isso quebraria meu dockerfile

    
por Guerlando OCs 05.03.2017 / 10:10

2 respostas

2

Em vez de substituir o arquivo /etc/apt/sources.list usando > , você pode anexar o texto usando >> .

Portanto, será algo semelhante ao seguinte.

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
    
por user1464792 22.05.2017 / 10:24
1

Tente adicionar a opção -f a apt-get install , que tenta corrigir dependências quebradas. Antes de executar apt-get update , você também pode querer executar apt-get clean para limpar o repositório de apt local. Isso funcionou para minha compilação do Packer que usa o provisionador Ansible.

Seu código se tornaria:

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

Para detalhes adicionais, eu recomendo esta excelente resposta à questão mais ampla, "Como resolvo dependências não satisfeitas depois de adicionar PPA? "

    
por thinkmassive 17.04.2017 / 23:58