deb 格式是 debian 系統(包含 debian 和 ubuntu )專屬安裝包格式。
dpkg 是 debian下的包管理工具,用來執行軟體包的打包、解包、安裝、解除安裝等命令。
執行環境:debian、ubuntu,國產作業系統 uos、銀河麒麟等。
本文將介紹以下幾點內容:
作為入門,首先以 hello world 程式為例,介紹如何將其可執行檔案打包、安裝到使用者指定目錄、軟體解除安裝。之後介紹 debian 的 preinst、postinst、prerm、postrm 指令碼,這些是軟體包安裝前後自動執行的可執行指令碼。最後對 deb 包管理工具 dpkg 的常用命令進行總結。
程式語言的入門都是 hello world 程式,下面就以此開始,介紹如何將其生成的可執行檔案進行打包、安裝到指定目錄、解除安裝。
c語言 helloworld.c **如下:
#include
intmain
(void
)
將**編譯生成可執行檔案 helloworld。
gcc helloworld.c -o helloworld
建立資料夾 myfirstdeb,並在該資料夾下建立子資料夾 debian、建立指定的安裝目錄。debian目錄下存放的是控制資訊control、以及軟體包安裝前後自動執行的可執行指令碼preinst、postinst、prerm、postrm(後續介紹)。其他目錄為軟體具體的安裝路徑,而在安裝過程中,包裡的資料會被直接解壓到根目錄(即/),因此在打包之前需要根據檔案所在位置設定好相應的檔案/目錄樹。
此時的目錄樹為:
|-- myfirstdeb
|-- debian
|-- control
|-- opt
|-- helloworld
control檔案記錄待發布的軟體包名,版本號,平台,維護者、描述資訊等資料,內容為:
package: myfirstdeb
version: 1.0.0
architecture: arm64
maintainer: wonderthink
description: this is my first deb package.
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
建議安裝的其他軟體包和庫檔案
以上完成了打包前準備工作,接下來執行打包、安裝、解除安裝操作。
在 myfirstdeb 同級目錄下進行打包,規範的包名格式為(包名、版本號、平台,中間以下劃線連線)package_version_architecture.deb,dpkg打包命令為:
dpkg -b myfirstdeb/ myfirstdeb_1.0.0_arm64.deb
myfirstdeb_1.0.0_arm64.deb 的安裝:
dpkg -i myfirstdeb_1.0.0_arm64.deb
安裝後在 /opt 目錄下有了 helloworld 可執行檔案。
解除安裝myfirstdeb 包(dpkg對包名的大小寫不敏感):
dpkg -r myfirstdeb
通過上述操作就簡單完成了 helloworld 可執行檔案的打包、安裝到指定目錄、解除安裝。接下來介紹 debian 的軟體包安裝前後自動執行的可執行指令碼。
debian 目錄下除了 control 檔案,還可以有 preinst、postinst、prerm、postrm 指令碼,這些是軟體包安裝前後自動執行的可執行shell指令碼,統稱為控制檔案。
控制檔案
描述control
用了記錄軟體標識,版本號,平台,依賴資訊等資料
preinst
pre-installation,在解包前執行的指令碼
postinst
post-installation,在解包後執行的指令碼
prerm
pre-removal,解除安裝時,在刪除檔案之前執行的指令碼
postrm
post-removal,在刪除檔案之後執行的指令碼
preinst
debian軟體包(".deb")解壓前執行的指令碼,為正在被公升級的包停止相關服務,直到公升級或安裝完成。
postinst
主要完成軟體包(".deb")安裝完成後所需的配置工作。通常,postinst 指令碼要求使用者輸入,和(或) 警告使用者如果接受預設值,應該記得按要求返回重新配置這個軟體。 乙個軟體包安裝或公升級完成後,postinst 指令碼驅動命令,啟動或重起相應的服務。
prerm
停止乙個軟體包的相關程序,要解除安裝軟體包的相關檔案前執行。
postrm
修改相關檔案或連線,和(或)解除安裝軟體包所建立的檔案。
打包:
dpkg -b myfirstdeb/ ***.deb # build,將資料夾myfirstdeb打deb包
安裝與解除安裝:
dpkg -i ***.deb # install,安裝deb軟體包
dpkg -r *** # remove,解除安裝軟體包
解包:
dpkg -x ***.deb extract/ #提取包的內容到資料夾 extract/ 下
dpkg -e ***.deb extract/debian #提取的控制資訊到資料夾 extract/debian 下
檢視deb軟體包資訊:
dpkg -i ***.deb # info,檢視deb軟體包的控制資訊
dpkg -c ***.deb # contents,檢視deb軟體包中包含的檔案結構
檢視已安裝的deb軟體包資訊:
dpkg -l *** # list,檢視***軟體包的資訊
dpkg -l *** # listfile,列出***軟體包安裝到系統中的檔案
dpkg -s *** # status,檢視***軟體包的控制資訊
[1] ubuntu中deb包詳解及打包教程
[2] linux的程式打包deb
[3] debian 的 preinst, postinst, prerm, 和 postrm 指令碼
Linux安裝 解除安裝
configure作用 是原始碼安裝軟體時配置環境用的 他根據你的配置選項和你的系統情況生成makefile檔案 為make 做準備 最常用的引數 configure prefix 作用 不指定prefix,則可執行檔案預設放在 usr local bin,庫檔案預設放在 usr local lib...
ruby 安裝解除安裝
首先執行以下命令 yum install ruby yum install ruby devel yum install rubygems gem update system gem install rdoc gem install rails gem install bundler gem sea...
監聽安裝解除安裝
android intent中提供了應用安裝,解除安裝 覆蓋的action intent.action package added intent.action media removed intent.action package replaced 所以我們自認為可以寫個broadcastrecei...