Je voudrais utiliser Ansible pour installer Python 2.7.10 à partir des sources sur CentOS. Cette fois, c'est Python, mais si vous l'utilisez, vous pouvez l'utiliser pour installer d'autres bibliothèques.
Voici ce que je veux faire. / usr / local /
est spécifié comme destination d'installation, et / var / tmp /
est spécifié comme destination de stockage temporaire de la source.
yum install gcc
wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz -P /var/tmp/
tar xvzf /var/tmp/Python-2.7.10.tgz -C /var/tmp/
cd /var/tmp/Python-2.7.10/
./configure CFLAGS=-fPIC --enable-shared --prefix=/usr/local/
make
make install
ln /usr/local/lib/libpython2.7.so.1.0 /lib64/libpython2.7.so.1.0
J'installe également gcc
car cela peut provoquer une erreur lors de l'exécution de configure
. Il a été installé lorsque j'ai exécuté make install
, mais j'ai eu une erreur lorsque j'ai exécuté le Python installé, donc j'ai mis un lien symbolique à la fin.
Référence: [Traitement des erreurs Python: erreur lors du chargement des bibliothèques partagées: libpython2.7.so.1.0: impossible d'ouvrir le fichier objet partagé: aucun fichier ou répertoire de ce type](http://kenzo0107.hatenablog.com/entry/2015/02/ 17/114506)
playbook
- hosts: all
become: yes
tasks:
- name: Install gcc
yum: name=gcc state=latest
- name: Create tmp directory
file: path=/var/tmp/Python-2.7.10 state=directory
- name: Download Python
get_url: >
url=https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz
dest=/var/tmp/Python-2.7.10.tgz
creates=/usr/local/bin/python
environment:
LANG: C
LC_ALL: C
LC_MESSAGES: C
- name: Unarchive Python
unarchive: src=/var/tmp/Python-2.7.10.tgz dest=/var/tmp/ copy=no
- name: Install Python
command: >
{{ item }}
chdir=/var/tmp/Python-2.7.10/
creates=/usr/local/bin/python
with_items:
- './configure CFLAGS=-fPIC --enable-shared --prefix=/usr/local/'
- make
- make install
- name: Link Python lib
file: src=/usr/local/lib/libpython2.7.so.1.0 dest=/lib64/libpython2.7.so.1.0 state=link
Install gcc
Comme mentionné ci-dessus, s'il n'y a pas de gcc
, une erreur se produira, donc je l'ai installé avec yum
.
Create tmp directory
Quand j'ai exécuté ʻUnarchive Python` après cela, j'avais besoin du répertoire de destination, donc je l'ai créé ici à l'avance.
Download Python
Téléchargez la source Python. S'il existe déjà, il ne sera pas téléchargé.
Unarchive Python
Décompressez tgz. Si copy = yes
, cela fait référence au fichier sur l'hôte exécutant Ansible. Cette fois, j'ai mis copy = no
car je veux faire référence au fichier sur le serveur. Quand j'ai fait cela, j'ai rencontré l'erreur "Aucun fichier ou répertoire de ce type" même si le fichier devait exister, j'ai donc ajouté "environnement".
Référence: Aucun fichier ou répertoire de ce type dans la désarchivage d'Ansible
Install Python
Ici, nous utilisons simplement command
pour exécuter configure
, make
et make install
. À ce moment-là, chdir
est utilisé pour se déplacer vers le répertoire où se trouve la source. J'ai beaucoup utilisé ces commandes, donc je pensais qu'il s'agissait des fonctionnalités par défaut d'Ansible, mais quand je les ai recherchées, je n'étais pas sûr. Si «crée» est spécifié et que «/ usr / local / bin / python» existe déjà, il sera ignoré.
Link Python lib
Un lien symbolique est affiché comme contre-mesure de l'erreur écrite au début.
Recommended Posts