deb包制作


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM