每次在新机器上都要去跑一键安装脚本安装软件?甚至一键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):
最后,我只是想方便自己,我个人觉得这种打包方式太麻烦了,所以未完待续。。。
最新评论
5211314
能不能教我 一点不会