OS / Linux / 制作 deb 包
一、deb 簡介
deb 是 debian 系列系統下的安裝包,基于 tar 包,因此本身會記錄文件的權限(讀 / 寫 / 可執行)以及所有者 / 用戶組。
由于 Unix 類系統對權限、所有者、組的嚴格要求,而 deb 格式安裝包又經常會涉及到系統比較底層的操作,所以權限等的設置尤其重要。
二、deb包使用方法
dpkg -c xxx.deb // 安裝前根據 deb 文件查看 dpkg -L debname // 安裝后根據包名查看 dpkg -i xxx.deb // 安裝 deb 包,如果提示錯誤,可以加參數 —force-all 強制安裝,但不推薦這樣做 dpkg -r debname // 移除 deb 包 dpkg -S filepath // 查看某個文件屬于哪個 deb 包 dpkg -X xxx.deb dirname // 釋放安裝內容到 dirname 目錄中 dpkg -e xxx.deb // 釋放控制信息到當前目錄下的 DEBIAN 子目錄中三、deb 包的數據組成
deb 包里面的結構:DEBIAN 目錄和軟件具體安裝目錄(模擬安裝目錄)(如etc、usr、opt、tmp等)。
在 DEBIAN 目錄中至少有 control 文件,還可能有 postinst(postinstallation)、postrm(postremove)、preinst(preinstallation)、prerm(preremove)、copyright、changlog (修訂記錄)和 conffiles 等。
控制文件描述
control:用了記錄軟件標識,版本號,平臺,依賴信息等數據。
preinst:在解包 data.tar.gz 前運行的腳本。
postinst:在解包數據后運行的腳本。
prerm:卸載時,在刪除文件之前運行的腳本。
postrm:在刪除文件之后運行的腳本。
1、control文件
描述軟件包的名稱(Package),版本(Version),描述(Description)等,是 deb 包必須劇本的描述性文件,以便于軟件的安裝管理和索引。為了能將軟件包進行充分的管理,可能還具有以下字段:
Section:申明軟件的類別,常見的有`utils’, `net’, `mail’, `text’, `x11′ 等;
Priority:申明軟件對于系統的重要程度,如`required’, `standard’, `optional’, `extra’ 等;
Essential:申明是否是系統最基本的軟件包(選項為 yes / no),如果是的話,這就表明該軟件是維持系統穩定和正常運行的軟件包,不允許任何形式的卸載(除非進行強制性的卸載)
Architecture:軟件包結構,如基于`i386′, ‘amd64’,`m68k’, `sparc’, `alpha’, `powerpc’ 等;
Source:軟件包的源代碼名稱;
Depends:軟件所依賴的其他軟件包和庫文件。如果是依賴多個軟件包和庫文件,彼此之間采用逗號隔開;
Pre-Depends:軟件安裝前必須安裝、配置依賴性的軟件包和庫文件,它常常用于必須的預運行腳本需求;
Recommends:這個字段表明推薦的安裝的其他軟件包和庫文件;
Suggests:建議安裝的其他軟件包和庫文件。
control文件完整示例:
Package: cmakeBaseQt Version: 1.0.0 Section: free Priority: optional Essential: no Architecture: amd64 Maintainer: xclsoftware@163.com Provides: xcl Description: Basic qt project(此處必須空一行再結束)四、使用 dpkg 命令制作 deb 包
制作如下目錄及文件:
postinst文件內容:
# !/bin/sh if [ "$1" = "upgrade" ] || [ "$1" = "install" ];thenecho "install" fipostrm文件內容:
# !/bin/sh if [ "$1" = "upgrade" ] ; thenecho "upgrade" elif [ "$1" = "remove" ] || [ "$1" = "purge" ] ; thenecho "remove" fi完成第一步的制作目錄及文件后可以給做好的 cmake_base_qt 目錄進行打包成 .deb 包
TARGET_NAME=cmake_base_qt ARCHITECTURE=amd64 VERSION=1.0.0cp ./code/build/${TARGET_NAME} ./package/etc/cmake_base_qt sudo dpkg-deb -b ./package ./${TARGET_NAME}-${ARCHITECTURE}-${VERSION}.debecho end現在完成了deb包的制作。
參考:linux下制作deb的方法總結 - 知乎
源代碼:GitHub - xuchanglong/cmake_base_qt: 提供最基本的使用cmake的打包工程,包括qrc、deb的制作。
(SAW:Game Over!)
總結
以上是生活随笔為你收集整理的OS / Linux / 制作 deb 包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cmake / aux_source_d
- 下一篇: cmake / target_** 中的