CentOS5.4(64bit)にMercurialを入れようとしたらレポジトリに見つからない。
ちょっと調べてみたところ公式のレポジトリにはMercurialは入ってないらしい。
# yum search mercurial Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * addons: www.ftp.ne.jp * base: www.ftp.ne.jp * extras: www.ftp.ne.jp * updates: www.ftp.ne.jp Warning: No matches found for: mercurial No Matches found
野良パッケージにはあるらしいが、
そちらを使うと他の依存したものも野良パッケージから大量に導入されるそうなので、
ちょっとそれは避けてたい。
そんなわけでソースコードからインストールすることに。
Mercurial 1.5 source code
# wget http://mercurial.selenic.com/release/mercurial-1.5.tar.gz --2010-03-14 20:39:35-- http://mercurial.selenic.com/release/mercurial-1.5.tar.gz mercurial.selenic.com をDNSに問いあわせています... 173.11.57.243 mercurial.selenic.com|173.11.57.243|:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 200 OK 長さ: 2017153 (1.9M) [application/x-gzip] `mercurial-1.5.tar.gz' に保存中 100%[================================================>] 2,017,153 497K/s 時間 4.3s 2010-03-14 20:39:40 (455 KB/s) - `mercurial-1.5.tar.gz' へ保存完了 [2017153/2017153]
拾ってきた物を解凍。
# tar xvfz mercurial-1.5.tar.gz # cd mercurial-1.5 # ll 合計 120 -rw-r--r-- 1 root root 1663 3月 6 09:26 CONTRIBUTORS -rw-r--r-- 1 root root 17992 3月 6 09:26 COPYING -rw-r--r-- 1 root root 3580 3月 6 09:26 Makefile -rw-r--r-- 1 root root 236 3月 6 09:26 PKG-INFO -rw-r--r-- 1 root root 306 3月 6 09:26 README drwxr-xr-x 8 root root 4096 3月 6 09:26 contrib drwxr-xr-x 2 root root 4096 3月 6 09:26 doc -rwxr-xr-x 1 root root 774 3月 6 09:26 hg -rwxr-xr-x 1 root root 1251 3月 6 09:26 hgeditor drwxr-xr-x 6 root root 4096 3月 6 09:26 hgext -rw-r--r-- 1 root root 886 3月 6 09:26 hgweb.cgi -rw-r--r-- 1 root root 2279 3月 6 09:26 hgwebdir.cgi drwxr-xr-x 2 root root 4096 3月 6 09:26 i18n drwxr-xr-x 6 root root 4096 3月 6 09:26 mercurial -rw-r--r-- 1 root root 10693 3月 6 09:26 setup.py drwxr-xr-x 5 root root 36864 3月 6 09:26 tests
次にインストール
# make install (中略) running build_ext building 'mercurial.base85' extension creating build/temp.linux-x86_64-2.4 creating build/temp.linux-x86_64-2.4/mercurial gcc -pthread -fno-strict-aliasing -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fPIC -I/usr/include/python2.4 -c mercurial/base85.c -o build/temp.linux-x86_64-2.4/mercurial/base85.o /usr/include/python2.4/Python.h:8 から include されたファイル中, mercurial/base85.c:12 から: /usr/include/python2.4/pyconfig.h:6:25: error: pyconfig-64.h: そのようなファイルやディレクトリはありません /usr/include/python2.4/Python.h:55 から include されたファイル中, mercurial/base85.c:12 から: /usr/include/python2.4/pyport.h:612:2: error: #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)." error: command 'gcc' failed with exit status 1 make: *** [build] エラー 1
調べてみたところpython-develがないことが原因らしい。
yumからpython-develをインストール
# yum install python-devel -y (中略) Running Transaction Installing : python-devel 1/1 Installed: python-devel.x86_64 0:2.4.3-27.el5 Complete!
これで再度インストール。
# make install (中略) running install_scripts copying build/scripts-2.4/hg -> /usr/local/bin changing mode of /usr/local/bin/hg to 755 make -C doc make[1]: ディレクトリ `/root/file/mercurial-1.5/doc' に入ります make[1]: `all' に対して行うべき事はありません. make[1]: ディレクトリ `/root/file/mercurial-1.5/doc' から出ます cd doc && make install make[1]: ディレクトリ `/root/file/mercurial-1.5/doc' に入ります for i in hg.1 hgignore.5 hgrc.5 ; do \ subdir=`echo $i | sed -n 's/^.*\.\([0-9]\)$/man\1/p'` ; \ mkdir -p /usr/local/share/man/$subdir ; \ install -c -m 644 $i /usr/local/share/man/$subdir ; \ done make[1]: ディレクトリ `/root/file/mercurial-1.5/doc' から出ます
最後の方を見るとインストール失敗に見えるけどちゃんとインストール出来ているらしい。
と思ったらなんかPATHがうまくいってないと怒られる。
# hg version abort: couldn't find mercurial libraries in [/usr/local/bin /usr/lib64/python24.zip /usr/lib64/python2.4 /usr/lib64/python2.4/plat-linux2 /usr/lib64/python2.4/lib-tk /usr/lib64/python2.4/lib-dynload /usr/lib64/python2.4/site-packages /usr/lib64/python2.4/site-packages/Numeric /usr/lib64/python2.4/site-packages/gtk-2.0 /usr/lib/python2.4/site-packages] (check your install and PYTHONPATH)
どうやらPYTHONPATHがうまく設定されていないのが原因らしい。
調べたところ64bit版だとMercurialのインストール先がちがうからだとか。
正しいPATHにPTHONPATHを設定して起動確認。
# export PYTHONPATH=/usr/local/lib64/python2.4/site-packages # hg Mercurial - 分散構成管理ツール 基本コマンド: add 指定ファイルの追加登録予約 annotate ファイル行毎のリビジョン情報表示 clone 既存リポジトリの複製 commit 指定ファイルないし全ての変更内容のリポジトリへの記録 diff 作業領域全体(ないし指定ファイル)の差分抽出 export 1つ以上のリビジョンに対するヘッダおよび変更内容の出力 forget 次回コミットにおける指定ファイルの登録除外 init 指定されたディレクトリでの新規リポジトリの作成 log リポジトリ全体ないしファイルの変更履歴の表示 merge 作業領域の内容と他のリビジョンのマージ pull 指定リポジトリからの変更履歴の取り込み push 指定リポジトリへの変更履歴の反映 remove 次回コミットにおける指定ファイルの登録除外 serve HTTP 経由でのリポジトリの公開 status 作業領域のファイル操作状況の表示 summary 作業領域状態の概要表示 update 作業領域の更新 全コマンドの一覧は "hg help" で、コマンド詳細は "hg -v" で表示されます
これで無事にインストールができた。
追加で毎回exportするのが面倒なのでbashrcに書こうかと思ったが、
本家のページではこんなふうに書いてあった
$ mv /var/hg/bin/hg /var/hg/bin/hg.py
http://mercurial.selenic.com/wiki/UnixInstall
$ cat > /var/hg/bin/hg <<\EOF
#!/bin/sh
PYTHONPATH=/var/hg/lib/python2.5/site-packages:${PYTHONPATH}
export PYTHONPATH
exec /var/hg/bin/hg.py "$@"
EOF
それを真似て設定。
# cp /usr/local/bin/hg /usr/local/bin/hg.py # vim /usr/local/bin/hg
中身の記述はほとんどそのまんま。
#!/bin/sh PYTHONPATH=/usr/local/lib64/python2.4/site-packages export PYTHONPATH exec /usr/local/bin/hg.py "$@"
一応の起動確認。
# hg version Mercurial - 分散構成管理ツール(バージョン 1.5) 著作権 (C) 2005-2010 Matt Mackall <mpm@selenic.com> 他 本製品はフリーソフトウェアです。頒布/改変の際はライセンス条項をお読み ください。市場適合性や特定用途への可否を含め、本製品は無保証です。
これでよし。