这种打包方法,基于上游源码本身有setup.py,本文拿deluge1.3.15的一个修改版演示。
首先肯定还是要安装fpm的,然后还需要装一个pip:
apt -y install ruby ruby-dev rubygems build-essential python-pip
使用gem安装fpm:
gem install fpm
使用pip安装setuptools(fpm打包python必须用到的依赖)
pip install --upgrade setuptools
创建工作目录/从上游下载源码解压:
mkdir -p build && cd build wget https://git.lala.im/imlala/Deluge1.3.15-SkipHashCheck-Docker/raw/branch/master/config/deluge-1.3.15.tar.gz tar -xzvf deluge-1.3.15.tar.gz
然后就可以用fpm打包了:
fpm -s python -t deb \ -m "imlala <1062951199@qq.com>" \ --url "https://www.lala.im" \ --description "bittorrent client written in Python/PyGTK" \ --post-install postinst.sh \ -d "python-twisted >= 18.9.0-3" \ -d "python-openssl >= 19.0.0-1" \ -d "python-setuptools >= 40.8.0-1" \ -d "python-xdg >= 0.25-5" \ -d "python-chardet >= 3.0.4-3" \ -d "python-libtorrent >= 1.1.11-2" \ -d "python-notify >= 0.1.1-4" \ -d "python-pygame >= 1.9.4.post1+dfsg-3" \ -d "python-glade2 >= 2.24.0-5.1+b1" \ -d "python-mako >= 1.0.7+ds1-1" \ -d "intltool >= 0.51.0-5" \ -d "xdg-utils >= 1.1.3-1" \ -d "geoip-database >= 20181108-1" \ -p deluge-skiphash_1.3.15_amd64.deb \ deluge-1.3.15/setup.py
注意上面的参数里面带了一个post-install,在一个deb包内,除了之前提过的control控制文件外,还有4个非常常用的文件,分别是preinst/postinst/prerm/postrm,这里的post-install即对应postinst,意思是在软件包安装完成之后要执行的脚本。
通过这个post-install,我们可以写一个bash脚本,创建deluge需要用到的systemd服务文件,然后自动启动这个服务。
类似下图这样的,自己随意发挥。。
fpm打的python包,包名一般都是python-xxxxx,例如这篇文章打包完成之后,实际的包名是python-deluge,如果是用dpkg安装的,要卸载的话指定包名是python-deluge而非deluge-skiphash。