我使用ansible连接服务器。但由于python的旧版本,我得到某些pip包的错误。如何使用ansible安装特定版本的python(2.7.10
)。
服务器上的当前python版本是2.7.6
目前我手动编译并安装了python版本,但更愿意通过ansible来实现。
答案 0 :(得分:2)
首先要考虑的是,您可能不想要替换或升级Python的系统版本。这是因为它被系统本身用于包管理之类的东西,因此替换它可能会导致其他重要的事情破裂。
安装其他人制作的额外Python副本
要安装额外版本的Python,最简单的选择是使用ppa,例如https://launchpad.net/~fkrull/+archive/ubuntu/deadsnakes-python2.7,以便其他人完成将Python转换为包的工作。< / p>
可以使用下面的指令在Ansible的apt repository module中添加PPA,然后允许您以正常的安全方式从中安装包:
apt_repository: repo='ppa:fkrull/deadsnakes-python2.7'
自行构建软件包
如果没有ppa
具有您需要的Python版本,那么您可能需要自己构建一个.deb
包。最简单的方法是使用像checkinstall这样的工具。还有fpm,它可以使用许多不同的来源,并使用deb
,rpm
等等。它也可以使用只有pip install
的Python模块,并将它变成一个系统包,这非常有用。
获得deb
个套餐后,您可以使用Ansible的apt module
apt: deb=/tmp/mypackage.deb
答案 1 :(得分:2)
除了@Simon Fraser的回答之外,我在Ansible中使用以下手册来准备具有某些特定Python 3版本的服务器:
# python_version is a given variable, eg. `3.5`
- name: Check if python is already latest
command: python3 --version
register: python_version_result
failed_when: "{{ python_version_result.stdout | replace('Python ', '') | version_compare(python_version, '>=') }}"
- name: Install prerequisites
apt: name=python-software-properties state=present
become: true
- name: Add deadsnakes repo
apt_repository: repo="ppa:deadsnakes/ppa"
become: true
- name: Install python
apt: name="python{{ python_version }}-dev" state=present
become: true
我也有上述角色,如果您有兴趣,可以称为ansible-python-latest(github link)。