Ansible от ppa не установит связанные с 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, по крайней мере?

Я поместил их в Кв. - получают сценарий и это worket, но разве это не должно быть автоматически? Что, если новый ansible пакет в ppa требует большего количества пакетов? Это повредило бы мой dockerfile

0
задан 5 March 2017 в 02:10

3 ответа

Вместо того, чтобы переопределить /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
ответ дан 3 November 2019 в 16:28

Попытайтесь добавить -f опция к apt-get install, который пытается зафиксировать поврежденные зависимости. До выполнения apt-get update можно также хотеть работать apt-get clean для очистки локального способного repo. Они работали на мою сборку Packer, которая использует поставщика Ansible.

Ваш код стал бы:

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?"

1
ответ дан 3 November 2019 в 16:28

Для поддерживаемых в настоящее время версий 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 

Обратите внимание, что если вы используете версию Ubuntu до 18.04 , нет переключателя -u или - update для apt-add-repository , поэтому, если это ваш случай, оставьте переключатель - update в третьей строке кода выше.

Источники:

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

man apt-add-repository

0
ответ дан 23 January 2020 в 16:40

Другие вопросы по тегам:

Похожие вопросы: