linux的程序打包deb

deb安裝包

deb是Unix系統(其實主要是Linux)下的安裝包,基于 tar 包,因此本身會記錄文件的權限(讀/寫/可執行)以及所有者/用戶組。
由于 Unix 類系統對權限、所有者、組的嚴格要求,而 deb 格式安裝包又經常會涉及到系統比較底層的操作,所以權限等的設置尤其重要。

deb組成

查看deb包含哪些文件

兩個命令結果都是一樣的,查看deb安裝包內有哪些文件。

dpkg -c xxx.deb // 安裝前根據deb文件查看
dpkg -L debname // 安裝后根據軟件名稱查看

deb包本身有三部分組成

組成詳細
數據包包含實際安裝的程序數據,文件名為“data.tar.XXX”
安裝信息及控制包包含deb的安裝說明,標識,腳本等,文件名為“control.tar.gz”
二進制數據包含文件頭等信息,需要特殊軟件才能查看

deb本身可以使用不同的壓縮方式. tar格式并不是一種壓縮格式,而是直接把分散的文件和目錄集合在一起,并記錄其權限等數據信息。之前提到過的 data.tar.XXX,這里 XXX 就是經過壓縮后的后綴名. deb默認使用的壓縮格式為gzip格式,所以最常見的就是 data.tar.gz。常有的壓縮格式還有 bzip2 和 lzma,其中 lzma 壓縮率最高,但壓縮需要的 CPU 資源和時間都比較長

詳細介紹:

  • data.tar.gz
    包含的是實際安裝的程序數據,而在安裝過程中,該包里的數據會被直接解壓到根目錄(即/),因此在打包之前需要根據文件所在位置設置好相應的文件/目錄樹。
  • control.tar.gz
    則包含了一個deb安裝的時候所需要的控制信息。
控制文件描述
control用了記錄軟件標識,版本號,平臺,依賴信息等數據
preinst在解包data.tar.gz前運行的腳本
postinst在解包數據后運行的腳本
prerm卸載時,在刪除文件之前運行的腳本
postrm在刪除文件之后運行的腳本

備注:
- inst是install(安裝)的縮寫
- pre是表示XX之前的前綴
- post是表示XX之后的前綴
- rm是remove(移除)的縮寫

安裝&移除

deb包安裝

dpkg -i xxx.deb

deb包移除

dpkg -r debname
  • 查看某個文件屬于哪個安裝包
dpkg -S filepath
  • 指定安裝路徑
dpkg -X xxx.deb dirname

制作deb流程

  1. 準備好可執行的二進制文件

這個二進制文件要可執行,提前要考慮兼容性,如果程序有目錄要完整的一個程序目錄。
這里只拿一個單獨的二進制文件打包。測試文件下載

  1. 新建軟件文件夾
    我們測試名稱為MyDeb

  2. 新建一個名為DEBIAN文件夾
    此文件夾內存放控制信息

在DEBIAN里新建一個文本文檔, 名為control, 編碼為utf-8, 內容如下所示:

例子:

Package: MyDeb
Version: 1.0.0-2018.01.11
Section: Software
Priority: optional
Depends:
Suggests:
Architecture: i386
Installed-Size: 4096
Maintainer: gatieme
Provides: bioinfoserv-arb
Description: xxx

我們創建一個簡單的。

package: MyDeb                                     #安裝包的名稱
version: 1.0.0                                     #版本
architecture: i386                                 #平臺
maintainer: young                                  #維護者
description: you can description the deb           #描述安裝包的信息

然后我們創建對應的二進制包安裝完成后的路徑信息放置在DEBIAN的同級目錄下,也就是把當前的目錄當成根(“/”)目錄,制作完成后安裝時,當前目錄下除了DEBIAN目錄的其他目錄都會被默認安裝到系統的“/”目錄下。

下面是一個程序目錄的例子。

|——mydeb|————usr|————bin|——可執行文件(安裝后,就在你的/usr/bin生成相應的可執行文件)|————share|————icons |——deb.png(圖標文件生成到/usr/share/icons/)|————applications                           |——deb.desktop(桌面文件生成到/usr/share/applications/)|————DEBIAN(大寫、用來制作打包文件)|————control(描述deb包的信息必須的文件)

完整實驗例子目錄結構:

MyDeb
├── DEBIAN
│  └── control
├── opt
│  └── MyDeb
│      ├── heart
│      └── heart.desktop
└── usr├── bin│  └── heart -> /home/vincent/桌面/MyDeb/opt/MyDeb/heart└── share├── applications│  └── heart.desktop└── icons└── heart_98.png8 directories, 6 files

打包

sudo dpkg -b MyDeb/ MyDeb-linux-amd64.deb

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536153.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536153.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536153.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

利用pyinstaller打包python3程序

pyInstaller是一款用于將pyhon程序打包成exe文件的工具,pyInstaller不是一個python的包, 只需要把pyInstaller的文件下載下來放到任意為止都可以,也就是說pyInstaller相當于獨立出來專門干打包python的工具,這貨是工具不是庫&…

C++11新特性之左值右值及移動語句與完美轉發

C左值右值左值和右值的由來什么是左值和右值左值右值的本質引用左值引用右值引用 移動語句與完美轉發移動語句實現移動構造函數和轉移賦值函數stdmove完美轉發Perfect Forwarding C左值右值 自從C11發布之后,出現了一個新的概念,即左值和右值&#xf…

nginx中的nginx.conf.default配置

#運行用戶 user nobody; #啟動進程,通常設置成和cpu的數量相等 worker_processes 1;#全局錯誤日志及PID文件 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;#工作模式及連接數上限 events {…

C++11新特性之泛型編程與模板

模板泛型編程函數模板普通函數模板成員函數模板函數模板重載模板函數的特化 類模板類模板中的成員函數模板類模板的特化與偏特化類模板成員特化 模板 Template所代表的泛型編程是C語言中的重要組成部分。 泛型編程 泛型編程(Generic Programming)是…

WordPress更改“固定鏈接”后 頁面404原因及解決方法(Nginx版)

網上盛傳的方法是: 在 /etc/nginx/nginx.conf文件的 loction / {} 中添加 if (-f $request_filename/index.html){rewrite (.*) $1/index.html break; }if (-f $request_filename/index.php){rewrite (.*) $1/index.php; }if (!-f $request_filename){rewrite (.*…

C++類型萃取之type_traits和type_info

類型萃取類型判斷typeiddecltype和declvalenable_if 類型萃取 通過type_traits可以實現在編譯期計算、查詢、判斷、轉換和選擇,增強了泛型編程的能力,也增強了我們程序的彈性,讓我們能夠在編譯期就能夠優化改進甚至排錯,進一步提…

使用Phpstorm實現遠程開發

Phpstorm除了能直接打開本地文件之外,還可以連接FTP,除了完成正常的數據傳遞任務之外,還可以進行本地文件與服務端文件的異同比較,同一文件自動匹配目錄上傳,下載,這些功能是平常IDE,FTP軟件中少…

什么是遞歸函數?

文章目錄遞歸函數遞歸例題特點效率優點遞歸函數 遞歸 遞歸就是一個函數在它的函數體內調用它自身。執行遞歸函數將反復調用其自身,每調用一次就進入新的一層。遞歸函數必須有結束條件。 當函數在一直遞推,直到遇到墻后返回,這個墻就是結束條…

apache ab壓力測試報錯

今天用apache 自帶的ab工具測試&#xff0c;當并發量達到1000多的時候報錯如下&#xff1a; [rootaa~]# This is ApacheBench, Version 2.3 <Revision:655654> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Sof…

ngOnInit與constructor的區別

前世今生 Angular會管理一個組件的生命周期,包括組件的創建、渲染、子組件創建與渲染、當數據綁定屬性變化時的校驗、DOM移除之前毀銷。 Angular提供組件生命周期鉤子便于我們在某些關鍵點發生時添加操作。 組件生命周期鉤子 指令和組件實例有個生命周期用于創建、更新和銷…

Nginx配置性能優化

大多數的Nginx安裝指南告訴你如下基礎知識——通過apt-get安裝&#xff0c;修改這里或那里的幾行配置&#xff0c;好了&#xff0c;你已經有了一個Web服務器了。而且&#xff0c;在大多數情況下&#xff0c;一個常規安裝的nginx對你的網站來說已經能很好地工作了。然而&#xf…

Angular的@Output與@Input理解

@Output與@Input理解 Output和Input是兩個裝飾器,是Angular2專門用來實現跨組件通訊,雙向綁定等操作所用的。 @Input Component本身是一種支持 nest 的結構,Child和Parent之間,如果Parent需要把數據傳輸給child并在child自己的頁面中顯示,則需要在Child的對應 directiv…

騰訊云CDN配置

第一步&#xff1a;先去領取騰訊云CDN免費包23333333 以下為正式步驟&#xff1a; 在這里體現大家&#xff0c;域名一定要備案&#xff0c;另外要明白域名如何解析 前邊問題不大&#xff0c;一切跟著騰訊云的套路來即可&#xff0c;需要注意的是網上后優化的配置大家可以自行…

Promise.all的深入理解

異步之Promise Promise.all Promise.all接收的promise數組是按順序執行的還是一起執行的&#xff0c;也就是說返回的結果是順序固定的嗎&#xff1f; 目前有兩種答案&#xff1a; 應該是同步執行的&#xff0c;但是這樣就有效率問題了&#xff0c;如果想改成異步執行怎么辦…

wordpress后臺無法登錄問題

之前給自己的WordPress加了個標簽云&#xff0c;今天登錄的時候突然發現網站后臺進不去了&#xff0c;無奈各種找材料&#xff0c;這算是皇天不負有心人&#xff0c;總算是給我找到了&#xff0c;現在做一下記錄 登錄不上的原因在于&#xff1a;wp-admin和wp-admin/是不同的&a…

深入理解Angular訂閱者模式

深入理解Angular訂閱者模式 如果正在讀此篇文章的你學過java,c++等面向對象語言,知道兩個模式觀察者模式和訂閱者模式,分別為:Observer pattern,Pub-sub pattern(Subscriber) 接下來我們結合Angular來說明這兩個模式。 Observer pattern This is a pattern of developme…

Ubuntu中安裝python3

通過命令行安裝Python3.*&#xff0c;只需要在終端中通過命令行安裝即可&#xff1a; sudo apt-get install python3 Ubuntu的底層大多數采用的是Python2.*&#xff0c;Python3和Python2是互相不兼容的&#xff0c;完全沒法通用的&#xff08;也不知道他們怎么想的o(TヘTo)&a…

Angular深入理解之指令

Angular深入理解之指令 指令有什么功能 Attribute directives 屬性指令Structural directives 結構指令自定義屬性指令自定義結構指令Angular深入理解之指令 對于初學Angular的同學來說,指令無疑是最痛苦的,那么我們怎么使用自定義的指令呢?指令到底怎么實現呢?為什么要寫…

windows下Apache虛擬主機配置

找到host文件&#xff1a;C:\Windows\System32\drivers\etc\hosts 在hosts這么增加&#xff1a; 127.0.0.1 666.666.com 127.0.0.1 777.777.com 修改httpd.conf文件&#xff1a; 打開文件&#xff1a;xxx\xampp\apache\conf\httpd.conf 找到#LoadModule vhost_…

Angular深入理解基本組成

Angular深入理解基本組成 在講指令時,我們先來了解一下Angular的基本概念和結構。 Module 模塊 Angular 是模塊化的.Modules 導出 classes, function, values , 以便在其他模塊導入使用.angular應用由模塊組成,每個模塊都做此模塊相關的事情組件、方法、類、服務等,他們都…