ふにゃるんv2

もとは、http://d.hatena.ne.jp/Wacky/

SRPMをビルドするのは、「rpm --rebuild」でなくて「rpmbuild」

PythonRed Hat Linux 9(free版)に2.4系を入れようと思ったのよ。(RH9に入っているのは2.2系)
で、オフィシャルサイトで配られている RPM を突っ込もうかと思ったんだけど、これが Fedora Core 3用みたいなのよね。

試しに挑戦したんだけど、FC3に含まれているランタイムライブラリを色々要求され、無理矢理つっこんだら、一応入ったけど、何かへんちくりんな動きをしてしまいますた。
(例えば、IPython入れたら、補完機能が使えなかったり、幾つかライブラリをimportできなかったり…)


という訳で、SRPM版から入れようと思った訳。
tarボールから入れないのは、今回SRPMからRPMを作っておけば、後でインストールしやすくなると思ったから。わはは。
(実際、tarボールから入れると、結構コンパイル時間がかかる)


SRPMからRPMを作る方法は、どんなのかいな?と思ってぐぐるったら、早速引っかかった。

$ rpm --rebuild postfix-0.0.20010228-0vl2.src.rpm

なるほど、なるほど、"rpm --rebuild"ね。
…できねぇ。「unknown option」って出るよ。もしかしてRH9って古いからなのかなぁ?


と、他に方法が無いかぐぐるった。すると、こんなのが見つかった。

...
インターネットで調べると 
rpm --rebuild hogehoge.srpm
なるコマンドでリビルドできるとありました
過去にこのコマンドでリビルドした経験もあったので実際に実行してみるとrpmコマンドにそんな引数はないっていわれてしまいます

よくよく調べると現在主流のrpmはバージョン4、んで上記コマンドでリビルドできるのが3以前なので、リビルドできないということでした
バージョン4からはrpmbuildなるコマンドを利用します
それではということで"rpmbuild --rebuild hogehoge.srpm"とすると、そんなコマンドはないって言われてしまいます
デフォルトではこのコマンドはインストールされないので別途パッケージrpm-buildをインストールしてください
その後rpmbuild --rebuild hogehoge.srpmでリビルドができるようになります

なるほど、rpmのバージョンに依存するのか。
RH9はというと、バージョン4ですな。

$ rpm --version
RPM バージョン 4.2

ネット上では、結構 "rpm --rebuild"せよって勧めている解説が多かったんだけど、多くの人は、古いバージョンを使っているって事なのかなぁ?


まぁ、いいや。ってんで、早速"rpmbuild"を使ってみる。

$ rpmbuild --rebuild python2.4-2.4.1-1pydotorg.src.rpm 
...
debug
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Checking for unpackaged file(s): /usr/lib/rpm/check-files /var/tmp/python2.4-2.4.1-root
書き込み中: /usr/src/redhat/RPMS/i386/python2.4-2.4.1-1pydotorg.i386.rpm
書き込み中: /usr/src/redhat/RPMS/i386/python2.4-devel-2.4.1-1pydotorg.i386.rpm
書き込み中: /usr/src/redhat/RPMS/i386/python2.4-tkinter-2.4.1-1pydotorg.i386.rpm
書き込み中: /usr/src/redhat/RPMS/i386/python2.4-tools-2.4.1-1pydotorg.i386.rpm
書き込み中: /usr/src/redhat/RPMS/i386/python2.4-docs-2.4.1-1pydotorg.i386.rpm
書き込み中: /usr/src/redhat/RPMS/i386/python2.4-debuginfo-2.4.1-1pydotorg.i386.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.35836
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd Python-2.4.1
+ '[' -n /var/tmp/python2.4-2.4.1-root -a /var/tmp/python2.4-2.4.1-root '!=' / ']'
+ rm -rf /var/tmp/python2.4-2.4.1-root
+ rm -f mainpkg.files tools.files
+ exit 0
Executing(--clean): /bin/sh -e /var/tmp/rpm-tmp.35836
+ umask 022
+ cd /usr/src/redhat/BUILD
+ rm -rf Python-2.4.1
+ exit 0

出来たので、早速入れてみよう。

$ ls -l
合計 14992
-rw-r--r--    1 root     root      7271925 10月 27 15:21 python2.4-2.4.1-1pydotorg.i386.rpm
-rw-r--r--    1 root     root      4213053 10月 27 15:21 python2.4-debuginfo-2.4.1-1pydotorg.i386.rpm
-rw-r--r--    1 root     root       700154 10月 27 15:21 python2.4-devel-2.4.1-1pydotorg.i386.rpm
-rw-r--r--    1 root     root      2102109 10月 27 15:21 python2.4-docs-2.4.1-1pydotorg.i386.rpm
-rw-r--r--    1 root     root       262269 10月 27 15:21 python2.4-tkinter-2.4.1-1pydotorg.i386.rpm
-rw-r--r--    1 root     root       756478 10月 27 15:21 python2.4-tools-2.4.1-1pydotorg.i386.rpm
$ rpm -ivh python2.4-2.4.1-1pydotorg.i386.rpm 
Preparing...                ########################################### [100%]
   1:python2.4              ########################################### [100%]

ちなみにインストールすると、"python2.4"ってファイル名として入る。

$ python -V
Python 2.2.2
$ python2.4 -V
Python 2.4.1
$ ls /usr/bin/py* -l
-rwxr-xr-x    1 root     root           82 10月 27 15:20 /usr/bin/pydoc2.4
-rwxr-xr-x    2 root     root       791232  2月 25  2003 /usr/bin/python
lrwxrwxrwx    1 root     root            6 10月 20 19:16 /usr/bin/python2 -> python
-rwxr-xr-x    2 root     root       791232  2月 25  2003 /usr/bin/python2.2
-rwxr-xr-x    1 root     root       978816 10月 27 15:20 /usr/bin/python2.4

最初、入ってないのか?と思って焦ったよ。