deb簡介
deb是Unix系統(其實主要是Linux)下的安裝包,基于 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 在删除檔案之後運作的腳本
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: mysoftware
Version: 2016-02-26
Section: free
Priority: optional
Depends: libssl.0.0.so, libstdc++2.10-glibc2.2
Suggests: Openssl
Architecture: i386
Installed-Size: 66666
Maintainer: Simon @ newdivide7037#gmail.com
Provides: mysoftware
Description: just for test
(此處必須空一行再結束)
複制
使用dpkg指令制作deb包
制作如下目錄及檔案:
control檔案内容:
postinst檔案内容:
# !/bin/sh
echo "my deb" >/home/mydeb.log
複制
postrm檔案内容:
# !/bin/sh
rm -rf /home/mydeb.log
複制
完成第一步的制作目錄及檔案後可以給做好的mydeb目錄進行打包成.deb包
$ dpkg -b mydeb mydeb.deb #第一個參數為将要打包的目錄名,
#第二個參數為生成包的名稱
複制
現在完成了deb包的制作。