我花了几个小时尝试配置表里不一执行自动远程备份到 Google Drive。此时,我可以肯定地说,我正处于自己的私人依赖地狱中。
使用我的发行版 (0.6.x) 附带的 Duplicity 版本时,我收到一个错误:
BackendException:Google Docs 后端需要 Google Data API Python 客户端库(请参阅http://code.google.com/p/gdata-python-client/)。
尽管我已经安装了 Google API Python 客户端。因此,我决定尝试升级 duplicity,但失败了:
x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/include/python2.7 -c duplicity/_librsyncmodule.c -o build/temp.linux-x86_64-2.7/duplicity/_librsyncmodule.o
duplicity/_librsyncmodule.c:26:22: fatal error: librsync.h: No such file or directory
#include <librsync.h>
^
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
因此,我决定尝试升级librsync
到最新的稳定版本 (2.0)。在解决了以下依赖关系后那,我最终得到了两者librsync
并duplicity
更新到它们的最新稳定版本。
因此,当我使用duplicity --version
,我现在得到了这立即出错:
Traceback (most recent call last):
File "/usr/local/bin/duplicity", line 71, in <module>
from duplicity import collections
File "/usr/local/lib/python2.7/dist-packages/duplicity/collections.py", line 32, in <module>
from duplicity import path
File "/usr/local/lib/python2.7/dist-packages/duplicity/path.py", line 43, in <module>
from duplicity import librsync
File "/usr/local/lib/python2.7/dist-packages/duplicity/librsync.py", line 30, in <module>
from . import _librsync
ImportError: librsync.so.2: cannot open shared object file: No such file or directory
答案1
librsync.h
然后得到
sudo apt-get install python-dev
sudo apt-get install librsync-dev
为我工作。
答案2
我可以通过将共享对象的路径添加librsync.so.2
到 来解决这个问题LD_LIBRARY_PATH
。在 Ubuntu 中,必须使用 来完成此操作ldconfig
:
sudo nano /etc/ld.so.conf.d/librsync.so.2.conf
librsync.so.2.conf:
/usr/local/lib
您现在必须重新加载 Ubuntu 的 ldconfig 缓存:
sudo ldconfig
答案3
pl.smith 和 alexw 的答案在这里都是正确的,但需要结合起来。我在 Ubuntu 16.04 LTS 上使用 pip 尝试将 duplicity 0.7.6 升级到 0.7.14 时收到了相同的错误。以下是我修复它们的方法:
安装必要的 librsync 头文件(默认情况下未安装):
sudo apt update sudo apt install librsync-dev
在 ld 缓存目录中为 librsync 库创建一个配置文件(如果该文件已存在,请跳过此步骤):
sudo touch /etc/ld.so.conf.d/librsync.so.2.conf
将包含 librsync 头文件的目录添加到 LD_LIBRARY_PATH 环境变量中:
sudo <your favorite text editor> /etc/ld.so.conf.d/librsync.so.2.conf
在此文件中添加
/usr/local/lib
一行。刷新
ldconfig
缓存:sudo ldconfig