rdiff-backupのインストールにはlibrsyncが必要だった(追記:場合によってはmake AM_CFLAGS=-fPICする必要あり)
(2009/1/17追記)以下、けっこうハマってますが、要するに以下のポイントを押さえておけば良いらしいです
- librsyncがインストールされている
- librsyncはfPICのオプションでコンパイルされている
- python-devel(インクルード用のヘッダ)がインストールされている
実際にはわざわざメモするほどのことではないけどね、READMEにもこう↓書いてあるし。でも、./configure ; make ; make install しかできない人なのよ、私は*1
The setup script expects to find librsync headers and libraries in the default location, usually /usr/include and /usr/lib. If you want the setup script to check different locations, use the --librsync-dir switch or the LIBRSYNC_DIR environment variable. For instance, python setup.py --librsync-dir=/usr/local build instructs the setup program to look in /usr/local/include and /usr/local/lib for the librsync files.
あれ?Fedora Coreの古い奴だとPython.hが無いって言われるな
もっと古いCentOS4.4なら/usr/include/python2.3/Python.hがあるんだけど...python-develのパッケージが必要なのだろうな。いつの間にかCentOSの方にはインストールしていたのかもしれない。(/root/install.logを見ると、OSインストールの時点で含まれていた。anaconda-ks.cfgの設定のせいかな)
python-develがあればコンパイルは始められる。でも、64bit環境だとなにやらエラーが出る
(追記:64ビット環境であるかどうかは特に関係ないかも。shared libraryとしてlibrsyncがうまくコンパイルされてなかったという話なのでした)
もともと手元にあったのは、ちょっと古いバージョンだったのだが、最新のstable版のrdiff-backup-1.2.5でも下記のようなエラーになる(実際には3行)
gcc -pthread -shared build/temp.linux-x86_64-2.4/_librsyncmodule.o -lrsync -o build/lib.linux-x86_64-2.4/rdiff_backup/_librsync.so /パス/ld: /ライブラリのパス/librsync.a(buf.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC /ライブラリのパス/librsync.a: could not read symbols: Bad value
Object not found!には、librsyncのmakeの際に
# make AM_CFLAGS=-fPIC
まとめ:rdiff-backupをLinuxにインストールする際、librsyncがfPICオプションでコンパイルされてないとハマる
今回はrdiff-backupを動かすためだけにインストールしたからいいが、他のユーザも利用している場合には、インストール先をデフォルト以外の場所にするなどの注意が必要。
手順をまとめると、こんな感じかな
実際に全部インストールしなきゃいけないケースは稀だと思われる。
# rpm -aq | grep python-devel # yum install python-devel # rpm -aq | grep librsync # wget http://downloads.sourceforge.net/librsync/librsync-0.9.7.tar.gz?modtime=1097439809&big_mirror=0 # tar zxf librsync-0.9.7.tar.gz # cd librsync-0.9.7 # ./configure # make AM_CFLAGS=-fPIC # make install # ldconfig # cd .. # wget http://savannah.nongnu.org/download/rdiff-backup/rdiff-backup-1.2.5.tar.gz # tar zxf rdiff-backup-1.2.5.tar.gz # cd rdiff-backup-1.2.5 # python setup.py install