Deluge 1.3.15 需要 Python 2,但是由于 Python 2 已经停止支持,因此 Ubuntu 20.04 的官方源也逐渐在取消对这些旧版 Python 的支持。如果真的需要装一个老版本的话,就有很多东西需要自己编译。
首先整理一下需要的依赖:
- Deluge 1.3.15 需要 Python 2 以及一些 Python 2 的库,但是有些库已经不能直接通过官方源安装(在 PyPI 中仍然存在)
- Deluge 调用 libtorrent 的 Python binding
- libtorrent 的 Python Binding 基于 Boost.Python
- Ubuntu 20.04 的默认 Python 版本是 3.8,Boost.Python (1.71) 也基于 3.8 构建
那么为了正常运行 Deluge 1.3.15,需要做的事情有这些:
- 用 pip2 解决 Deluge 的 Python 依赖
- 单独编译基于 Python 2.7 的 Boost.Python
安装依赖:
# libtorrent apt install libboost-dev libboost-system-dev libboost-chrono-dev libboost-random-dev libssl-dev libgeoip-dev # Deluge apt install python2 python2-dev curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py python2 get-pip.py apt install python-mako python-chardet python-openssl python-pkg-resources python-xdg intltool librsvg2-common xdg-utils geoip-database pip install Twisted service-identity
编译 Boost.Python:
wget https://boostorg.jfrog.io/artifactory/main/release/1.71.0/source/boost_1_71_0.tar.gz tar xzvf boost_1_71_0.tar.gz apt purge libboost-python-dev libboost-python1.71-dev libboost-python1.71.0 ./bootstrap.sh --with-python=/usr/bin/python2 ./b2 --with-python checkinstall ./b2 install --with-python
如果要编译基于 Python 3 的版本,在 booststrap 的时候选择对应的 Python 解释器即可。
编译 libtorrent:
git clone https://github.com/arvidn/libtorrent.git libtorrent cd libtorrent git checkout RC_1_1 ./autotool.sh PYTHON_VERSION=2.7 ./configure --enable-python-binding --with-libiconv --disable-debug --enable-encryption --with-libgeoip=system --with-boost-python=boost_python27 make -j$(nproc) checkinstall ldconfig
注意这里通过 –with-boost-python 来指定 linker 使用的选项名(-lboost_python27)。
之后正常安装 Deluge 1.3.15 即可:
wget https://ftp.osuosl.org/pub/deluge/source/1.3/deluge-1.3.15.tar.xz tar xJvf deluge*.tar.xz python2 setup.py build python2 setup.py install --install-layout=deb
Reference
https://stackoverflow.com/questions/28830653/build-boost-with-multiple-python-versions