タグ: python

Python3.7.3 インストール

サイトからTGZをダウンロードして入れてみます。
yumのほうが管理しやすいけど、この方法に慣れてもらうのも一興かと。

もうね。
基本はPythonJapanさまの 「CentOS 環境のPython」 に書いてあるとおり!

https://www.python.org/downloads/
に行って、好きなリリースバージョンを選びます。
下の方にある「Files」から「Gzipped source tarball」で好きなところにダウンロードする。

ダウンロードしたもの(今回は3.7.3)を以下の要領で解凍します。

tar -zxvf Python-3.7.3.tgz

解凍できたら中に入って「configure → make → make install」をかける。
「–enable-optimizations」をつけると、configure途中でインストール先でのテストを実行して更に最適化してくれるらしい。
一説には1割2割は早くなるとか。(Pythonインストール時の最適化
ただ項目が多いので結構時間がかかる。

cd Python-3.7.3/
./configure --enable-optimizations --enable-shared
make
make install

configure では素直だったのに make install の途中で

ModuleNotFoundError: No module named '_ctypes'

とか言われたりします。
その時はあわてず

yum install libffi-devel

と入力してあげてください。
その後はもう一度 configure からやり直しです。

晴れて make install まで完了したら

sh -c "echo '/usr/local/lib' > /etc/ld.so.conf.d/custom_python3.conf"

を謎の呪文のごとく入れて完了~

喜び勇んで

python

と入力すると

Python 2.7.5 (default, Oct 30 2018, 23:45:53)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

と、CentOSでデフォルトで入っているPython2が反応してくれます。

イラッとしながら /usr/bin/ 配下を覗くと

lrwxrwxrwx  1 root root           7  1月 21 17:32 python -> python2
lrwxrwxrwx  1 root root           9  1月 21 17:32 python2 -> python2.7
-rwxr-xr-x  1 root root        7216 10月 31 08:46 python2.7

先住の方がいらっしゃるので仕方がありません。

$ which python3.7
/usr/local/bin/python3.7
$ sudo ln -s /usr/local/bin/python3.7 /usr/bin/python3

として python3 だけでも3系で反応してほしいと願います。

python3
python3: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory

アレレ~?
いちおう他にも足りないものがないか確認しておきます。

$ ldd python3.7
        linux-vdso.so.1 =>  (0x00007ffd21df3000)
        libpython3.7m.so.1.0 => not found
        libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f12d825f000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f12d8043000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f12d7e3f000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00007f12d7c3c000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f12d793a000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f12d756d000)
        libfreebl3.so => /lib64/libfreebl3.so (0x00007f12d736a000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f12d8496000)

こいつだけっぽいですね。
今回は「libpython3.7m.so.1.0」は /usr/local/lib にいました。
他の人と同じ場所、「/lib64/」にあるようにリンクを貼ります。

ln -s /usr/local/lib/libpython3.7m.so.1.0 /lib64/

で!

python3
Python 3.7.3 (default, Apr  9 2019, 15:07:31)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.

やれやれ~

node.js をインストールしてみるまでのあれこれ

node.js でテストしたいことがあったので入れてみる。
まず、node.jsから「Source Code」をダウンロードする。
「Linux Binaries (.tar.gz)」は中にmakeファイルとかなくてどうしたら良いか分からなかったので、ソースコードの方で進める。
落としてきた「node-v0.10.19.tar.gz」を解凍する。

# tar -zxvf node-v0.10.19.tar.gz

解凍した中身を見てみる。

# cd node-v0.10.19

中にconfigureとMakefileがあるので、とりあえずmakeしてみる

# make
python ./configure
  File "./configure", line 442
    fpu = 'vfpv3' if armv7 else 'vfpv2'
                   ^
SyntaxError: invalid syntax
make: *** [config.gypi] エラー 1

おーぅ・・・

python入れます。

yum install python

と、すると

Package python-2.4.3-56.el5.i386 already installed and latest version

古い、古すぎる!ハッハー!
まぁ5系だからねぇ。
ダウンロードページには

Note: Python 2.6 or 2.7 is required to build from source tarballs.

と書いてあるので、これも入れることにする。

# wget http://python.org/ftp/python/2.7.5/Python-2.7.5.tgz
# tar -zxvf Python-2.7.5.tgz
# cd Python-2.7.5
# configure

configure時に –enable-shared をつけている記事が多いのですが
LinuxでPythonをビルドするときの –enable-shared オプションについて
を見ると初心者にはオススメしない的なことが書いてあるので、それに従って何もつけないことにする。

# make
# make install

で、いいのかな?

# python
Python 2.7.5 (default, Sep 25 2013, 13:40:17)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

いいっぽい。python のインストールは終了。

node.jsに戻る。

# cd node-v0.10.19
# make

で、

which: no g++ in・・・
make: *** [out/Makefile] エラー 1

はい。そっちもですね。

GCC++入れます。

# yum install gcc*

もやる。
なんとなく gcc-c++ だけでもいいような気がするけど。

node.jsに戻って再度make。

# make

で、

ImportError: No module named bz2
make: *** [node] エラー 2

ういーす。

bz2入れます。

yum install bzip2*

node.jsに戻って再々度make。

# make

で、

ImportError: No module named bz2
make: *** [node] エラー 2

???
Rackhubで新しいnode.jsを入れるときにImportError: No module named bz2が出たら
」こちらを確認させていただくと、「bz2が入ってなくてpythonがbz2入りでビルドされていないから」ということらしい。
てことは再度python入れなおしって事か。

# configure --with-bz2
# make
# make install

これでどうでしょう?

再度、node.jsに戻って再々々度make。

# make

で、いけた。

# make install

うむ、いけた。

# node -v
v0.10.19

できた。