[test@test07 ~]$ cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core)
[test@test07 ~]$ uname -a
Linux test07 3.10.0-514.21.1.el7.x86_64 #1 SMP Thu May 25 17:04:51 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[test@test07 ~]$
インストール直後の Python のバージョン
[test@test07 ~]$ python
Python 2.7.5 (default, Nov 6 2016, 00:28:07)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> exit() ← 「exit()」コマンドで python コンソールを抜けられます。
[test@test07 ~]$
# yum list available | grep python3
python34.x86_64 3.4.5-4.el7 epel
~ 省略 ~
python34u.x86_64 3.4.6-1.ius.centos7 ius
~ 省略 ~
python35u.x86_64 3.5.3-1.ius.centos7 ius
~ 省略 ~
python36u.x86_64 3.6.2-1.ius.centos7 ius ← IUS リポジトリでは「3.6.2」が最新バージョンです。
~ 省略 ~
こうして見ると「EPEL」でも「Python 3.4.5」をインストールできますね。
しかし IUS リポジトリでは「Python 3.6.2」をインストールできます。
今回は、この「Python 3.6.2」をインストールします。
yum で Python をインストール
インストールは、「yum list available」コマンドで表示されたパッケージ名を指定してインストールします。
# yum install python36u.x86_64
インストール後の動作確認
Python の動作確認をします。
[root@test07 ~]# python3.6 Python 3.6.2 (default, Jul 18 2017, 22:59:34)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>> exit()
[root@test07 ~]# which python3.6 /bin/python3.6
デフォルトの Python のバージョン確認
念のため、デフォルトの Python のバージョン確認をします。
[root@test07 ~]# python Python 2.7.5 (default, Nov 6 2016, 00:28:07)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> exit()
[root@test07 ~]#
If you want a release build with all stable optimizations active (PGO, etc),
please run ./configure –enable-optimizations
とりあえず、エラーは出力されずに「Makefile」が作成されました。
[test@test07 Python-3.6.2]$ ls -l Makefile
-rw-rw-r– 1 test test 67376 8月 13 11:42 Makefile
続けて make コマンドを実行します。
ディレクトリはそのままで、「make」コマンドだけ実行します。
[test@test07 Python-3.6.2]$ make
~省略~
Python build finished successfully! ← ビルドには成功したようです。 The necessary bits to build these optional modules were not found: ← ここら辺のメッセージが気になるところですが先へ進みます。 _bz2 _sqlite3 _ssl _tkinter readline
To find the necessary bits, look in setup.py in detect_modules() for the module’s name.
The following modules found by detect_modules() in setup.py, have been
built by the Makefile instead, as configured by the Setup files:
atexit pwd time
running build_scripts
creating build/scripts-3.6
copying and adjusting /home/test/Python/Python-3.6.2/Tools/scripts/pydoc3 -> build/scripts-3.6
copying and adjusting /home/test/Python/Python-3.6.2/Tools/scripts/idle3 -> build/scripts-3.6
copying and adjusting /home/test/Python/Python-3.6.2/Tools/scripts/2to3 -> build/scripts-3.6
copying and adjusting /home/test/Python/Python-3.6.2/Tools/scripts/pyvenv -> build/scripts-3.6
changing mode of build/scripts-3.6/pydoc3 from 664 to 775
changing mode of build/scripts-3.6/idle3 from 664 to 775
changing mode of build/scripts-3.6/2to3 from 664 to 775
changing mode of build/scripts-3.6/pyvenv from 664 to 775
renaming build/scripts-3.6/pydoc3 to build/scripts-3.6/pydoc3.6
renaming build/scripts-3.6/idle3 to build/scripts-3.6/idle3.6
renaming build/scripts-3.6/2to3 to build/scripts-3.6/2to3-3.6
renaming build/scripts-3.6/pyvenv to build/scripts-3.6/pyvenv-3.6
/bin/install -c -m 644 ./Tools/gdb/libpython.py python-gdb.py
gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -I. -I./Include -DPy_BUILD_CORE -o Programs/_testembed.o ./Programs/_testembed.c
gcc -pthread -Xlinker -export-dynamic -o Programs/_testembed Programs/_testembed.o libpython3.6m.a -lpthread -ldl -lutil -lm
# Substitution happens here, as the completely-expanded BINDIR
# is not available in configure
sed -e “s,@EXENAME@,/usr/local/bin/python3.6m,” < ./Misc/python-config.in >python-config.py
# Replace makefile compat. variable references with shell script compat. ones; ->
LC_ALL=C sed -e ‘s,\$(\([A-Za-z0-9_]*\)),\$\{\1\},g’ < Misc/python-config.sh >python-config
# On Darwin, always use the python version of the script, the shell
# version doesn’t use the compiler customizations that are provided
# in python (_osx_support.py).
if test `uname -s` = Darwin; then \
cp python-config.py python-config; \
fi
[test@test07 Python-3.6.2]$
「make install」コマンドを実行します。
※ファイルを /usr/local に移動する必要が出てくるので、sudo で実行します。
[test@test07 Python-3.6.2]$ sudo make install
~省略~
running install
running build
running build_ext
INFO: Can’t locate Tcl/Tk libs and/or headers
warning: building with the bundled copy of libffi is deprecated on this platform. It will not be distributed with Python 3.7
[test@test07 Python-3.6.2]$ cd /usr/local/
[test@test07 local]$ ls
bin etc games include lib lib64 libexec sbin share src
[test@test07 local]$ cd bin/
[test@test07 bin]$ ls
2to3 easy_install-3.6 idle3.6 pip3.6 pydoc3.6 python3-config python3.6-config python3.6m-config pyvenv-3.6
2to3-3.6 idle3 pip3 pydoc3 python3 python3.6 python3.6m pyvenv
[test@test07 bin]$ ./python3.6 Python 3.6.2 (default, Aug 13 2017, 11:45:58) ← 「Python 3.6.2」です。
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
>>> exit()
[test@test07 bin]$
デフォルトの Python の確認
念のため、デフォルトの「Python」のバージョンの確認をします。
[test@test07 bin]$ python
Python 2.7.5 (default, Nov 6 2016, 00:28:07)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> exit()
[test@test07 bin]$
yum の動作確認
yum は Python を使用しているため、yum コマンドに影響がないか確認します。
[test@test07 bin]$ yum list
一覧が表示されれば(エラーが出力されなければ)問題ありません。
まとめ
IUS は新しいバージョンのパッケージを提供していますが、Python に関しては最新バージョンを提供していました。
コメント