调整 Deluge 使用的 libtorrent-rasterbar 版本以实现双栈 IP 汇报

最近一版的 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

发表评论

电子邮件地址不会被公开。