[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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM