2010年11月24日水曜日

CentOS 5 の Python 2.7 (2.7.1rc1) な (S)RPM

作った。のだけど今はちゃんとまとめる気力がない、、のでざっくり。

まず、下調べ
- 5.4 で 2.6.4 のをつくった人はいた
http://www.grenadepod.com/2009/12/26/building-python-2-6-4-rpm-for-centos-5-4/

- Fedora 14 だと 2.7 !
http://download.fedora.redhat.com/pub/fedora/linux/releases/14/Fedora/source/SRPMS/

- 2.5 とか 2.6 とか
http://www.geekymedia.com/uncategorized/rhel5-centos5-rpms-for-python-2-5-and-2-6/

- epel だと 2.6....! 2.6.5!
http://download.fedora.redhat.com/pub/epel/5/

・・・とまぁRHEL(CentOS)では 2.7 のをこさえたぜ!というエントリがみあたらず、
「へっへー、どこぞのだれかがつくってごした SRPM でさくっと作っちゃお〜」という目論見が外れた。
のでひさしぶりにごそごそ作ることに。。

1. Fedora 14 の SRPM を参考に、、、
-> SPECがいろいろややこしいかんじ。。パス。

2. epel の SRPM を参考に、、
-> んー、、いいけど、ちょっと。

3. Misc/RPM/python-2.7.spec をつかう
-> これにしよう。。

で python-2.7.spec をごそごそいじり。
・config_binsuffix が 2.6 のままなので 2.7 になおす
・pydotorg のところも適当に変える
・x86_64 の場合、/usr/lib64 のさばきがこのままだとできないので 他の SRPM にあるような /usr/lib64 むけのパッチを真似して作成(まぁ /usr/lib にいれてかまわんのだけどね...)
・Makefile 中の LIBDIR のせいで rpmbuild に失敗するため、 make のあと(ad-hoc な感じだけど) LIBDIR を置換するワンライナを追加
(これも x86_64 で ./configure --libdir=/usr/lib64 指定しているせい。SPEC では本来なら %configure 使うのが筋だと思うけど、んっんー。)
・%file に
%{__prefix}/%{libdirname}/python%{libvers}/Tools
%{__prefix}/%{libdirname}/python%{libvers}/lib2to3
だったかを追加。

以上変更後、
# QA_RPATHS=$[ 0x0001|0x0010 ] rpmbuild -ba python-2.7.spec

で作成。

QA_RPATHS、、は rpath なんたらのパッチをあてれば要らなくなるはず。
配布されてる SRPM どもは QA_ほげほげ不要なようにこさえてあると思われる。


作成後、インストールし、動作テストしてみたら、、
$ python2.7 [Enter]
-> 死亡

これは
/usr/lib/python2.7 -> /usr/lib64/python2.7 の symlink 貼ったら解消。。
んー、ここでも libdir の捌きが必要、、よくわからんので %post で symlink はるようにした。

virutalenv で作成した環境で Django が動くことは確認したので大丈夫でしょう。

(作りが甘すぎるけども)成果物はあとで載せる。

0 件のコメント:

コメントを投稿