#1552 Issue closed: Missing library for duplicity: librsync.so.1 on Debian Testing

Labels: bug, fixed / solved / done, external tool

Lukey3332 opened issue at 2017-10-27 11:52:

  • rear version (/usr/sbin/rear -V):
    Relax-and-Recover 2.2 / Git

  • OS version (cat /etc/rear/os.conf or lsb_release -a):
    Distributor ID: Debian
    Description: Debian GNU/Linux testing (buster)
    Release: testing
    Codename: buster

  • rear configuration files (cat /etc/rear/site.conf or cat /etc/rear/local.conf):

OUTPUT=USB
USB_DEVICE=/dev/disk/by-label/REAR-000
BACKUP=DUPLICITY
BACKUP_PROG="duplicity"
DUPLICITY_PROG="/usr/bin/duplicity"
BACKUP_DUPLICITY_GPG_ENC_PASSPHRASE=$(cat /root/pass)
BACKUP_DUPLICITY_URL="file:///mnt/nas/luklap_duplicity/"
BACKUP_DUPLICITY_EXCLUDE=( '/proc' '/sys' '/run' '/tmp' '/dev/pts' '/dev/shm' '/dev/hugepages' '/dev/mqueue' '/mnt' '/var/lib/lxcfs' '/media' )
MOUNTPOINTS_TO_RESTORE="proc sys run tmp dev/pts dev/shm dev/hugepages dev/mqueue mnt mnt/freenet mnt/nas mnt/zram mnt/hdd var/lib/lxcfs media"
EXCLUDE_RECREATE=( "${EXCLUDE_RECREATE[@]}" "fs:/mnt/zram" )
  • Are you using legacy BIOS or UEFI boot?
    Legacy BIOS...

  • Brief description of the issue:
    duplicity is not working on recovery because of missing Library:
    ImportError: librsync.so.1: cannot open shared object file: no such file or directory

gozora commented at 2017-10-27 11:57:

Hi, this problem could be addressed by @jsmeix 's https://github.com/rear/rear/pull/1514/commits/8b1dab89f9dc835186f386c017c4e96f1b9515ca
Hence I'd recommend you to download ReaR master code and check if it works better for you.

V.

Lukey3332 commented at 2017-10-27 12:15:

Hi,
I just tried it, but on rescue creation, I get the following:

Copying files and directories
Copying binaries and libraries
Failed to copy '/usr/lib/librsync.so.1.0.2'
Failed to copy '/usr/lib64/librsync.so.1'
Failed to copy '/usr/lib64/libexpat.so.1'
Failed to copy '/lib/libexpat.so.1'
Failed to copy '/usr/lib/cruft'

And the Error stays the same...

jsmeix commented at 2017-10-27 12:19:

For background information see the related issue
https://github.com/rear/rear/issues/1533

We could "simply just blindly" exclude certain paths
in the recovery system from being verified
but it looks plain wrong to "simply just blindly"
ingore missing libraries in the recovery system
except
the third-party backup tool does "special things", cf
https://github.com/rear/rear/issues/1533#issuecomment-336624569
so that my "/bin/ldd $binary | grep 'not found'" test
results false alarm for certain binaries or libraries.

Lukey3332 commented at 2017-10-27 12:21:

Here is the relevant log output:

++ test -L /usr/lib/librsync.so.1.0.2
++ copy_lib /usr/lib/librsync.so.1.0.2
++ local lib=/usr/lib/librsync.so.1.0.2
++ create_missing_dirs /usr/lib/librsync.so.1.0.2
+++ dirname /usr/lib/librsync.so.1.0.2
++ local dir=/usr/lib
++ test -d /tmp/rear.pvDzXC6aiYb3WpM/rootfs//usr/lib
++ test -e /tmp/rear.pvDzXC6aiYb3WpM/rootfs//usr/lib/librsync.so.1.0.2
++ cp -v -a -f /usr/lib/librsync.so.1.0.2 /tmp/rear.pvDzXC6aiYb3WpM/rootfs//usr/lib/librsync.so.1.0.2
cp: cannot stat '/usr/lib/librsync.so.1.0.2': No such file or directory
++ LogPrintError 'Failed to copy '\''/usr/lib/librsync.so.1.0.2'\'''
++ Log 'Failed to copy '\''/usr/lib/librsync.so.1.0.2'\'''
+++ date '+%Y-%m-%d %H:%M:%S.%N '
++ local 'timestamp=2017-10-27 14:18:01.516572592 '

The Right Path (on debian) would be:
/usr/lib/x86_64-linux-gnu/librsync.so.1.0.2

jsmeix commented at 2017-10-27 12:25:

Then specify "The Right Path" for your particular case
in generic ReaR config variables like LIBS
or COPY_AS_IS (cf. default.conf).

jsmeix commented at 2017-10-27 12:31:

FWIW:
I am not a Debian user so that I know nothing
about Debian specific things and accordingly
I cannot fix Debian specific things.

gozora commented at 2017-10-27 12:35:

Just a blind guess, but you might try to add something like export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:$LD_LIBRARY_PATH into your local.conf.

V.

jsmeix commented at 2017-10-27 12:42:

Normally the RequiredSharedOjects() function in
usr/share/rear/lib/linux-functions.sh
should find all needed libraries for the programs
that get included in the recovery system.
The RequiredSharedOjects() function runs "ldd binary"
to get the needed libraries for the binary.
I don't know why the RequiredSharedOjects() function
does not get those libraries that are missing here.
A detailed analysis of the log file for "rear -d -D mkrescue"
could probably show the root cause.

Lukey3332 commented at 2017-10-27 12:51:

Adding the lib as LIBS in default.conf worked for me, thanks!
ldd might not work, because duplicity is written in python.

Here's the full log:
rear-luklap.log

Lukey3332 commented at 2017-10-27 19:22:

Oops, it should be
/usr/lib/x86_64-linux-gnu/librsync.so.1
instead of
/usr/lib/x86_64-linux-gnu/librsync.so.1.0.2
just noticed, sorry :/

gdha commented at 2017-10-31 09:54:

@Lukey3332 If you could verify this update corrects the situation?

Lukey3332 commented at 2017-10-31 19:40:

Yes, that fixed the missing Library issue, Thanks.


[Export of Github issue for rear/rear.]