1. 程式人生 > 其它 >[Qt]-打包程式為Debian的deb格式的安裝包

[Qt]-打包程式為Debian的deb格式的安裝包

參考:https://segmentfault.com/a/1190000005029385
參考:UnityLaunchersAndDesktopFiles

deb是Debian Linux的軟體包格式。一般來說是需要通過編譯原始碼然後製作deb包。
但是,為了快速方便,下面直接在程式打包的基礎上來進行deb包的封裝。

步驟如下:

先完成程式的打包

先把程式打包完成。

建立需要的目錄結構和檔案

首先建立一個工作目錄,比如在主資料夾下建立YouAppName目錄:

$ cd ~
$ mkdir YouAppName 
$ cd YouAppName

deb檔案在安裝的時候預設是將檔案釋放到Linux系統的根目錄下,即/

如果我們這裡設定安裝路徑為/opt,那麼就安裝到opt下。

操作如下:

mkdir -p opt
# 把之前打包好的cp到設定目錄結構的opt下
cp -a YouAppName/opt/ 

我們建立一個opt目錄,這樣安裝的時候就可以安裝到系統的/opt下面去了。你建立什麼目錄,它安裝到哪裡去(前提得是Linux系統下的標準目錄。)

同時我們還需建立一個DEBIAN目錄,需要在DEBIAN目錄下建立一個control檔案,並加入以下內容:

package: YouAppName 
Version: 1.0
Section: utils
Priority: optional
Architecture: amd64
Depends:
Maintainer: you email or inc
Description: YouAppName-deb

desktop

[Desktop Entry]
Version=1.0 #app的版本
Name=YouAppName #app的名字
Comment= this app use for test #說明資訊 
Exec=/opt/YouAppName/YouAppName.sh #app的執行路徑,請使用絕對路徑
Icon=/opt/YouAppName/lib/YouAppName.png #icon 路徑,請使用絕對路徑
Terminal=false #是否在終端啟動
Type=Application
Categories=Utility;Application;

大概的專案結構(非debian標準)

注: 請根據實際情況靈活配置目錄,請參考下面我組織的結構

//  TODO 後面有空補充完善

└── YouAppName  #目錄
    ├── opt #目錄
    │   ├── YouAppName #目錄 自己應用程式的名字
    │       |── YouAppName  # 程式或檔案 Qt生成的或其它可執行程式
    |       |—— YouAppName.sh #程式的啟動指令碼。
    |       |—— 專案封裝的so或者第三方的so檔案和可執行檔案放在同一層級(只是建議)
    │       |── lib #目錄 Qt相關的的so檔案
    |       |—— plugins #目錄 Qt的外掛       
    │       ├── YouAppName.desktop  
    │       ├── YouAppName.png
    │       ├── ...等等檔案
    │     
    └── DEBIAN  #目錄 名字確定
        ├── control   #控制檔案 名字不可改,必須有這個檔案
        ├── postinst  #指令碼檔案 名字不可改,執行sudo dpkg -i xx.deb命令時,會執行這個指令碼. 非必須檔案
        ├── postrm    #指令碼檔案 名字不可改,執行sudo dpkg -r app 命令時,會執行這個指令碼 .非必須檔案

封裝為debian系的deb安裝包命令

sudo dpkg -b YouAppName/ YouAppName_V1.0_amd64.deb

安裝,解除安裝debian包

dpkg命令
dpkg的基本使用

// 注: 需要寫軟體的名字,tab並不能補全
sudo dpkg -i xxx.deb  安裝deb包 
sudo dpkg -r xxx  解除安裝
sudo dpkg -P xxx 解除安裝(並且刪除配置檔案)(推薦使用這個,解除安裝的乾淨)

注意事項

給desktop檔案新增執行許可權(非必須,但是建議)

chmod 755 YouAppName.desktop

指定desktop檔案

不過xxx.desktop 的寫法要一個限制:包含“Exec”那一行,“=”和要執行的程式之間要留一個空格。也就是Exec=XXX是無法通過“sh xxx.desktop”執行,正確的是Exec= XXX。


歡迎交流學習,共同進步
限本人水平有限,如有錯誤請指教,謝謝