[[Python]]
[[labs.beatcraft.com]]
[[Python]]~

#contents

* Python2.6.6/CentOS5 [#e70cb2fe]

CentOS 5.6(32bit版)にpython2.6.6をインストールする手順とpython2.6.6にあわせた~
PIL(Python Imaging Library)、mod_wsgi、OpenCVをインストールする手順を記載します。~
~
python2.6.6は他のバージョンや導入済みのバージョンと分ける為に、デフォルトの~
インストールディレクトリではなく、/usr/local/以下のディレクトリにインストール先を指定しています。~
~

* CentOS5 [#pdb8dc9e]
CentOS 5.5(32bit)をインストールしています。update後CentOS 5.6に更新されます。~

** Install [#y34c21d0]
以下のような設定でCentOS 5.5をインストールしています。~

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

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

 customパッケージ
 追加パッケージ:開発ツール、開発ライブラリ
 削除パッケージ:DNSネームサーバ削除
 
** CentOSの設定[#j685f802]
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 [#q382dc82]
上記設定では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の確認 [#ed52dbbd]
上記手順で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系の設定 [#ifcf77c0]
CentOSの標準リポジトリでは2.4系のバージョンしか取得できないのでepelのリポジトリを追加し~
python26をインストールします。epelはExtra Packages for Enterprise Linux の略称です。~
標準リポジトリでは導入できない様々なパッケージを追加することができます。~
~
epelのリポジトリを追加しpython2.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の導入 [#y9ea3faa]
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 [#gb29ce3f]
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 [#g39f3605]
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 [#le5af911]
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をご覧ください。~
~
- apxs
-- http://httpd.apache.org/docs/current/programs/apxs.html
- mod_wsgi_installation issues
-- http://code.google.com/p/modwsgi/wiki/InstallationIssues
~

 $ 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 [#a65ac293]
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の導入 [#w9c8d579]
cmakeが標準リポジトリにないためepelからインストールをします。~
注:epelにはopencvもありますが今回はpython2.6.6とのバインドをするため使用ません。~

 # yum search cmake  --enablerepo=epel   

*** OpenCV-2.2.0 [#l0cbb1be]
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