■目的
インターネットから隔離された環境に存在するサーバに対して、Python3系をインストールしたい。
■余談
NATゲートウェイを使って外と通信した方が簡単/早いけど、そういう環境も許されていないようなところもあると思うので・・・
■余談
NATゲートウェイを使って外と通信した方が簡単/早いけど、そういう環境も許されていないようなところもあると思うので・・・
RHEL7.6(ami-00b95502a4d51a07e)
■作業前のPython情報
# python --version
Python 2.7.5
■手順
【zlibパッケージ】
・zlib-devel-1.2.7-18.el7.x86_64.rpm
【libffi-devパッケージ】
・libffi-devel-3.0.13-18.el7.x86_64.rpm
1.ローカルPCから下記URLにアクセスし、Python3系のtgzファイルを取得
https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
※Pythonのバージョンは好きなものを選ぶ。上記では3.7.3を選択した。
2.下記RPMファイルを取得し保存しておく。
※RPMファイルはRHNから取得可能なため、そこから入手。
※今回は、Python3.7.3をインストールするためのパッケージを記載
【gcc関連パッケージ】
・cpp-4.8.5-39.el7.x86_64.rpm
・gcc-4.8.5-39.el7.x86_64.rpm
・glibc-2.17-292.el7.x86_64.rpm
・glibc-common-2.17-292.el7.x86_64.rpm
・glibc-devel-2.17-292.el7.x86_64.rpm
・glibc-headers-2.17-292.el7.x86_64.rpm
・kernel-headers-3.10.0-1062.9.1.el7.x86_64.rpm
・libgcc-4.8.5-39.el7.x86_64.rpm
・libgomp-4.8.5-39.el7.x86_64.rpm
・libmpc-1.0.1-3.el7.x86_64.rpm
・mpfr-3.1.1-4.el7.x86_64.rpm
https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz
※Pythonのバージョンは好きなものを選ぶ。上記では3.7.3を選択した。
2.下記RPMファイルを取得し保存しておく。
※RPMファイルはRHNから取得可能なため、そこから入手。
※今回は、Python3.7.3をインストールするためのパッケージを記載
【gcc関連パッケージ】
・cpp-4.8.5-39.el7.x86_64.rpm
・gcc-4.8.5-39.el7.x86_64.rpm
・glibc-2.17-292.el7.x86_64.rpm
・glibc-common-2.17-292.el7.x86_64.rpm
・glibc-devel-2.17-292.el7.x86_64.rpm
・glibc-headers-2.17-292.el7.x86_64.rpm
・kernel-headers-3.10.0-1062.9.1.el7.x86_64.rpm
・libgcc-4.8.5-39.el7.x86_64.rpm
・libgomp-4.8.5-39.el7.x86_64.rpm
・libmpc-1.0.1-3.el7.x86_64.rpm
・mpfr-3.1.1-4.el7.x86_64.rpm
【zlibパッケージ】
・zlib-devel-1.2.7-18.el7.x86_64.rpm
【libffi-devパッケージ】
・libffi-devel-3.0.13-18.el7.x86_64.rpm
3.対象サーバに上記手順2のファイルを転送(SCP/FTP等。手段問わず。)
ここでは転送先ディレクトリを以下のようにした。
Python3.7.3.tgz → /usr/local/src/ に格納
gcc関連各種RPM → /var/tmp/gcc/ に格納
zlibで取得したRPM → /var/tmp/zlib/ に格納
libffi-develで取得したRPM →/var/tmp/libffi-devel/ に格納
ここでは転送先ディレクトリを以下のようにした。
Python3.7.3.tgz → /usr/local/src/ に格納
gcc関連各種RPM → /var/tmp/gcc/ に格納
zlibで取得したRPM → /var/tmp/zlib/ に格納
libffi-develで取得したRPM →/var/tmp/libffi-devel/ に格納
4.対象サーバにログインし、rootユーザにスイッチ
5.以下コマンドを実行し、gcc、zlib、libffi-develをインストール
【gccインストール】
# cd /var/tmp/gcc;pwd
# rpm -Uvh cpp-4.8.5-39.el7.x86_64.rpm gcc-4.8.5-39.el7.x86_64.rpm glibc-2.17-292.el7.x86_64.rpm glibc-common-2.17-292.el7.x86_64.rpm glibc-devel-2.17-292.el7.x86_64.rpm glibc-headers-2.17-292.el7.x86_64.rpm kernel-headers-3.10.0-1062.9.1.el7.x86_64.rpm libgcc-4.8.5-39.el7.x86_64.rpm libgomp-4.8.5-39.el7.x86_64.rpm libmpc-1.0.1-3.el7.x86_64.rpm mpfr-3.1.1-4.el7.x86_64.rpm
【zlibインストール】
# cd /var/tmp/zlib;pwd
# rpm -Uvh zlib-devel-1.2.7-18.el7.x86_64.rpm
【libffi-develインストール】
# cd /var/tmp/libffi-devel;pwd
# rpm -Uvh libffi-devel-3.0.13-18.el7.x86_64.rpm
【おまけ:opensslのアップグレード】
※実施した方がpipコマンド使う際に悩まなくて済む
・openssl-1.0.2k-19.el7.x86_64.rpm
・openssl-devel-1.0.2k-19.el7.x86_64.rpm
# rpm -Uvh openssl-1.0.2k-19.el7.x86_64.rpm openssl-devel-1.0.2k-19.el7.x86_64.rpm
7.以下コマンドを実行し、Python3.7.3をインストール
# cd /usr/loca/src;pwd
# tar xvzf Python-3.7.3.tgz
# cd Python-3.7.3;pwd
# ./configure --prefix=/usr/local/python ※インストール先を/usr/local/pythonとした。
→「creating Makefile」と表示されていればOK
# make
→ 3分程度かかるので少し待つ
# make install
→ 3分程度かかるので少し待つ。「Successfully installed pip-19.0.3 setuptools-40.8.0」が出力されていればOK
8.以下コマンドを実行し、Python3.7.3がインストールされたことを確認
# cd /usr/local/python/bin;pwd
# ./python3 --version
Python 3.7.3 ※Python3.7.3が出力されていればOK
# ./pip3 --version
pip 19.0.3 from /usr/local/python/lib/python3.7/site-packages/pip (python 3.7) ※Pythonをインストールすると自動的にpipもインストールされるため、確認
9.このままだとPython3.7.3へのパスが通っていないため、環境変数PATHを変更
# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
→ /usr/local/python/binが含まれていないことが確認できる
# which python
/bin/python
# python --version
Python 2.7.5
# vi /root/.bash_profile
作業前: PATH=$PATH:$HOME/bin
作業後: PATH=$PATH:$HOME/bin:/usr/local/python/bin ※赤字部分を追記
# source .bash_profile
# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin:/usr/local/python/bin ※正常に追加されていることを確認できた
# python3 --version
Python 3.7.3 ※パスが通っていることを確認できた
# pip3 --version
pip 19.0.3 from /usr/local/python/lib/python3.7/site-packages/pip (python 3.7) ※パスが通っていることを確認できた