We’ve just installed rdiff-backup on some of our older RedHat Enterprise Linux 64-bit servers. We decided to install the .tar.gz-distributions and you can build your own rpms from these source packages (I won’t cover that here). There are a few pitfalls you’ll have to avoid.
First: librsync needs to be built with the 64-bit lib directory as the standard linkage, and needs to be compiled as a shared module.
To do this, provide configure with a few hints:
./configure LDFLAGS=-L/usr/lib64 --enable-shared --enable-lib64
make installldconfig to be sure that your LD cache has been updated (make install should do this, but .. just to be sure.)
The “.. can not be used when making a shared object; recompile with -fPIC” error for librsync will occur if you build it without –enable-shared, while “/usr/lib/libpopt.so: could not read symbols: File in wrong format” will occur if you build the library with the standard 32 bit libraries.
After this rdiff-backup compiled as it should:
python setup.py install
After rdiff-backup builds it python module and other small items, you might have to run ldconfig again (if you get “ImportError: librsync.so.1: cannot open shared object file: No such file or directory”, try this):
If you still get the above error, check that the directory where librsync was installed is present in either one of the files in
/etc/ld.so.conf.d/ or in
/etc/ld.so.conf itself. After adding the path to the library directory (which by default will be
rdiff-backup should now (hopefully) work as expected.
3 thoughts on “Install rdiff-backup and librsync on RedHat Enterprise Linux 4”
I was compiling as a regular user and I had the same error but I couldn’t use ldconfig to fix it, so here’s what I did:
LD_RUN_PATH=$HOME/lib ./setup.py install –prefix=$HOME
Where did you get 64bit sources? I found these ones:
but sources do not have –enable-lib64 in configure file. I do not have Redhat.
It’s been a while, but I’m guessing we used the actual librsync source from the project itself: