1.安装相应的编译工具
$ apt-get install dh-make dpkg-dev debhelper fakeroot build-essential
Docker中执行dh_make出现如下错误:
Cannot get username; neither LOGNAME nor USER is setin the environment!
解决方法:
$ export USER=root
2.制作tar包
$ tar --use-compress-program=pigz -cf xxx-10.1.0.tar.gz
注意,此时tar包是一个干净的包,没有debian目录,必须是调用完make clean后的目录。
这里使用了pigz进行压缩,对于特别大的文件,pigz可以有效的提高压缩效率,节省压缩时间。
3.执行dh_make
$ cd xxx-10.1.0
$ dh_make -e xxx@xxx.cn -f ../xxx-10.1.0.tar.gz
此时会生成debian目录,可以在control里面更改Build Depends,在rules里面更改make相关的参数。
4.执行dpkg-buildpackage
$ dpkg-buildpackage -uc -us
这样会自动完成所有从源代码包构建二进制包的工作,包括:
清理源代码树(debian/rules clean)
构建源代码包(dpkg-source -b)
构建程序(debian/rules build)
构建二进制包(fakeroot debian/rules binary)
制作 .dsc 文件
用 dpkg-genchanges 命令制作 .changes 文件。
5. 快速从构建
对于很大的软件包,在调试 debian/rules 的过程中你可能不想每次都对整个软件包进行重构建。
仅用于测试目的,你可以不重新构建源代码包而使用以下的方法创建 .deb 文件
$ fakeroot debian/rules binary
或者可以通过以下方法验证它是否能通过编译:
$ fakeroot debian/rules build
或者使用如下方式编译:
$ dpkg-buildpackage -nc -uc -us
这样不会每次执行清理命令,可以继续进行编译。