Linux製作deb套件如此簡單:Ubuntu的deb安裝套件檔案的內部組成分析與使用原理
Deb 文件是一種用於分發和安裝 Linux Debian 及其衍生發行版程式的存檔文件,通常包含應用程式資料。它們對於處理依賴項、桌面整合以及運行安裝前和安裝後腳本非常方便。與 Deb 格式類似的另一種套件格式是 Fedora 系列發行版常用的 rpm 檔案。
本文透過範例示範如何製作簡單的deb包,解釋了deb包內各文件的作用,以及安裝後如何生效和維護。
deb 套件剖析
deb 是一種常見的 Unix ar 檔案格式,內含應用程式和其他實用程式檔案。其中的關鍵組成部分是控製檔案(control),它包含了有關 deb 套件和安裝程式的重要資訊。
- 在內部,deb套件 包含了模擬 Linux 的典型檔案系統目錄結構的檔案集合,例如 /usr 、/usr/bin 、/opt等 。在安裝過程中,放置在其中一個目錄中的檔案將複製到實際檔案系統中的相同位置。例如 軟體包內的/usr/bin/binaryfile 這樣的二進位檔案將會安裝到系統的 /usr/bin/binaryfile。
- 在外部,所有 deb 套件檔案都遵循特定的命名約定:
_-_.deb
假設您要發布名為 mynano 的程序,版本 1.0,該程序是為 64 位元處理器(AMD64)構建的。您的 deb 檔名將類似於 mynano_1.0-0_amd64.deb
製作 deb 套件
我們已準備好生成包。請確保您的系統已安裝 dpkg-deb 工具(dpkg 軟體包提供)。稍後將使用dpkg-deb產生最終的deb套件。
(1) 建立工作目錄以存放包文件,並依照先前的命名約定進行命名。
mkdir mynano_1.0-1_amd64/
(2) 建立內部結構 將程式檔案放在目標系統上應安裝的位置。假設您希望將可執行檔安裝到:/usr/bin/
先建立目錄:
mkdir -p mynano_1.0-1_amd64/usr/bin/
mkdir指令的-p標誌將建立巢狀目錄,如果其中任意目錄不存在則會自動建立。然後將可執行檔複製到其中:
# 假设你开发的程序可执行文件为 ~/YourProjects/mynano/src/targets/release/mynano cp ~/YourProjects/mynano/src/targets/release/mynanomynano_1.0-1_amd64/usr/bin/
(3) 建立檔案control 此檔案位於DEBIAN目錄中(注意目錄名稱為大寫字母)
先建立資料夾:DEBIAN
mkdir mynano_1.0-1_amd64/DEBIAN
然後建立空檔案:control
touch mynano_1.0-1_amd64/DEBIAN/control
填寫control檔案內容:
Package: mynano Version: 1.0 Architecture: amd64 Maintainer: linuxlibs Description: 基于nano的自定义编辑器 Depends: nano (>= 5.0)
其中:
- Package– 程式名稱;
- Version– 程式版本;
- Architecture— 目標架構;
- Maintainer– 包裹維護負責人的姓名和電子郵件地址;
- Description– 程序的簡要說明。
- Depends- 本軟體包依賴的其他軟體包。
該檔案可能包含其他有用的字段,例如Depends指出deb套件的依賴項清單。那如果借助 apt 指令安裝 deb套件的時候,就會先安裝上 nano>=5.0版本的軟體包,再安裝 mynano。
(5) 最後一步:建立 deb 套件 如下呼叫dpkg-deb:
dpkg-deb --build --root-owner-group
在我們的範例中:
dpkg-deb --build --root-owner-group
這裡的 –root-owner-group 標誌讓所有 deb 套件內容都歸 root 使用者所有,這是標準方法。如果沒有這樣的標誌,所有檔案和資料夾的屬主都為您當前的用戶,但考慮到deb 軟體包將安裝到的系統中並不一定存在與您同名帳號,所以使用–root-owner-group更合理。
上面的指令將在工作目錄旁邊產生一個.deb的文件,或者如果包內有錯誤或遺失,則會列印錯誤。如果操作成功,就可以分發這個產生的 deb 包給他人了。
(6) 使用deb套件安裝到系統:可以看到,透過apt方式安裝我們製作的deb套件的時候,會自動安裝上依賴項:nano 軟體套件
# apt install ./mynano_1.0-1_amd64.deb 正在读取软件包列表... 完成 正在分析软件包的依赖关系树... 完成 正在读取状态信息... 完成 注意,选中 'mynano' 而非 './mynano_1.0-1_amd64.deb' 将会同时安装下列软件: nano 建议安装: hunspell 下列【新】软件包将被安装: mynano nano 升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 79 个软件包未被升级。 需要下载 280 kB/1,135 kB 的归档。 解压缩后会消耗 881 kB 的额外空间。 您希望继续执行吗? [Y/n] y 获取:1 /root/my-nano-editor-src/mynano_1.0-1_amd64.deb mynano amd64 1.0.0 [855 kB] 获取:2 https://mirrors.ustc.edu.cn/ubuntu jammy/main amd64 nano amd64 6.2-1 [280 kB] 已下载 280 kB,耗时 1秒 (422 kB/s) 正在选中未选择的软件包 nano。 (正在读取数据库 ... 系统当前共安装有 231799 个文件和目录。) 准备解压 .../archives/nano_6.2-1_amd64.deb... 正在解压 nano (6.2-1) ... 正在选中未选择的软件包 mynano。 准备解压 .../mynano_1.0-1_amd64.deb... 正在解压 mynano (1.0.0) ... 正在设置 nano (6.2-1) ... update-alternatives: 使用 /bin/nano 来在自动模式中提供 /usr/bin/editor (editor) update-alternatives: 使用 /bin/nano 来在自动模式中提供 /usr/bin/pico (pico) 正在设置 mynano (1.0.0) ... 正在处理用于 install-info (6.8-4build1) 的触发器 ... 正在处理用于 man-db (2.10.2-1) 的触发器 ... Scanning processes... Scanning processor microcode... Scanning linux images...
(7) 【非必須】卸載安裝的軟體 mynano:
# apt remove mynamo -y 正在读取软件包列表... 完成 正在分析软件包的依赖关系树... 完成 正在读取状态信息... 完成 下列软件包将被【卸载】: mynano 升级了 0 个软件包,新安装了 0 个软件包,要卸载 1 个软件包,有 79 个软件包未被升级。 解压缩后会消耗 0 B 的额外空间。 您希望继续执行吗? [Y/n] y (正在读取数据库 ... 系统当前共安装有 231872 个文件和目录。) 正在卸载 mynano (1.0.0) ...
(8) 【非必須】查詢 mynano_0.1-1_amd64.deb 的依賴關係:dpkg -I ./mynano*deb
以上製作deb套件的方式,還有哪些可改進的地方:
以上是Linux製作deb套件如此簡單:Ubuntu的deb安裝套件檔案的內部組成分析與使用原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

CentOS 和 Ubuntu 的關鍵差異在於:起源(CentOS 源自 Red Hat,面向企業;Ubuntu 源自 Debian,面向個人)、包管理(CentOS 使用 yum,注重穩定;Ubuntu 使用 apt,更新頻率高)、支持週期(CentOS 提供 10 年支持,Ubuntu 提供 5 年 LTS 支持)、社區支持(CentOS 側重穩定,Ubuntu 提供廣泛教程和文檔)、用途(CentOS 偏向服務器,Ubuntu 適用於服務器和桌面),其他差異包括安裝精簡度(CentOS 精

CentOS 安裝步驟:下載 ISO 映像並刻錄可引導媒體;啟動並選擇安裝源;選擇語言和鍵盤佈局;配置網絡;分區硬盤;設置系統時鐘;創建 root 用戶;選擇軟件包;開始安裝;安裝完成後重啟並從硬盤啟動。

CentOS將於2024年停止維護,原因是其上游發行版RHEL 8已停止維護。該停更將影響CentOS 8系統,使其無法繼續接收更新。用戶應規劃遷移,建議選項包括CentOS Stream、AlmaLinux和Rocky Linux,以保持系統安全和穩定。

CentOS 已停止維護,替代選擇包括:1. Rocky Linux(兼容性最佳);2. AlmaLinux(與 CentOS 兼容);3. Ubuntu Server(需要配置);4. Red Hat Enterprise Linux(商業版,付費許可);5. Oracle Linux(與 CentOS 和 RHEL 兼容)。在遷移時,考慮因素有:兼容性、可用性、支持、成本和社區支持。

Docker利用Linux內核特性,提供高效、隔離的應用運行環境。其工作原理如下:1. 鏡像作為只讀模板,包含運行應用所需的一切;2. 聯合文件系統(UnionFS)層疊多個文件系統,只存儲差異部分,節省空間並加快速度;3. 守護進程管理鏡像和容器,客戶端用於交互;4. Namespaces和cgroups實現容器隔離和資源限制;5. 多種網絡模式支持容器互聯。理解這些核心概念,才能更好地利用Docker。

如何使用 Docker Desktop? Docker Desktop 是一款工具,用於在本地機器上運行 Docker 容器。其使用步驟包括:1. 安裝 Docker Desktop;2. 啟動 Docker Desktop;3. 創建 Docker 鏡像(使用 Dockerfile);4. 構建 Docker 鏡像(使用 docker build);5. 運行 Docker 容器(使用 docker run)。

CentOS 停止維護後,用戶可以採取以下措施應對:選擇兼容髮行版:如 AlmaLinux、Rocky Linux、CentOS Stream。遷移到商業發行版:如 Red Hat Enterprise Linux、Oracle Linux。升級到 CentOS 9 Stream:滾動發行版,提供最新技術。選擇其他 Linux 發行版:如 Ubuntu、Debian。評估容器、虛擬機或云平台等其他選項。

VS Code 系統要求:操作系統:Windows 10 及以上、macOS 10.12 及以上、Linux 發行版處理器:最低 1.6 GHz,推薦 2.0 GHz 及以上內存:最低 512 MB,推薦 4 GB 及以上存儲空間:最低 250 MB,推薦 1 GB 及以上其他要求:穩定網絡連接,Xorg/Wayland(Linux)
