旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

[Python, CentOS] yumのPythonと違うバージョンの方が

2008年11月28日

CentOSにPythonをソースから入れた場合に、
yumが使っている既存Pythonとの関連で色々と問題が出ております。

その内のひとつに、
–enable-sharedでインスコした場合に、
libpython.soを既存の/usr/lib下のものを参照してしまう、
という点がありました。

この点は /etc/ld.so.conf.d 下にconfファイルを置いて
ライブラリにパスを通すという方法で対処したのですが、
そうすると、yumで使っている /usr/lib/python も
新たにインスコしたPythonも同じlibpython.soを参照してしまい、
結果として、「yumが動くが新たな方は動かない」か「新たな方は動くがyumが動かない」という
状況となってしまいました。

例えば、こんな↓状況か

ldd /usr/bin/python
libpython2.4.so.1.0 => /usr/lib/libpython2.4.so.1.0 (0x00385000)
ldd /usr/local/python-2.4.5/bin/python
libpython2.4.so.1.0 => /usr/lib/libpython2.4.so.1.0 (0x00385000)

こんな状況↓でありました

ldd /usr/bin/python
libpython2.4.so.1.0 => /usr/local/python-2.4.5/lib/libpython2.4.so.1.0 (0x005a2000)
ldd /usr/local/python-2.4.5/bin/python
libpython2.4.so.1.0 => /usr/local/python-2.4.5/lib/libpython2.4.so.1.0 (0x005a2000)

解決方法としては、
新たに入れるPythonを2.5にして、既存Pythonバージョンの2.4とは違うバージョンにする
という対処をして、ライブラリのパスを通すことで解決しました。↓

ldd /usr/bin/python
libpython2.4.so.1.0 => /usr/lib/libpython2.4.so.1.0 (0x00385000)
ldd /usr/local/python-2.5.2/bin/python
libpython2.5.so.1.0 => /usr/local/python-2.5.2/lib/libpython2.5.so.1.0 (0x005a2000)

上記は全く根本的な解決じゃないですが
サーバ周りが良くわからない俺みたいな残念な方は、とりあえずは
「CentOSの場合は既存Pythonのマイナーバージョンと違うものを入れる」
という風にした方が、何かといいかもNE!!