[Qt]-打包程式為Debian的deb格式的安裝包
參考://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包
// 注: 需要寫軟體的名字,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。