天天看點

Ubuntu 20.04 打包制作DEB包詳細步驟及雷區記錄一次Deb打包過程及踩雷警示

記錄一次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