制作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 fwdssg@gmail.com --single
- 編輯debian/control
Source: zlib
Section: unknow
Priority: optional
Maintainer: ubuntu <fwdssg@gmail.com>
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