mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

CentOS 6.5 - Python インストール(ソースビルド)!

[ サーバ構築 ] [ CentOS, Linux, Python ]

こんばんは。

前回は CentOS 6.5 サーバ上でログ監視ツール SWATCH の導入を行いました。
今回はプログラミング言語 Python をソースをビルドしてインストールします。

0. 前提条件

  • CentOS 6.5(x86_64) を Minimal で最小インストールしている。
  • クライントマシンは Linux Mint 14(64bit) を想定。
  • デフォルトでインストールされている Python 2.6.6 はアンインストールせず、Python 3.3.3 をインストールし、 2.6.6 と 3.3.3 を共存させる。
    python コマンドと python3.3 コマンドで使い分ける)
  • 「デフォルトでインストールされている Python をアンインストールすることはサーバ管理上悪影響を与えるので危険である」ということを理解しておく。
  • 過去にこのサイトを参考にして作業した際に記録していたものを参照している。

1. Python バージョン確認

インストール済み(現状)の Python のバージョンを確認してみる。

1
2
# python -V
Python 2.6.6

--version オプションでもよい。

2. 必要パッケージインストール

1
2
3
4
5
6
7
8
9
10
11
# yum install zlib-devel \
openssl-devel \
readline-devel \
ncurses-devel \
sqlite-devel \
expat-devel \
bzip2-devel \
tcl-devel \
tk-devel \
gdbm-devel \
libbsd-devel

3. アーカイブダウンロード&展開

http://www.python.jp/download/ から最新安定版(当記事執筆時点では 3.3.3)のアーカイブ(今回は tgz 版)をダウンロード・展開する。

1
2
3
# cd /usr/local/src
# wget http://www.python.org/ftp/python/3.3.3/Python-3.3.3.tgz
# tar zxvf Python-3.3.3.tgz

4. ビルド&インストール

複数系統インストールすることも考慮して configure オプションで --prefix を指定している。(複数系統インストールすることを考慮しないのなら prefix は指定しなくてもよい)
また、あらゆるサイト等で紹介されている --enable-shared のオプションは、メリットがない(むしろ問題点がある)ので使用しない。

1
2
3
4
# cd  Python-3.3.3
# ./configure --prefix=/usr/local/python-3.3
# make
# make install

もし、ビルドソースに問題がないか等をテストしたければ、 make のあとで make test でチェックしてみるとよいでしょう。

また、複数バージョン混在させるなら make altinstall でインストールするとよいらしい。

5. 環境変数 PATH 設定

パスを通すために .bash_profile に以下のような記述を追加する。

~/.bash_profile
1
export PATH=/usr/local/python-3.3/bin:$PATH

もしくは、以下のようにシンボリックリンクを貼る方法でもよいだろう。

1
# ln -s /usr/local/python-3.3/bin/python3.3 /usr/local/bin/python-test

6. インストール確認

1
2
# python3.3 -V
Python 3.3.3

7. 動作確認

対話形式で確認してみる。(ユークリッドの互除法で再帰的に最大公約数を求めてみる)
(対話形式を終了するには CTRL-D

1
2
3
4
5
6
7
8
9
10
11
12
13
# python3.3
Python 3.3.3 (default, Jan 22 2014, 09:48:06)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> def gcd(a, b):
...     if b == 0:
...             return a
...     else:
...             return gcd(b, a % b)
...
>>> print "The GCD for (123, 45): %d" %(gcd(123, 45))
The GCD for (123, 45): 3
>>>

上記と同じことをファイルを作成して実行してみる。

gcd.py
1
2
3
4
5
6
7
def gcd(a, b):
    if b == 0:
        return a
    else:
        return gcd(b, a % b)

print "The GCD for (123, 45): %d" %(gcd(123, 45))
1
2
# python3.3 gcd.py
The GCD for (123, 45): 3

ちなみに、Ruby だと以下のようになる。(基本的には Python と同様(インデントとその全行行末のコロン以外同様)に書けるけど、より簡素に書き換えてみた)

gcd.rb
1
2
def gcd(a, b) return b == 0 ? a : gcd(b, a % b) end
puts "The GCD for (123, 45): #{gcd(123, 45)}"

参考サイト


次回は、Web カメラを構築(USB カメラによる静止画自動保存)する方法について紹介する予定です。

以上。

Comments