ubuntuのpyexiv2を無理やりgentooに移植した話。

この記事で書いている方法はものすごく危険な香りがします。良い子の皆は真似しないでね?

先日使用したpyexiv2ってライブラリ。 なんかねー、gentooで上手いことコンパイルできないんですよね。 参ったなー困ったなーと。

で、目をつけたのがubuntuのパッケージ。ubuntuにインストールして、それを持ってくればいいんじゃないかと思って。

/usr/lib/python2.7/dist-packages/pyexiv2//usr/lib/python2.7/dist-packages/libexiv2python.soの2つをgentooに持って行って、そこでpythonを起動。

>>> import pyexiv2
Traceback (most recent call last):
  File  "<stdin>", line 1, in <module>
  File "pyexiv2/__init__.py", line 60, in <module>
    import libexiv2python
ImportError: libboost_python-py27.so.1.53.0: cannot open shared object file: No such file or directory

おー、ダメだこりゃ。

探してみたら、私のgentooにはlibboost_python-2.7.soってboost.pythonが入ってるのね。

あるんならいいじゃんとlibexiv2python.soをvimで開いてboost_pythonって検索。

max_arityEv^@libboost_python-py27.so.1.53.0^@libexiv2.so.12^@libstdc++.so.6^@...

みたいな感じでライブラリ名を列挙している所を発見。

すかさず

max_arityEv^@libboost_python-2.7.so^@libexiv2.so.12^@libstdc++.so.6^@...

に変更。

したらsegment faltした。そりゃそうだ、位置がズレてるもの。

しょうがないので足りない文字数分をnull文字で埋めて、

max_arityEv^@libboost_python-2.7.so^@^@^@^@^@^@^@^@^@libexiv2.so.12^@libstdc++.so.6^@...

みたいな感じに。

動いた。よし。終了。

boost-pythonのバージョンを指定を消しちゃってるあたりすごく危険な感じがするけれど、まあ動くからいいよね。たぶんね。