Debian Buster Aarch64 编译运行 qBittorrent

Make something !

qBittorrent是最流行的开源BitTorrent客户端之一,树莓派中查看apt源中只有编译好的旧版,那么如何在Aarch64平台的Debian 10 (Buster)编译运行最新稳定版呢?

选择一个发行版本

qBittorrent Releases

1
2
3
4
5
#以4.2.1版本为例
wget https://github.com/qbittorrent/qBittorrent/archive/release-4.2.1.tar.gz

#解压
tar xf qBittorrent-release-4.2.1.tar.gz

安装依赖

1
sudo apt install build-essential pkg-config automake libtool libc6-dev libboost-dev libboost-system-dev libboost-chrono-dev libboost-random-dev libssl-dev qtbase5-dev qttools5-dev-tools libqt5svg5-dev zlib1g-dev

一般来说在新机器上不会出现问题,但是版本冲突的问题是经常发生的,这时候需要aptitude这个工具来解决依赖冲突问题

1
2
sudo apt install aptitude
sudo aptitude install ***

另外qBittorrent需要一个核心库libtorrent-rasterbar,同样需要编译

libtorrent Releases

这里选择最新的发行版本1.2.4(虽然可能会不稳定,但是头铁

1
2
wget https://github.com/arvidn/libtorrent/releases/download/libtorrent-1_2_4/libtorrent-rasterbar-1.2.4.tar.gz
tar xf libtorrent-rasterbar-1.2.4.tar.gz

也可以使用git

1
2
3
4
git clone https://github.com/arvidn/libtorrent.git
cd libtorrent
# select the latest release tag
git checkout $(git tag | grep libtorrent-1_2_ | sort -t _ -n -k 3 | tail -n 1)

编译libtorrent

1
2
3
4
5
6
7
8
9
10
11
#首先编译libtorrent

#arm
./configure --disable-debug --enable-encryption --with-boost-libdir=/usr/lib/arm-linux-gnueabihf --with-libiconv CXXFLAGS="-std=c++14"

#aarch64
./configure --disable-debug --enable-encryption --with-boost-libdir=/usr/lib/aarch64-linux-gnu --with-libiconv CXXFLAGS="-std=c++14"

#自动并行
make -j$(nproc)
sudo make install

这里可能会出现内存不足的问题,需要手动设置交换空间或者取消并行:

1
2
3
4
5
6
7
8
sudo dd if=/dev/zero of=/.swapfile bs=1M count=1024
sudo mkswap /.swapfile
sudo swapon /.swapfile
sudo swapon -s # check swap is activated
make
# assuming the prior command succeeded
sudo swapoff /.swapfile
sudo rm /.swapfile

环境变量问题

需要确保LD_LIBRARY_PATH设置正确

1
2
3
4
5
#创建配置文件
sudo vim /etc/ld.so.conf.d/libtorrent.conf

#内容如下
/usr/local/lib

然后刷新动态库

1
sudo ldconfig

查看环境变量

1
env | grep LD_LIBRARY_PATH

如果没有找到的话,需要自己添加

1
export LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH}

编译qBittorrent

接下来编译qBittorrent,这里预设了disable-gui,即编译无图形化界面的qBittorrent-nox

1
2
3
4
5
6
7
8
#arm
./configure --disable-gui --enable-systemd --with-boost-libdir=/usr/lib/arm-linux-gnueabihf CXXFLAGS="-std=c++14"

#aarch64
./configure --disable-gui --enable-systemd --with-boost-libdir=/usr/lib/aarch64-linux-gnu CXXFLAGS="-std=c++14"

make -j$(nproc)
sudo make install

首次启动会有条款确认,y确认即可:

1
qbittorrent-nox

Systemd

在Linux中计划任务是必不可少的。

在一些书中提到cron和修改/etc/rc.local的方法已经不是最提倡的方法了,这里使用systemd来进行开机自启(以下均为root权限):

1
vim /etc/systemd/system/qbittorrent.service

如果对于在公网环境下使用root用户运行qBittorrent的安全性存疑的话,可以新建用户再进行如下设置

1
useradd -rm qbittorrent -G pi -s /usr/sbin/nologin

输入以下内容,注意用户名root是否需要改为上面设置的:

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=qBittorrent Daemon Service
After=network.target

[Service]
LimitNOFILE=512000
User=root
ExecStart=/usr/local/bin/qbittorrent-nox
ExecStop=/usr/bin/killall -w qbittorrent-nox

[Install]
WantedBy=multi-user.target

启用以上设置:

1
2
systemctl daemon-reload
systemctl enable qbittorrent.service

这样程序便作为系统服务自启动了

接下来使用systemctl来控制后台服务的运行即可。

如果使用无登录权限的用户qbittorrent第一次运行卡在条款确认界面,以下为解决方案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#使用root账户
sudo su
vim /etc/passwd
#找到qbittorrent的设置,将默认shell改为 /bin/bash 并保存

systemctl stop qbittorrent.service
su qbittorrent
qbittorrent-nox
#这时条款确认,输入 ‘y' 即可,然后退出
^C
exit
systemctl start qbittorrent.service
#登录ip:8080试下吧
#别忘了将用户qbittorrent的登录shell改回 /usr/sbin/nologin

其他

将下载路径的权限放开:

1
2
mkdir /home/Downloads
chmod 777 /home/Downloads

默认WebUI的地址(内可设置语言):

1
2
3
http://yourip:8080/
username: admin
password: adminadmin

控制:

1
2
3
4
systemctl stop qbittorrent.service
systemctl start qbittorrent.service
systemctl restart qbittorrent.service
systemctl status qbittorrent.service

种子档案和日志位置:

1
2
cd ~/.local/share/data/qBittorrent/BT_backup
cd ~/.local/share/data/qBittorrent/logs