コンピュータ/ソフトウェア関連Tips

本文へ

Python 2.7.5 インストール時にハマったこと

更新: 2013年06月08日(土) 12:20
公開: 2013年06月08日(土) 12:20

CentOS 6.4にPython2.7.5をインストール(altinstall)し、さらに、デフォルトで2.6.6ではなく2.7.5が起動するようにするを書く前にハマったことの記録です。

$ sudo python setup.py install

を実行すると、「Python.hが見つからない」というエラーが出る。

$ sudo ln -s  /usr/local/include/python2.7 /usr/include/python2.7

を実行したのだが、「Python.hが見つからない」というエラーは解消されない。

$ sudo /usr/local/bin/python2.7 setup.py install

ならうまくいく。

だめなはずだ。

$ sudo python

Python 2.6.6 (r266:84292, Feb 22 2013, 00:00:18)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

sudo pythonでは、もともとインストールされたPythonを実行してしまう。では、su - して、rootアカウントとして実行するとどうなるだろうか。

$ su -

# python

Python 2.7.5 (default, Jun  1 2013, 14:19:30)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

OKだ。では、rootアカウントで、「python setup.py install」を実行してみる。

# python setup.py install

creating /home/wizard/LinkChecker-8.4/_LinkChecker_configdata.py
running install
running build
running build_py
running build_ext
running build_scripts
running install_lib
creating /usr/local/lib/python2.7/site-packages/_LinkChecker_configdata.py
byte-compiling /usr/local/lib/python2.7/site-packages/_LinkChecker_configdata.py to _LinkChecker_configdata.pyc
running install_scripts
changing mode of /usr/local/bin/linkchecker-nagios to 775
changing mode of /usr/local/bin/linkchecker-gui to 775
changing mode of /usr/local/bin/linkchecker to 775
running install_data
copying build/share/locale/es/LC_MESSAGES/linkchecker.mo -> /usr/local/share/locale/es/LC_MESSAGES
copying build/share/locale/de/LC_MESSAGES/linkchecker.mo -> /usr/local/share/locale/de/LC_MESSAGES
copying build/share/locale/fr/LC_MESSAGES/linkchecker.mo -> /usr/local/share/locale/fr/LC_MESSAGES
running install_egg_info
Removing /usr/local/lib/python2.7/site-packages/LinkChecker-8.4-py2.7.egg-info
Writing /usr/local/lib/python2.7/site-packages/LinkChecker-8.4-py2.7.egg-info

やったね。

yumが正しくPythonを使えているか、「sudo yum search php」でチェックしたときは、Python 2.6.6を使ったということか...。じゃ、Python 2.7.5ではどうなるだろう。

# yum search php

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * extras: www.ftp.ne.jp
 * updates: www.ftp.ne.jp
base                                                     | 3.7 kB     00:00
extras                                                   | 3.5 kB     00:00
updates                                                  | 3.4 kB     00:00
=============================== N/S Matched: php ===============================
cups-php.x86_64 : Common Unix Printing System - php module
graphviz-php.x86_64 : PHP extension for graphviz
php.x86_64 : PHP scripting language for creating dynamic web sites
(略)
php-enchant.x86_64 : Human Language and Character Encoding Support
php-pecl-apc-devel.x86_64 : APC developer files (header)
php-pecl-memcache.x86_64 : Extension to work with the Memcached caching daemon

  Name and summary matches only, use "search all" for everything.

OK。

sudo pythonではPython 2.6.6を実行してしまう部分を解消すればよさそうだ。

進展有り。環境変数を引き継げば良いらしい。

参考: http://d.hatena.ne.jp/ykot/20110623/1308817434

$ sudo env PATH=$PATH python

Python 2.7.5 (default, Jun  1 2013, 14:19:30)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.

何が違うんだろうか。一般ユーザー時とsudo時の、環境変数PATHの値を確認。

$ env|grep PATH
PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/wizard/bin

$ sudo env|grep PATH
PATH=/sbin:/bin:/usr/sbin:/usr/bin

/usr/local/binが含まれていない。対応策は複数のアプローチがあるようだが、secure_pathに/usr/local/binを追加する方法を選択。

$ sudo visudo

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
↓
Defaults    secure_path = /usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

(参考: http://blog.bungu-do.jp/archives/3525 )

$ sudo python

Python 2.7.5 (default, Jun  1 2013, 14:19:30)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
$ sudo python setup.py install

creating /home/wizard/LinkChecker-8.4/_LinkChecker_configdata.py
running install
running build
running build_py
running build_ext
running build_scripts
running install_lib
creating /usr/local/lib/python2.7/site-packages/_LinkChecker_configdata.py
byte-compiling /usr/local/lib/python2.7/site-packages/_LinkChecker_configdata.py to _LinkChecker_configdata.pyc
running install_scripts
changing mode of /usr/local/bin/linkchecker-nagios to 775
changing mode of /usr/local/bin/linkchecker-gui to 775
changing mode of /usr/local/bin/linkchecker to 775
running install_data
copying build/share/locale/es/LC_MESSAGES/linkchecker.mo -> /usr/local/share/locale/es/LC_MESSAGES
copying build/share/locale/de/LC_MESSAGES/linkchecker.mo -> /usr/local/share/locale/de/LC_MESSAGES
copying build/share/locale/fr/LC_MESSAGES/linkchecker.mo -> /usr/local/share/locale/fr/LC_MESSAGES
running install_egg_info
Removing /usr/local/lib/python2.7/site-packages/LinkChecker-8.4-py2.7.egg-info
Writing /usr/local/lib/python2.7/site-packages/LinkChecker-8.4-py2.7.egg-info

やったね。

同一カテゴリーの記事

Tags: CentOS LINUX

© Someone in the TERRA

編集