記錄一次Deb打包過程及踩雷警示
最近寫了一個python的小程式,希望能打包成deb檔案,把這個程式弄得有頭有臉,安裝deb後可以在應用清單和桌面看到。參考了許多資料(文後附),它們給了我很多指導,對此表示感謝。
需要準備的
1、源代碼(前提要可執行)或者編譯好的程式,這裡隻介紹python
2、能用的ubuntu系統
3、使用者的密碼
4、圖示(一定要有!)
這裡給大家介紹一個案例,包名叫做debpacktest,整個過程中所有用到名字的地方,統統都是這個名字。xxx也指代這個名字。
一、建立目錄架構
程式是要放到一個系統中的各個部分去的。其實這個并沒有那麼嚴格,不一定全都要擠到/usr/lib裡邊去,放到/home等都沒有太大的問題。這裡你需要用一個檔案夾模拟出linux的檔案架構,隻需要模拟你程式需要安放到的位置就行了。比如說我有main.py和mainform.py兩個檔案,放到的檔案夾是/usr/lib/debpacktest。那麼我隻需要建一個大檔案夾(命名随意),cd到這個大檔案夾,直接一個mkdir建立/usr /lib /debpacktest,然後把py檔案丢進debpacktest檔案夾。下面羅列出來的是目錄結構,多餘出來的是需要手工添加的deb包配置檔案(夾)。(share部分和DEBIAN部分)
├── debpackTotal
│ ├── DEBIAN(這個目錄要添加control檔案(無字尾名),可選添加postinst等)
│ └── usr
│ ├── lib
│ │ └── debpacktest(預定要安裝到系統中的檔案)
│ │ ├── mainform.py
│ │ └── main.py
│ └── share
│ ├── applications(在這裡添加xxx.desktop,使應用中能夠加載出你的應用)
│ └── icons(你的圖示,這個必須有) **踩雷一**
在DEBIAN目錄下制作control檔案
cd到DEBIAN,在指令行輸入(當然,你用gedit也行)
vim control
在其中粘貼:
Package: debpacktest
Version: 1.0.0
Architecture: amd64
Maintainer: bakamitai
Description: just a test
Package:你的包名
Version:版本
Architecture:架構
Maintainer:維護者
Description:解釋
括号後的内容 根據你自己的需要去改變
然後儲存
在/usr/share/applications下制作桌面圖示 debpacktest.desktop
這一步非常重要 關系到你能否在應用清單出現你自己的程式,清一定按照下面的步驟完成。
首先在/usr/share/applications/下建立debpacktest.desktop這個檔案。
裡面的内容是:
[Desktop Entry]
Name=debpacktest
Comment=An example
Exec=/usr/lib/debpacktest/main.py
Icon=/usr/share/icons/debpacktest.png
Terminal=false
Type=Application
X-Ubuntu-Touch=true
Categories=Development
Name:你的包名
Comment:評論 注釋
Exec:這裡非常重要!這裡如果不對 會直接導緻這個圖示沒有辦法顯示。對于python來說,一定要具體到執行哪個py。這裡執行的是main.py。不要忘記chmod,給main.py加上可執行權限。踩雷二
Icon:圖示,不可以忽略 踩雷三
Terminal:是否在終端執行。這裡是QtPy窗體,不需要。如果需要的話可以參考vim的desktop檔案 踩雷四
Categories:分類。可以在引用和參考那裡尋找更多。
剩下的東西 都不要動 都不要動
檔案不能有多餘的空格! 踩雷五
desktop檔案要有可執行權限!
打包
到這裡,一個基本的deb軟體包就大功告成了。
我們傳回到debpackTotal的上級目錄。我們執行
sudo dpkg -b debpackTotal debpacktest_1.0.0_amd64.deb
包的命名要符合規範,我這裡是随便打的。
檢驗的話,可以輸入
sudo dpkg -i debpacktest_1.0.0_amd64.deb
在我的機器上,運作很完美,我在應用清單裡看到了我的程式。
如果要解除安裝,請執行
sudo dpkg -r debpacktest
注意 這裡面的參數 是包名,并非包的檔案名,就是一開始我讓你們注意的那個全局命名。
關于postinst檔案(即制作桌面圖示)
cd到DEBIAN目錄,建立postinst檔案,沒有字尾。這個檔案是在安裝完包以後執行的腳本
複制以下内容:
#!/bin/bash
sudo cp /usr/share/applications/debpacktest.desktop ~/桌面
echo POST INSTALLATION FUNCTION EXECUTED
這裡是在包安裝完成後,執行代碼,将desktop檔案複制到桌面。不同語言的發行版需要注意桌面的路徑。踩雷六
postinst要有可執行權限。踩雷七
重新打包,安裝,檢驗,發現桌面上多了個東東,是我們複制過去的檔案,但并沒有顯示圖示。
我們需要右擊它,選擇允許執行。你想要的結果便出現了。
總結
以上就是簡單制作一個基本的deb檔案的全部步驟以及部分擴充。需要耐心。Enjoy it.
參考&引用
https://www.ibm.com/developerworks/cn/linux/l-cn-dtef/index.html
https://www.cnblogs.com/young525/p/5873806.html