Ubuntu 12.04 で Python 2.6 をビルドする

Ubuntu 12.04 でもまだUbuntuパッケージとして Python 2.6 が提供されているのですが、将来消えるのかもしれないのでそろそろ後方互換性確保用の 2.6 は自前ビルドをしておくことにしました。

Python をビルドするとき、 Ubuntu 11.10 からだと思うのですが、 /usr/lib ではなく /usr/lib/x86_64-linux-gnu (64bitの場合)にライブラリを置くために、 zlib を始めとする多くの重要な標準ライブラリがビルドされない問題があります。

php でも同じような問題に遭遇して、 configure スクリプトの書き換えが面倒だったので、自分のノートPCに環境を構築することを諦めていたのですが、 Python の標準ライブラリだとこのあたりが Python で書かれているので比較的楽に改修可能でした。具体的には setup.py の中の 410 行目あたりに、次のように1行追加します。

         # lib_dirs and inc_dirs are used to search for files;
         # if a file is found in one of those directories, it can
         # be assumed that no additional -I,-L directives are needed.
         lib_dirs = self.compiler.library_dirs + [
             '/lib64', '/usr/lib64',
             '/lib', '/usr/lib',
+            '/usr/lib/x86_64-linux-gnu',
             ]

まぁ、UbuntuはデスクトップOSと割りきって、ローカルの検証環境は chroot 配下に Debian を用意するべきかもしれません。

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。