最近一版的 qBittorrent 更新之后,Deluge 所依赖的 libtorrent 变成了 1.1.5(libtorrent-rasterbar9 1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1),然而 Deluge 的双栈 IP 汇报是一件很玄学的事情,目前只有 libtorrent-rasterbar8 1.0.11-1~xenial~ppa1.1(也就是目前 Deluge PPA 上面的版本)才能实现对 U2 和 CMCT 的双栈 IP 汇报,因此需要做一些调整。
经过查询一些资料,发现 Deluge 通过 python-libtorrent 这个包实现对于 libtorrent 版本的绑定,该软件包的版本决定了底层使用的 libtorrent 版本。
先看一下 1.1.5 版的 libtorrent 安装后,系统上的软件包情况:
$ dpkg -l|grep libtorrent ii libtorrent-rasterbar8 1.0.11.1+git20170907.c074e87885-1ppa1~xenial1 amd64 C++ bittorrent library by Rasterbar Software ii libtorrent-rasterbar9 1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1 amd64 C++ bittorrent library by Rasterbar Software ii python-libtorrent 1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1 amd64 Python bindings for libtorrent-rasterbar ii qbittorrent 4.0.1.99~201711271728-6211-f977d12~ubuntu16.04.1 amd64 bittorrent client based on libtorrent-rasterbar with a Qt4 GUI
可以看到,python-libtorrent 和 libtorrent-rasterbar9 一样,使用了 1.1.5 的版本,那么如何降级呢?
经过 apt-cache policy <package name>
命令的查询,我们发现其实是可以安装 1.0.11 版本的 python-libtorrent 的:
$ apt-cache policy python-libtorrent python-libtorrent: Installed: 1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1 Candidate: 1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1 Version table: *** 1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1 100 100 /var/lib/dpkg/status 1.0.11-1~xenial~ppa1.1 500 500 http://ppa.launchpad.net/deluge-team/ppa/ubuntu xenial/main amd64 Packages 1.0.7-1build1 500 500 http://mirrors.online.net/ubuntu xenial/universe amd64 Packages $ apt-cache policy libtorrent-rasterbar8 libtorrent-rasterbar8: Installed: 1.0.11.1+git20170907.c074e87885-1ppa1~xenial1 Candidate: 1.0.11.1+git20170907.c074e87885-1ppa1~xenial1 Version table: *** 1.0.11.1+git20170907.c074e87885-1ppa1~xenial1 100 100 /var/lib/dpkg/status 1.0.11-1~xenial~ppa1.1 500 500 http://ppa.launchpad.net/deluge-team/ppa/ubuntu xenial/main amd64 Packages 1.0.7-1build1 500 500 http://mirrors.online.net/ubuntu xenial/universe amd64 Packages $ apt-cache policy libtorrent-rasterbar9 libtorrent-rasterbar9: Installed: 1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1 Candidate: 1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1 Version table: *** 1.1.5+git20171122.a57ad00e15+patched-configure-1ppa1~xenial1 500 500 http://ppa.launchpad.net/qbittorrent-team/qbittorrent-stable/ubuntu xenial/main amd64 Packages 100 /var/lib/dpkg/status
从输出结果中可以看出,python-libtorrent 有三个版本,1.1.5 1.0.11 和 1.0.7,我们在这里需要 1.0.11 的版本。同时,为了保证依赖完整,我们需要安装相同版本的 libtorrent-rasterbar8,这个操作可以通过 apt-get install <package name>=<version name>
的命令完成。
之后,还需要做的一件事是方式 apt-get upgrade 的时候更新了我们已经降级的软件包。这个操作通过 apt-mark hold <package name>
完成,在执行了这个命令以后,我们可以看一下效果:
$ dpkg --get-selections|grep libtorrent libtorrent-rasterbar8 hold libtorrent-rasterbar9 install python-libtorrent hold
可以发现对应的软件包已经被锁定,重启 deluged 之后也成功降级到了 1.0.11 版本。
综上,解决方案如下:
apt-get install libtorrent-rasterbar8=1.0.11-1~xenial~ppa1.1 python-libtorrent=1.0.11-1~xenial~ppa1.1 apt-mark hold libtorrent-rasterbar8 python-libtorrent dpkg --get-selections|grep libtorrent
.deb 依赖包下载,以防 Deluge PPA 更新导致方法无效:https://down.gloriousdays.pw/Tools/Deluge-libtorrent-1.0.11.tar.xz