lala.im:在Debian10上打包qBittorrent-Enhanced-Edition

運維技術·lala.im · 2019-08-22 · 104 人浏览

原文地址:https://lala.im/6259.html,請支持原作者!該處僅作轉載。

每次在新机器上都要去跑一键安装脚本安装软件?甚至一键jio本都没有,要自己全手动?有没有一劳永逸的方法,只编译一次,终身使用?最原始的方法那就是打包了!
这篇文章介绍的打包方式是Debian维护者手册上推荐的,使用debhelper以及dh-make,这是目前可以分发/提交到官方存储库的一种打包方法。不过我的操作步骤可能有点问题(比较菜),如有错误欢迎提出。。
本次打包的软件是qBittorrent-Enhanced-Edition,这是qBittorrent的一个修改版,特色功能是默认屏蔽掉迅雷等辣鸡下载工具,Debian的官方存储库里面自然是木有的。
安装打包需要的工具和依赖:

apt -y install build-essential debhelper dh-make devscripts automake

在devscripts这个包里面其实包含了大量的依赖包(各种dev包)所以有时候很多包我们就不需要再重复安装了,针对本文而言,编译qBittorrent和libtorrent-rasterbar只需要安装下面这些:

apt -y install pkg-config libtool git \
libboost-dev libboost-system-dev libboost-chrono-dev \
libboost-random-dev libssl-dev libgeoip-dev zlib1g-dev \
qtbase5-dev qttools5-dev-tools libqt5svg5-dev

注:
1.每个软件/项目所需要的依赖大不相同,具体都需要些啥,得自行根据对应项目的介绍(Wiki)或者咨询相关作者得知。
2.在下面的这些步骤中,如果你想偷个懒,不想打包libtorrent-rasterbar,可以直接跑:

apt -y install libtorrent-rasterbar-dev

然后跳到qBittorrent打包环节即可。。
准备好打包环境后,现在我们开始着手打包libtorrent-rasterbar,首先创建工作目录:

mkdir -p build/libtorrent-rasterbar && cd build/libtorrent-rasterbar

然后从上游下载源码包/解压/进入源码目录:

wget https://github.com/arvidn/libtorrent/releases/download/libtorrent-1_1_13/libtorrent-rasterbar-1.1.13.tar.gz
tar -xzvf libtorrent-rasterbar-1.1.13.tar.gz
cd libtorrent-rasterbar-1.1.13

使用dh-make创建打包模板/环境:

dh_make -e [email protected] -f ../libtorrent-rasterbar-1.1.13.tar.gz

选择s,然后按y,之后你会发现在目录下多了一个debian目录:

範例
编辑控制文件,修改包的一些信息:

nano debian/control

如图所示,主要是包的维护者名字/邮箱/主页/描述等等:

範例
编辑rules文件(关键:)

nano debian/rules

因为libtorrent-rasterbar相对来说还算友好(没啥大坑。)在rules编写这块,我们只需要加入需要配置的参数即可:

--enable-encryption --with-libiconv --with-libgeoip=system CXXFLAGS=-std=c++11

如图所示:

範例
然后就可以使用debuild打包了,注意这里有个坑,这个libtorrent-rasterbar能够编译通过但test不过,所以我们直接关闭make test(从某种角度来说,也可以说是节约时间吧)

DEB_BUILD_OPTIONS=nocheck debuild -uc -us

如果debuild的过程中没有错误,那么稍等片刻,包就应该打好了。回到上级目录可以看到.deb格式的安装包。
同时这里因为我们接下来还需要打包qbittorrent,而qbittorrent又是依赖于libtorrent-rasterbar的,所以这里我们直接在打包机上安装上刚打包好的libtorrent-rasterbar:

範例
现在来打包qbittorrent,首先和之前一样创建工作目录:

cd
mkdir -p build/qbittorrent && cd build/qbittorrent

从上游拉取源码:

git clone https://github.com/c0re100/qBittorrent-Enhanced-Edition.git

这里需要注意的是,dh-make不允许目录含有大写字母,所以我们需要把目录重命名,并且命名规则最好是<包名>–<版本号>这样:

mv qBittorrent-Enhanced-Edition qbittorrent-enhanced-4.1.7.1

然后进入到源码目录

cd qbittorrent-enhanced-4.1.7.1

使用dh-make创建打包模板/环境,因为这个源码是从git拉取的,没有原生规范的源码包,所以这次用到了-n参数,表示这将会是一个本地包:

dh_make -e [email protected] -n

然后修改控制文件:

nano debian/control

这里需要注意的是,Package:后面的名字,必须改为qbittorrent-nox:

範例
接着修改rules:

nano debian/rules

qbittorrent就没有那么友好了,需要我们自己编写大量的rules,这里我给出一个目前可用的:

%:
    dh $@ --without autoreconf


override_dh_auto_configure:
    mkdir -p build-nox && cd build-nox && ../configure --prefix=/usr --disable-gui \
        --with-boost-libdir=/usr/lib/$(DEB_HOST_MULTIARCH)

override_dh_auto_build:
    dh_auto_build --builddirectory build-nox

override_dh_auto_install:
    sed -i '/STRIP/d' build-nox/src/Makefile
    dh_auto_install --builddirectory build-nox --destdir debian/qbittorrent-nox \
        -- INSTALL_ROOT=$(CURDIR)/debian/qbittorrent-nox

override_dh_auto_clean:
    dh_auto_clean --builddirectory build-nox

注:切记如果是你自己编写rules,这个文件内的所有缩进都只能用tab,不要去使用空格。

如图所示:
範例
终于可以开始打包了,因为这是本地包,注意这里我加了一个-b参数:

DEB_BUILD_OPTIONS=nocheck debuild -b -uc -us

打包完成,回到上级目录即可看到.deb格式的安装包:
範例

如何使用这两个包?首先把这两个deb安装包传到你的机器上(我在另一台Debian10上)使用下面的命令即可完成安装:

注意这里需要先安装libtorrent-rasterbar:

dpkg -i libtorrent-rasterbar_1.1.13-1_amd64.deb
apt -f install

之后才能安装qbittorrent:

dpkg -i qbittorrent-nox_4.1.7.1_amd64.deb
apt -f install

测试使用,OJBK没问题:
範例

哦对,对于普通用户来说,他们并不关心这些deb是如何制作成功并进入到各个发行版的仓库的,他们只关心能不能用apt安装成功然后开始使用。

但是你从这篇文章应该能够看出来打包一个deb不是件容易的事情,长期维护一个deb包更不是一件容易事。每一个打包者都是无私和伟大的(我除外!)你之所以能够轻松的通过apt安装上一个软件,那是因为后面有无数个默默无闻的打包者在日以继夜的工作着。

附上本文打包好的软件,你可以wget下载解压食用(仅支持Debian10):

qbittorrent-4.1.7.1(https://lala.im/wp-content/uploads/2019/08/qbittorrent-4.1.7.1.zip)

最后,我只是想方便自己,我个人觉得这种打包方式太麻烦了,所以未完待续。。。

運維技術 BT lala.im
Theme Jasmine by Kent Liao