deb 打包 安裝 解除安裝

2021-10-07 16:30:15 字數 3965 閱讀 2214

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...