記錄一次Deb打包過程及踩雷警示
最近寫了一個python的小程序,但願能打包成deb文件,把這個程序弄得有頭有臉,安裝deb後能夠在應用列表和桌面看到。參考了許多資料(文後附),它們給了我不少指導,對此表示感謝。html
須要準備的
一、源代碼(前提要可執行)或者編譯好的程序,這裏只介紹python
二、能用的ubuntu系統
三、用戶的密碼
四、圖標(必定要有!)
python
這裏給你們介紹一個案例,包名叫作debpacktest,整個過程當中全部用到名字的地方,通通都是這個名字。xxx也指代這個名字。linux
1、創建目錄架構
程序是要放到一個系統中的各個部分去的。其實這個並無那麼嚴格,不必定全都要擠到/usr/lib裏邊去,放到/home等都沒有太大的問題。這裏你須要用一個文件夾模擬出linux的文件架構,只須要模擬你程序須要安放到的位置就好了。好比說我有main.py和mainform.py兩個文件,放到的文件夾是/usr/lib/debpacktest。那麼我只須要建一個大文件夾(命名隨意),cd到這個大文件夾,直接一個mkdir新建/usr /lib /debpacktest,而後把py文件丟進debpacktest文件夾。下面羅列出來的是目錄結構,多餘出來的是須要手工添加的deb包配置文件(夾)。(share部分和DEBIAN部分)ubuntu
├── debpackTotal │ ├── DEBIAN(這個目錄要添加control文件(無後綴名),可選添加postinst等) │ └── usr │ ├── lib │ │ └── debpacktest(預約要安裝到系統中的文件) │ │ ├── mainform.py │ │ └── main.py │ └── share │ ├── applications(在這裏添加xxx.desktop,使應用中可以加載出你的應用) │ └── icons(你的圖標,這個必須有) **踩雷一**
在DEBIAN目錄下製做control文件
cd到DEBIAN,在命令行輸入(固然,你用gedit也行)小程序
vim control
在其中粘貼:vim
Package: debpacktest
Version: 1.0.0
Architecture: amd64
Maintainer: bakamitai
Description: just a test
Package:你的包名
Version:版本
Architecture:架構
Maintainer:維護者
Description:解釋
bash
括號後的內容 根據你本身的須要去改變
而後保存
架構
在/usr/share/applications下製做桌面圖標 debpacktest.desktop
這一步很是重要 關係到你可否在應用列表出現你本身的程序,清必定按照下面的步驟完成。
首先在/usr/share/applications/下新建debpacktest.desktop這個文件。
裏面的內容是:
app
[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:分類。能夠在引用和參考那裏尋找更多。
post
剩下的東西 都不要動 都不要動
文件不能有多餘的空格! 踩雷五
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