1 准备安装包
sudo apt-gt install build-essential dh-make devscripts
2 配置DEBEMAIL DEBFULLNAME
分别为源码发布者email和name
DEBEMAIL=myxuan475@126.com
DEBFULLNAME=myxuan
直接写到~/.bashrc 里面末尾
或者
cat>>~/.bashrc<<EOF
使用这个命令输入到~/.bashrc, 输入EOF退出编辑
然后执行~/.bashrc 立即生效
3 生成debian
只是第一次需要生成debian,以后可以放到源码里面去
单独创建build目录,不要在源码目录下。进入build目录,然后执行以下脚本:
project_name=$1
version=$2
srcdir=$3
mkdir -p ${project_name}-${version}
cd ${project_name}-${version}
dh_make --createorig -s -t $srcdir
- 说明
project_name 就是包名,version为版本号,中间一定要用’-‘隔开
srcdir 是源码目录 - 例子
比如,将上面脚本保存为gendebian.sh,放在build目录,然后执行 ./gendebian.sh package-name 1.0.1 ../package-dir
就会生成一个debian的目录,在build下生成的是package-name-0.1.0.orig.tar.xz 即源码压缩包。
4 改rules文件
在debian 下有个rules文件,需要改写:如下
#!/usr/bin/make -f
# See debhelper(7) (uncomment to enable)
# output every command that modifies files on the build system.
export DH_VERBOSE = 1
TARGET_NAME=$(shell dpkg-parsechangelog -S Source)
TARGET_CPU=$(shell dpkg-architecture -qDEB_TARGET_GNU_CPU)
# see FEATURE AREAS in dpkg-buildflags(1)
#export DEB_BUILD_MAINT_OPTIONS = hardening=+all
# see ENVIRONMENT in dpkg-buildflags(1)
# package maintainers to append CFLAGS
#export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic
# package maintainers to append LDFLAGS
export DEB_LDFLAGS_MAINT_APPEND = -Wl
%:
dh $@ --parallel --with autoreconf
# dh_make generated override targets
# This is example for Cmake (See https://bugs.debian.org/641051 )
#override_dh_auto_configure:
#dh_auto_configure -- # -DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH)
# Make sure the script returns 0
override_dh_auto_configure:
qmake $(SOURCE_DIR)/
override_dh_auto_build:
make -j4
override_dh_install:
sh debian/install.sh
override_dh_strip:
#dh_strip
override_dh_shlibdeps:
dh_shlibdeps -l$(shell pwd)/printer
override_dh_auto_clear:
其他照写,主要关注:
- override_dh_auto_configure
我们把这里改成执行qmake - override_dh_auto_build
使用make即可 - override_dh_install
实际可以使用make install,也可以自己写脚本放到指定位置。必须在debian目录下建立一个以包名命名的文件夹,将执行文件放这里。
比如希望安装的时候希望放在/usr/local/bin/ 下,那么可以直接写作:
override_dh_install:
cp target_dir/target debian/target/usr/local/bin/
如果有自己生成的库也一样。但是系统依赖的库,qt自带的库,不需要。他会自动写入control文件或shlibdeps 文件。
5 打包
dpkg-buildpackage -us -uc
最终在build下生成标准的deb的包。
第一次打包完成后需要把debian放到源码里面去,第二次打包的时候,直接拷贝过去,并且手动压缩.orig.tar.xz 。压缩包也可以是.orig.tar.gz ,名称格式为:
{package-name}_{version}.orig.tar.gz
然后运行 dch -v 0.1.0-2 修改发布版本和changelog.
然后再执行dpkg-buildpackage -us -uc