
Я создаю Ansible Playbook для настройки Ubuntu 18.04.1 VPS и сталкиваюсь с проблемой, из-за которой не могу надежно установить Python.
Поскольку Ubuntu 18.04.1 не поставляется с установленным Python, я вынужден использовать следующую команду apt -y update && apt -y install python
с raw
модулем.
Мне также удалось получить эту ошибку в оболочке, к которой я вручную подключился по ssh.
root@ansible:~# apt -y update && apt -y install python
Hit:1 http://archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://archive.ubuntu.com/ubuntu bionic-security InRelease
Hit:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
17 packages can be upgraded. Run 'apt list --upgradable' to see them.
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
Это виртуальная машина в VirtualBox на хосте Windows.
Я также пробовал использовать sync
between apt update
и apt install
, даже делать что-то подобное while fuser /var/lib/dpkg/lock >/dev/null 2>&1; do sync && sleep 1; done
between update
и install
, но это обычно не получается.
Это система, которая была создана с помощью следующих шагов:https://askubuntu.com/questions/946787/ubuntu-server-installation-with-root-only/1066033#1066033
решение1
Ubuntu 16.04+, iirc, поставляются с Python3 по умолчанию и полностью удалили Python2 из установки по умолчанию; другими словами, функционирующий интерпретатор Python есть, просто он находится не там, где его ищет Ansible.
Вы можете переопределить поведение по умолчанию (ожидание python
команды), используя ansible_python_interpreter
переменную и установив ее в значение, в случае Ubuntu 16.04+, /usr/bin/python3
.
Итак, что-то вроде этого:
ansible_python_interpreter: /usr/bin/python3
Ansible теперь по большей части рассматривает Python3 как гражданина первого класса, так что это довольно безопасное изменение. Я использовал его на нескольких ящиках Ubuntu 18.04, которые я администрирую, без каких-либо проблем.