deb包的文件結構:
deb包里面的結構:DEBIAN目錄 和 軟件具體安裝目錄(模擬安裝目錄)(如etc, usr, opt, tmp等)。
在DEBIAN目錄中至少有control文件,還可能有postinst(postinstallation)、postrm(postremove)、preinst(preinstallation)、prerm(preremove)、copyright (版權)、changlog (修訂記錄)和conffiles等。
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
(此處必須空一行再結束)
postinst文件:包含了軟件在進行正常目錄文件拷貝到系統后,所需要執行的配置工作。
prerm文件:軟件卸載前需要執行的腳本。
postrm文件:軟件卸載后需要執行的腳本。
制作deb包過程:
1. 制作如下目錄及文件
所有目錄及文件:
mydeb
|----DEBIAN
|-------control
|-------postinst
|-------postrm
|----boot
|----- mysoftware
在任意目錄下創建如上所示的目錄及文件
$ mkdir -p /home/mydeb # 在該目錄下存放生成deb包的文件以及目錄 $ mkdir -p /home/mydeb/DEBIAN #目錄名必須大寫 $ mkdir -p /home/mydeb/boot # 將文件安裝到/boot目錄下 $ touch /home/mydeb/DEBIAN/contro l # 必須要有該文件 $ touch /home/mydeb/DEBIAN/postinst # 軟件安裝完后,執行該Shell腳本 $ touch /home/mydeb/DEBIAN/postrm # 軟件卸載后,執行該Shell腳本 $ touch /home/mydeb/boot/mysoftware # 所謂的“軟件”程序,這里就只是一個空文件
control文件內容:
Package: mysoftware (軟件名稱,中間不能有空格) Version: 1 (軟件版本) Section: free (軟件類別) Prioritt: optional (軟件對於系統的重要性) Architecture: amd64 (軟件所支持的平台架構) Maintainer: xxx <> (打包人和聯系方式) Description: mydeb (對軟件的描述)
(此處必須空一行再結束)
postinst文件內容( 軟件安裝完后,執行該Shell腳本,一般用來配置軟件執行環境,必須以“#!/bin/sh”為首行,然后給該腳本賦予可執行權限:chmod +x postinst):
# !/bin/sh echo "my deb" >/home/mydeb.log
postrm文件內容( 軟件卸載后,執行該Shell腳本,一般作為清理收尾工作,必須以“#!/bin/sh”為首行,然后給該腳本賦予可執行權限:chmod +x postrm):
# !/bin/sh rm -rf /home/mydeb.log
2. 完成第一步的制作目錄及文件后可以給做好的mydeb目錄進行打包成.deb包
$ dpkg -b mydeb mydeb.deb #第一個參數為將要打包的目錄名,
#第二個參數為生成包的名稱
現在完成了deb包的制作。
安裝deb包:
$ dpkg -i mydeb.deb # 將imysoftware復制到/boot目錄下后,執行postinst
# postinst腳本在/home目錄下生成一個含有"mysoftware"字符的mydeb.log文件
卸載deb包:
$ dpkg -r mysoftware # 這里要卸載的包名為control文件Package字段所定義的 mysoftware。
# 將/boot目錄mysoftware刪除后,執行posrm,
# postrm腳本將/home目錄下的mydeb.log文件刪除
查看deb包是否安裝:
$ dpkg -s mysoftware # 這里要卸載的包名為control文件Package字段所定義的 mysoftware
查看deb包文件內容:
$ dpkg -c mydeb.deb
查看當前目錄某個deb包的信息:
$ dpkg --info mydeb.deb
解壓deb包中所要安裝的文件
$ dpkg -X mydeb.deb mydeb # 第一個參數為所要解壓的deb包,這里為 mydeb.deb
# 第二個參數為將deb包解壓到指定的目錄,這里為 mydeb
解壓deb包中DEBIAN目錄下的文件(至少包含control文件)
$ dpkg -e mydeb.deb mydeb/DEBIAN # 第一個參數為所要解壓的deb包,
# 這里為 mydeb.deb
# 第二個參數為將deb包解壓到指定的目錄,
# 這里為 mydeb/DEBIAN
