Ich möchte Ansible verwenden, um Python 2.7.10 von der Quelle unter CentOS zu installieren. Diesmal ist es Python, aber wenn Sie es verwenden, können Sie damit andere Bibliotheken installieren.
Folgendes möchte ich tun. Als Installationsziel wird "/ usr / local /" und als temporäres Speicherziel der Quelle "/ var / tmp /" angegeben.
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
Ich installiere auch gcc
, da dies beim Ausführen von configure
zu einem Fehler führen kann. Es wurde installiert, als ich make install
ausführte, aber ich habe einen Fehler erhalten, als ich das installierte Python ausgeführt habe, also habe ich am Ende einen symbolischen Link eingefügt.
Referenz: [Python-Fehlerbehandlung: Fehler beim Laden gemeinsam genutzter Bibliotheken: libpython2.7.so.1.0: Freigegebene Objektdatei kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis](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
Wie oben erwähnt, tritt ein Fehler auf, wenn kein "gcc" vorhanden ist. Deshalb habe ich ihn mit "yum" installiert.
Create tmp directory
Als ich danach "Unarchive Python" ausführte, brauchte ich das Zielverzeichnis, also habe ich es hier im Voraus erstellt.
Download Python
Laden Sie die Python-Quelle herunter. Wenn es bereits vorhanden ist, wird es nicht heruntergeladen.
Unarchive Python
Entpacke tgz. Wenn copy = yes
, bezieht sich dies auf die Datei auf dem Host, auf dem Ansible ausgeführt wird. Dieses Mal setze ich "copy = no", weil ich auf die Datei auf dem Server verweisen möchte. Als ich dies tat, stieß ich auf den Fehler "Keine solche Datei oder kein solches Verzeichnis", obwohl die Datei existieren sollte, also fügte ich "Umgebung" hinzu.
Referenz: Keine solche Datei oder kein solches Verzeichnis in Ansibles Unarchiv
Install Python
Hier verwenden wir einfach command
, um configure
, make
und make install
auszuführen. Zu diesem Zeitpunkt wird "chdir" verwendet, um in das Verzeichnis zu wechseln, in dem sich die Quelle befindet. Ich habe diese Befehle häufig verwendet, daher dachte ich, sie seien die Standardfunktionen von Ansible, aber als ich sie nachschlug, war ich mir nicht sicher. Wenn "create" angegeben ist und "/ usr / local / bin / python" bereits vorhanden ist, wird es übersprungen.
Link Python lib
Ein symbolischer Link wird als Gegenmaßnahme für den eingangs erwähnten Fehler veröffentlicht.
Recommended Posts