制作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

05-08 08:41