制作deb包
方法一:checkinstall
checkinstall
的原理就是将make install
的内容放到一个临时目录然后打包,只要能执行make install
就能创建deb包,如果代码已经make install
了,需要先执行make uninstall
,不然会出现只打包库文件的软连接而没有打包库文件的情况。通过dpkg-deb -c
可以查看deb包的文件是否正常。
- 设置打包环境
sudo apt-get install checkinstall
- 制作deb包
checkinstall make install
- 检查deb包
dpkg-deb -c XX.deb
方法二: dpkg-buildpackage
- 设置打包环境
$ sudo apt-get install -y dh-make dpkg-dev devscripts
- 创建控制文件
$ wget http://zlib.net/zlib-1.2.8.tar.gz
$ tar xzf zlib-1.2.8.tar.gz
# 命令将在当前目录下生成debian目录
$ dh_make --createorig --copyright gpl3 --email [email protected] --single
- 编辑debian/control
Source: zlib
Section: unknow
Priority: optional
Maintainer: ubuntu <[email protected]>
Build-Depends: debhelper (>=9),autotools-dev
Standards-Version: 3.9.6
Homepage: http://zlib.net/
#Vcs-Git: git://anonscm.debian.org/collab-maint/zlib.git
#Vcs-Browser: https://anonscm.debian.org/cgit/collab-maint/zlib.git
Package: zlib
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: <insert up to 60 chars description>
<insert long description, indented with spaces>
Section | 软件的类别,常见的有utils、net、mail、text、x11等 |
Architecture | 软件包结构,如基于i386、amd64、m68k、sparc、alpha、powerpc等 |
- 编辑debian/postinst.ex
# deb安装完成时需要执行的脚本
$ mv postinst.ex postinst
$ sed -i '/ configure)/a\ echo -e \"zlib deb test\" > $HOME/zlib.log' postinst
- 编辑debian/rules
# zlib比较特殊很多参数不支持,所以需要自定义configure,用--prefix=/usr/local会报错也是坑
echo -e "override_dh_auto_configure:\n\t./configure --prefix=/usr" >> rules
- 制作deb包
$ cd zlib-1.2.8
# 自己测试完就不签名-uc -us
$ dpkg-buildpackage -rfakeroot -tc -uc -us -b
- 检查deb包
dpkg-deb -c XX.deb
dpkg-buildpackage使用技巧
- 编辑rules文件添加
export DEB_BUILD_MAINT_OPTIONS = hardening=-all
可以去掉编译时候自动添加的-Werror=XX
参数
参考资料
从源码构建deb包
为现有的二进制文件制作deb包
官方文档
为Debian和Ubuntu制作软件包
构建软件包
官方文档
官方文档
官方文档
官方文档
Linux 的源码安装工具 CheckInstall