Pyton labs.beatcraft.com

Python2.6.6/CentOS5

CentOS 5.6(32bit版)にpython2.6.6をインストールする手順とpython2.6.6にあわせた
PIL(Python Imaging Library)、mod_wsgi、OpenCVをインストールする手順を記載します。

python2.6.6は他のバージョンや導入済みのバージョンと分ける為に、デフォルトの
インストールディレクトリではなく、/usr/local/以下のディレクトリにインストール先を指定しています。

CentOS5

CentOS 5.5(32bit)をインストールしています。update後CentOS 5.6に更新されます。

Install

以下のような設定でCentOS 5.5をインストールしています。

パッケージ:Server (NoGUI)
言語、キーボード: Japanese
パーティション:default パーティション
ネットワーク:DHCP
システムタイム:UTC
FireWall,SELinux :Disable

また、以下のパッケージの追加と削除を行っています。

customパッケージ
追加パッケージ:開発ツール、開発ライブラリ
削除パッケージ:DNSネームサーバ削除

CentOSの設定

yumコマンドでCentOSを最新の状態にアップデートしています。

yum install yum-fastestmirror <- リポジトリを最も近いリポジトリに変更、確認
yum update <- OSのアップデート

yum update後のkernel versionは以下のとおりです。

uname -a
Linux localhost.localdomain 2.6.18-238.9.1.el5PAE #1 SMP 
Tue Apr 12 18:52:55 EDT 2011 i686 i686 i386 GNU/Linux

ntp

上記設定ではUTCを使用していますので、時刻を合わせるためntpをインストールします。

$ sudo yum install ntp

現在のマシンの時刻をntpから取得した時刻に修正します。

# data
# /usr/sbin/ntpdate -s ntp.nict.jp

修正した時刻をハードウェアに記録します。

# clock -w

以下の3つの日本のntpサーバを/etc/ntp/step-tickersに登録します。

#  vi /etc/ntp/step-tickers
ntp.nict.jp
ntp.jst.mfeed.ad.jp
ntp.ring.gr.jp

導入済みpythonの確認

上記手順でCentOSに導入されているpythonのバージョンとディレクトリは以下のとおりです。

# python -V
Python 2.4.3
# pwd
/usr/bin
# ls -l python*
-rwxr-xr-x 2 root root 8304  3月  6 11:27 python
lrwxrwxrwx 1 root root    6  5月  3 00:02 python2 -> python
-rwxr-xr-x 2 root root 8304  3月  6 11:27 python2.4

python2.6系の設定

CentOSの標準リポジトリでは2.4系のバージョンしか取得できないのでepelのリポジトリを追加し
python26をインストールします。epelはExtra Packages for Enterprise Linux の略称です。
標準リポジトリでは導入できない様々なパッケージを追加することができます。

epelのリポジトリを追加しphyton2.6.5と開発用パッケージをインストールします。

$ wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
$ sudo rpm -Uvh epel-release-5-4.noarch.rpm

必要時以外はepelのリポジトリを呼び出さない設定に変更します。

$ sudo vi /etc/yum.repos.d/epel.repo 

[epel]
name=Extra Packages for Enterprise Linux 5 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5& arch=$basearch
failovermethod=priority
enabled=0 <-1から0に変更します。
gpgcheck=1

python26をインストールする前にlibffi(python26であわせてインストールされます)が
既にインストールされていないかを確認をします。ここではインストールされていないので、
yumコマンドでpython26をインストールします。

$ rpm -qa libffi <- libffiをインストールするので既にインストールされているか確認
$yum install --enablerepo=epel python26
Installed:
  python26.i386 0:2.6.5-6.el5
...<略> 
Dependency Installed:
  libffi.i386 0:3.0.5-1.el5 python26-libs.i386 0:2.6.5-6.el5

あわせて、python26の開発用ライブラリをインストールします。

yum install  python26-devel --enablerepo=epel

インストール完了後バージョンの確認をします。ここではpythonコマンドでは2.4.3を指し、
python26コマンドではpython2.6.5を指している事を確認します。

$ python -V
Python 2.4.3
python26 -V
Python 2.6.5
$ python2.6 -V
Python 2.6.5

python2.6.6の導入

python2.6.6をソースコードからconfig、makeしインストールします。またconfigで共有ライブラリを
有効にした状態でのビルドを行います。

上記の状態では2.6.6のmake時に2.6.5の共有ライブラリを参照してしまうため、
LD_LIBRARY_PATHにpython2.6.6のPATHを追加し、あわせてMakefileの書き換えを行い
2.6.5の共有ライブラリを参照しないようにします。

また、インストール先のディレクトリをここでは/usr/local/python266と指定しています。
以下のURLからソースファイルをダウンロードしてきます。/home/beat/python-orig/Python-2.6.6/は
pyhton2.6.6のソースアーカイブをダウンロードしたファイルの展開先ディレクトリです。

http://www.python.org/download/releases/2.6.6/

LD_LIBRARY_PATHの先頭にpython2.6.6のファイルの展開先ディレクトリを追加します。

export LD_LIBRARY_PATH=/home/beat/python-orig/Python-2.6.6/Lib:$LD_LIBRARY_PATH

以下のconfigオプションを使用しています。enable-unicode=ucs4はdistributeのインストール時に
エラーが起こるのを防ぐために使用しています。

$ cd /home/beat/python-orig/Python-2.6.6
 ./configure --with-threads --enable-shared --enable-unicode=ucs4 --prefix=/usr/local/python266 

configureコマンドでLDLFLAGS と-Lのオプションを追加するとエラーになるので
Makefileを直接以下のように書き換えます。

$ vi Makefile
Makefile
CPPFLAGS=       -I. -IInclude -I$(srcdir)/Include
LDFLAGS=        -L$(srcdir)/Lib   <-追加
LDLAST=

$ make 
$ ./python -V
Python 2.6.6
$ ldd ./python
       linux-gate.so.1 =>  (0x00270000)
       libpython2.6.so.1.0 (0x00271000)
       libpthread.so.0 => /lib/libpthread.so.0 (0x009ee000)
       libdl.so.2 => /lib/libdl.so.2 (0x009bc000)
       libutil.so.1 => /lib/libutil.so.1 (0x00c0f000)
       libm.so.6 => /lib/libm.so.6 (0x009c3000)
       libc.so.6 => /lib/libc.so.6 (0x00861000)
       /lib/ld-linux.so.2 (0x0083d000)
$ sudo make install

make install後、libpythonが/usr/libを参照しているので以下のように
ld.so.conf.dにpython266.confを追加しldconfigコマンドを実行します。

# vi /etc/ld.so.conf.d/python266.conf

/usr/local/python266/lib <-記入

ldconfigを実行し設定を反映させます。

# /sbin/ldconfig

usr/local/python266に移動しpythonが2.6.6を指しているかを確認します。

$ cd /usr/local/python266
$ ./python -V
Python 2.6.6
$ ldd python
        linux-gate.so.1 =>  (0x007a8000)
        libpython2.6.so.1.0 => /usr/local/python266/lib/libpython2.6.so.1.0  (0x0013a000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x009ee000)
        libdl.so.2 => /lib/libdl.so.2 (0x009bc000)
        libutil.so.1 => /lib/libutil.so.1 (0x00c0f000)
        libm.so.6 => /lib/libm.so.6 (0x009c3000)
        libc.so.6 => /lib/libc.so.6 (0x00861000)
        /lib/ld-linux.so.2 (0x0083d000)

上記のpython2.6.6の設定が反映されるように、bashrcを以下のように追記しておきます。

$ vi .bashrc
...<略>
#source /usr/local/pythonbrew/etc/bashrc
export PATH=/usr/local/python266/bin:$PATH
alias python='python2.6'
export LD_LIBRARY_PATH=/usr/local/pyhon266/lib:$LD_LIBRARY_PATH
$ source .bashrc

distribute

distributeはsetuptoolsからフォークしたプロジェクトです。pip(easy_install)も
あわせてインストールされます。詳細については以下のURLをご覧ください。ここでは
0.6.16をインストールします。

http://pypi.python.org/pypi/distribute/

$ cd /home/beat/python-orig
$ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.16.tar.gz
$ tar xvfz distribute-0.6.16.tar.gz
$ cd distribute-0.6.16
$ python setup.py build
# python setup.py install --prefix=/usr/local/python266

指定しているディレクトリにインストールできているかの確認をします。

$ which easy_install
/usr/local/python266/bin/easy_install

PIL

PILはpythonに画像処理機能を追加します。ここでは、PIL(Python Imaging Library)のバージョン
1.1.7をインストールします。PILの詳細は以下のURLをご覧ください。

http://www.pythonware.com/products/pil/

$ cd /home/beat/PIL/Imaging-1.1.7
$ python setup.py clean <-以前のビルド時の物を削除
$ python setup.py build
$ sudo python setup.py install

セルフテストを行いPILが正しく設定されているかの確認とバージョンの確認をします。

$ python selftest.py
--------------------------------------------------------------------
PIL 1.1.7 TEST SUMMARY
--------------------------------------------------------------------
Python modules loaded from ./PIL
Binary modules loaded from /usr/local/python266/lib/python2.6/site-packages/PIL
...<略>
 Running selftest:
 --- 57 tests passed.

mod_wsgi

mod_wsgiはpythonのアプリケーションをサポートするためのApacheのモジュールです。
使用するバージョンは3.3です。mod_wsgiの詳細については以下のURLをご覧ください。

http://code.google.com/p/modwsgi/

mod_wsgiのインストール前にapxsのインストールをします。apxsはAPache eXtenSion toolの略称です。
Apache のLoadModuleからmod soを呼び出すために使用しています。

mod_wsgiのビルド、インストール時にApacheのバージョン、pythonのバージョン違いによって正しく呼び出されないことを
防ぐためにインストールします。apxsの詳細については以下のURLをご覧ください。

$ sudo yum install httpd-devel

home/beat/mod_wsgiにmod_wsgi-3.3のアーカイブをダウンロードし展開しています。

$ cd /home/beat/mod_wsgi/mod_wsgi-3.3
$ ./configure --with-apxs=/usr/sbin/apxs --with-python=/usr/local/python266/bin/python
$ make
$ sudo make install
$ ldd /usr/lib/httpd/modules/mod_wsgi.so
       linux-gate.so.1 =>  (0x009f4000)
       libpython2.6.so.1.0 => /usr/local/python266/lib/libpython2.6.so.1.0 (0x00df3000)
       libpthread.so.0 => /lib/libpthread.so.0 (0x004bc000)
       libdl.so.2 => /lib/libdl.so.2 (0x00fcc000)
       libutil.so.1 => /lib/libutil.so.1 (0x00a52000)
       libm.so.6 => /lib/libm.so.6 (0x00955000)
       libc.so.6 => /lib/libc.so.6 (0x0068d000)
       /lib/ld-linux.so.2 (0x0083d000)

サンプルpythonスクリプトでインストールしたmod_wsgiが動作しているかを確認します。
etc/httpd/conf.dにmodwsgi_test.confを作成し、以下のように追加します。WSGIPythonHomeには
python2.6.6のインストール先を記載します。hello.pyがサンプルです。

$ sudo vi /etc/httpd/conf.d/modwsgi_test.conf
LoadModule wsgi_module modules/mod_wsgi.so
WSGIPythonHome  /usr/local/python266
WSGIScriptAlias /test /var/www/cgi-bin/hello.py

hello.pyは以下の内容を記載しています。

$ sudo vi /var/www/cgi-bin/hello.py

#!/usr/local/bin/python-2.6
def application(environ, start_response):
    status = '200 OK'
    response_headers = [('Content-type', 'text/plain')]
    start_response(status, response_headers)
    return ["It's works!"]

httpdを再起動します。

$ sudo /etc/init.d/httpd restart

正しく設定できている場合は、以下のURLにアクセスするとIt's works!の表示を確認することができます。

http://マシンのIPアドレス/test

OpenCV

OpenCVは画像解析などのコンピュータビジョン向けのソフトウェア ライブラリです。
上記までにインストールしたpython2.6.6にOpenCV-2.2.0をバインド、ビルド後
インストールします。OpenCVの主なオプションとしては以下のとおりです。

ffmpeg:disable
TTB:disable
OpenMP:enable
pythonは2.6.6にバインド

OpenCVの詳細については以下のURLをご覧ください。

http://opencv.jp/

cmakeの導入

cmakeが標準リポジトリにないためepelからインストールをします。
注:epelにはopencvもありますが今回はpython2.6.6とのバインドをするため使用ません。

# yum search cmake  --enablerepo=epel   

OpenCV-2.2.0

home/beat/OpenCV/OpenCV-2.2.0/releaseディレクトリでビルドを行います。
インストール先は/usr/local以下を指定しています。

http://opencv.jp/opencv2-x-tips/install-linuxubuntu

$ cd OpenCV
$ tar xvfj OpenCV-2.2.0.tar.bz2
$ cd OpenCV-2.2.0
$ mkdir release
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local
-D BUILD_PYTHON_SUPPORT=ON -D ENABLE_OPENMP=ON ../
...<略>option情報 ...
-- General configuration for opencv 2.2.0 =====================================
--
--     Built as dynamic libs?:    ON
--     Compiler:
--     C++ flags (Release):         -Wall -pthread -march=i686 -ffunction-sections  -O3 -DNDEBUG  -fomit-frame-pointer -O3 -ffast-math -msse -msse2  -mfpmath=387 -DNDEBUG
--     C++ flags (Debug):           -Wall -pthread -march=i686 -ffunction-sections  -g  -O0 -ggdb3 -DDEBUG -D_DEBUG
--     Linker flags (Release):
--     Linker flags (Debug):
--
--   GUI:
--     GTK+ 2.x:                  1
--     GThread:                   1
--
--   Image I/O:
--     JPEG:                      TRUE
--     PNG:                       TRUE
--     TIFF:                      build
--     JPEG 2000:                 build
--     OpenEXR:                   NO
--
--   Video I/O:
--     DC1394 1.x:                0
--     DC1394 2.x:                0
--     FFMPEG:                    0
--       codec:                   0
--       format:                  0
--       util:                    0
--       swscale:                 0
--       gentoo-style:
--     GStreamer:                 0
--     UniCap:                    FALSE
--     PvAPI:
--     V4L/V4L2:                  /
--     Xine:                      FALSE
--
--   Interfaces:
--     Python:                    ON
--     Python interpreter:        /usr/local/python266/bin/python2.6
--     Python numpy:              NO (Python interface will not cover OpenCV 2.x API)
--     Use IPP:                   NO
--     Use TBB:                   NO
--     Use Cuda:                  No
--     Use Eigen2:                NO
--
--   Documentation:
--     Build PDF                  NO
--     Doxygen HTMLs              YES
--
--     Install path:              /usr/local
--
--     cvconfig.h is in:          /home/beat/OpenCV/OpenCV-2.2.0/release
-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: /home/beat/OpenCV/OpenCV-2.2.0/release
$ make

opencv_test_coreコマンドを実行しセルフテストを行います。

$ ./bin/opencv_test_core
...<略> 
[49f4d0d1dc035294]
stat-sum: ....................................................  Ok
=================================================
Summary: 0 out of 78 tests failed
Running time: 00:01:02

make installでインストーし/usr/local以下にOpenCVの各ファイルがインストールされていることを
確認できれば完了です。

$ sudo make install
$ cd /usr/local/bin
$ ls
opencv_createsamples  opencv_haartraining  opencv_performance
opencv_traincascade

BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   新規 一覧 単語検索 最終更新   最終更新のRSS