現時点で CentOS5 にリリースされている python-setuptools (python-setuptools-0.6c5-2.el5) は Subversion 1.5 のワーキングコピーの形式に対応していないので、Subversion 1.5 を入れた環境では easy_install がエラーを出して動作しない。
python-setuptools のリポジトリにある最新版は 1.5 形式に対応しているので、そこから rpm を作成すれば解決するものの、bdist_rpm コマンドにバグ(?)があるので、こちらに対処してからでないと rpm を作るときにエラーがでる。
と、Trac にプラグインを入れようとしたときにはまったので、後々のためにメモ。
まず、 bdist_rpm の不具合を取り除くために以下のパッチを /usr/lib/python2.4 に適用してやる。(情報源 http://wtnb.mydns.jp/wordpress/archives/4235)
1行なので、適当なエディタで弄るだけでもよし。
--- python2.4/distutils/command/bdist_rpm.py.orig 2007-01-19 18:57:07.000000000 +0900 +++ python2.4/distutils/command/bdist_rpm.py 2007-01-19 18:57:43.000000000 +0900 @@ -488,6 +488,7 @@ class bdist_rpm (Command): ('build', 'build_script', def_build), ('install', 'install_script', ("%s install " + "--optimize 1 " "--root=$RPM_BUILD_ROOT " "--record=INSTALLED_FILES") % def_setup_call), ('clean', 'clean_script', "rm -rf $RPM_BUILD_ROOT"),
そして、適当なディレクトリに setuptools の最新版をチェックアウトする。
自分のときは rev66497 を利用。
$ mkdir setuptools $ svn co http://svn.python.org/projects/sandbox/branches/setuptools-0.6 setuptools ....(省略).... リビジョン 66497 をチェックアウトしました。 $
$ cd setuptools $ python setup.py bdist_rpm running bdist_rpm running egg_info writing setuptools.egg-info/PKG-INFO writing top-level names to setuptools.egg-info/top_level.txt ....(省略).... building RPMs rpmbuild -bs --define _topdir /home/*****/setuptools/build/bdist.linux-i686/rpm --clean build/bdist.linux-i686/rpm/SPECS/setuptools.spec 書き込み完了: /home/*****/setuptools/build/bdist.linux-i686/rpm/SRPMS/setuptools-0.6c9dev_r66389-1.src.rpm 実行中(--clean): /bin/sh -e /var/tmp/rpm-tmp.80773 + umask 022 + cd /home/*****/setuptools/build/bdist.linux-i686/rpm/BUILD + rm -rf setuptools-0.6c9dev-r66389 + exit 0 moving build/bdist.linux-i686/rpm/SRPMS/setuptools-0.6c9dev_r66389-1.src.rpm -> dist $
build/bdist.linux-i686/rpm/SPECS/ に spec ファイルが出来ているので、CentOS のパッケージ名と整合をとるため、以下のパッチを適用。
--- setuptools.spec.orig 2008-09-18 15:41:39.000000000 +0900 +++ setuptools.spec 2008-09-18 15:41:48.000000000 +0900 @@ -1,4 +1,4 @@ -%define name setuptools +%define name python-setuptools %define version 0.6c9dev_r66389 %define unmangled_version 0.6c9dev-r66389 %define release 1
また、rpm でなく、tarball と srpm が dist 以下にできているので CentOS のパッケージ名に合わせるために、tarball 内のディレクトリ名と tarball 自体のファイル名を変更する。
$ cd dist $ tar zxf setuptools-0.6c9dev-r66389.tar.gz $ mv setuptools-0.6c9dev-r66389 python-setuptools-0.6c9dev-r66389 $ tar -cf python-setuptools-0.6c9dev-r66389.tar python-setuptools-0.6c9dev-r66389 $ gzip -9 python-setuptools-0.6c9dev-r66389.tar $ cd ..
tarball を RPM 環境に流し込んで、先ほど修正した spec ファイルで rpmbuild する。
(~/RPM/SOURCES/ の部分は環境に合わせて置き換えてくださいね)
$ cp dist/python-setuptools-0.6c9dev-r66389.tar.gz ~/RPM/SOURCES/ $ rpmbuild -ba build/bdist.linux-i686/rpm/SPECS/setuptools.spec
これで ~/RPM/RPMS/noarch/ 以下に python-setuptools の rpm が出来るので、後は yum なり rpm -ivh でインストールorアップデートすれば完了。
easy_install も正常に動作するようになる。ハズ。
パッケージ名を変更する部分は、もっと賢い方法があるかもしれないデス。