LoginSignup
0
2

More than 5 years have passed since last update.

PythonをソースからインストールしてAnsibleを導入

Last updated at Posted at 2018-03-17

Amazon Linuxにインストールされているpython2.7を使用してAnsibleをオフラインインストールする手順を掲載しましたが、これでうまくいかないケースに遭遇したので、ソースからコンパイルする手順を備忘録として、Python2.7系とPython3.6系それぞれ残しておきます。
いろいろ稀、というか残念なケースかと思いますが。。。

前提環境

  • Linux/Unix系OS
  • コンパイラ系(各環境に適したものをyum install "gcc*"等で導入)
  • zlib系(各環境に適したものをyum install "zlib*等で導入)

ソースからコンパイルするので当然gcc系がいります。zlibはpipの前提です(ないとコンパイル時にエラー)。メインのパッケージだけでなく、"-devel"系も要ります。rpm -qa | grep -e zlib -e gccあたりで確認した上で、必要に応じて導入したところからスタート。

共通で必要なもの

  • OpenSSL(openssl-1.1.0g.tar.gz)
  • Python(Python-2.7.14.tgz, Python-3.6.4.tgz)

()内は今回ダウンロードしたファイル

インストール手順

1. OpenSSLのインストール

tar xzf openssl-1.1.0g.tar.gz
cd openssl-1.1.0g
./config
make
make install
echo 'export LD_LIBRARY_PATH=/usr/local/lib64' >> /etc/profile
. /etc/profile

まずはOpenSSLをconfigしてmakeしてmake installします。pipのコンパイルや実行時に"libssl.so.1.1"が必要になるので、LD_LIBRARY_PATHを通しておきます。

2. Pythonのインストール

tar xzf Python-x.x.xx.tgz
cd Python-x.x.xx
./configure --prefix=/usr/local/pythonXX
vi ./Modules/Setup

ここでさっきインストールしたOpenSSLの設定を入れます。具体的には以下行のコメントアウトを外して有効にします。

./Modules/Setup
SSL=/usr/local/ssl
 _ssl _ssl.c \
        -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
        -L$(SSL)/lib -lssl -lcrypto
make
make install

ここまでは2.7と3.6とで同じです。2.7にはmakeしてもsetuptoolsとpipのモジュールが入らないようなので、あとから個別にインストールします(3.6はmakeで一緒にインストールされました)。

2.7系のみ
unzip setuptools-38.5.2.zip
cd setuptools-38.5.2
/usr/local/bin/python27/bin/python setup.py install
cd ..
tar xzf pip-9.0.1.tar.gz
cd pip-9.0.1
/usr/local/bin/python27/bin/python setup.py install

3. Ansible(winrm)インストール

あとはAnsibleをインストールするだけです。必要なモジュールファイル(後にリスト)を格納したディレクトリを"-f"で指定し、"--no-index"でpypi.python.orgを見にいかないようにします(直接インターネット接続できない前提なので)。

Ansible/pywinrm
/usr/local/bin/pythonXX/bin/pip install -f ./ --no-index ansible-2.4.3.0.tar.gz
/usr/local/bin/pythonXX/bin/pip install -f ./ --no-index pywinrm-0.3.0-py2.py3-none-any.whl

必要なもの(今回使ったもの)

2.7系

  • setuptools-38.5.2.zip
  • pip-9.0.1.tar.gz
  • Jinja2-2.10-py2.py3-none-any.whl
  • MarkupSafe-1.0.tar.gz
  • PyNaCl-1.2.1-cp27-cp27m-manylinux1_x86_64.whl
  • PyYAML-3.12.tar.gz
  • ansible-2.4.3.0.tar.gz
  • asn1crypto-0.24.0-py2.py3-none-any.whl
  • bcrypt-3.1.4-cp27-cp27m-manylinux1_x86_64.whl
  • certifi-2018.1.18-py2.py3-none-any.whl
  • cffi-1.11.5-cp27-cp27m-manylinux1_x86_64.whl
  • chardet-3.0.4-py2.py3-none-any.whl
  • cryptography-2.1.4-cp27-cp27m-manylinux1_x86_64.whl
  • enum34-1.1.6-py2-none-any.whl
  • idna-2.6-py2.py3-none-any.whl
  • ipaddress-1.0.19.tar.gz
  • ntlm_auth-1.1.0-py2.py3-none-any.whl
  • paramiko-2.4.1-py2.py3-none-any.whl
  • pyasn1-0.4.2-py2.py3-none-any.whl
  • pycparser-2.18.tar.gz
  • pywinrm-0.3.0-py2.py3-none-any.whl
  • requests-2.18.4-py2.py3-none-any.whl
  • requests_ntlm-1.1.0-py2.py3-none-any.whl
  • setuptools-38.5.2-py2.py3-none-any.whl
  • six-1.11.0-py2.py3-none-any.whl
  • urllib3-1.22-py2.py3-none-any.whl
  • xmltodict-0.11.0-py2.py3-none-any.whl

3.6系

  • Jinja2-2.10-py2.py3-none-any.whl
  • MarkupSafe-1.0.tar.gz
  • PyNaCl-1.2.1-cp36-cp36m-manylinux1_x86_64.whl
  • PyYAML-3.12.tar.gz
  • ansible-2.4.3.0.tar.gz
  • asn1crypto-0.24.0-py2.py3-none-any.whl
  • bcrypt-3.1.4-cp36-cp36m-manylinux1_x86_64.whl
  • certifi-2018.1.18-py2.py3-none-any.whl
  • cffi-1.11.5-cp36-cp36m-manylinux1_x86_64.whl
  • chardet-3.0.4-py2.py3-none-any.whl
  • cryptography-2.1.4-cp36-cp36m-manylinux1_x86_64.whl
  • idna-2.6-py2.py3-none-any.whl
  • ntlm_auth-1.1.0-py2.py3-none-any.whl
  • paramiko-2.4.1-py2.py3-none-any.whl
  • pyasn1-0.4.2-py2.py3-none-any.whl
  • pycparser-2.18.tar.gz
  • pywinrm-0.3.0-py2.py3-none-any.whl
  • requests-2.18.4-py2.py3-none-any.whl
  • requests_ntlm-1.1.0-py2.py3-none-any.whl
  • setuptools-38.5.2-py2.py3-none-any.whl
  • six-1.11.0-py2.py3-none-any.whl
  • urllib3-1.22-py2.py3-none-any.whl
  • xmltodict-0.11.0-py2.py3-none-any.whl

以上、インターネットに繋がらないなら、いっそソースからコンパイルしていったほうが手っ取り早いこともある、という教訓を得た今日この頃でした。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2