Linux 之 deb 包的生成、安裝和卸載
deb
-
DEB 是 Debian 軟件包格式的文件擴展名,是 Unixar 的標准歸檔,將包文件信息以及包內容,經過 gzip 和 tar 打包而成。
-
deb 基於 tar 包,因此本身會記錄文件的權限以及所有者/用戶組。
-
deb 包組成部分:
-
數據包——包含實際的安裝的程序數據,文件名為 data.tar.XXX;在安裝過程中,改包里的數據會被直接解壓到根目錄(/),因此在打包之前需要根據文件所在位置設置好相應的文件目錄樹。如下:
-
安裝信息及控制腳本包——包含deb的安裝說明,標識,腳本等,文件名為 control.tar.gz;一般有5個文件:control,用於記錄軟件標識,版本號,平台,依賴信息等數據;preinst,在解包data.tar.gz前運行的腳本;postinst,在解包數據后運行的腳本;prerm,卸載時,在刪除文件之前運行的腳本;postrm,在刪除文件之后運行的腳本。如下:
package: package-name version: 1.0.0-2021.05.20 section: Software architecture: arm64 maintainer: lsm description: some package description
- deb文件的二進制數據,包括文件頭等信息,一般看不到,在某些軟件中打開可以看到。
-
control字段信息說明
- package:程序名稱,中間不能有空格
- version:軟件版本
- description:程序說明
- section:軟件類別,utils,net,mail,text,x11
- priority:軟件對於系統的重要程度,required,standard,optional,extra等
- essential:是否是系統最基本的軟件包,yes/no,若為yes,則不允許卸載(除非強制性卸載)
- architecture:軟件所支持的平台架構,i386,arm64,amd64,m68k,sparc,alpha,powerpc等
- maintainer:維護者信息
- source:軟件包的源代碼名稱
- depends:軟件所依賴的其他軟件包和庫文件,若依賴多個軟件包和庫文件,采用逗號隔開
- pre-depends:軟件安裝前必須安裝、配置依賴性的軟件包和庫文件,常用於必須的預運行腳本需求
- recommends:推薦安裝的其他軟件包和庫文件
- suggests:建議安裝的其他軟件包和庫文件
打包
// 包的所有者和用戶組最好為root
dpkg -b MyProject MyProject-linux_arm64.deb
安裝
dpkg -i MyProject-linux_arm64.deb
卸載
dpkg -P myproject