參考: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包
// 注: 需要寫軟件的名字,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。