Linux中國

怎麼開始你的第一次打包?

打包 packing 」 是什麼?在 Linux 語境中,「打包」是指製作可以在 Linux 上用軟體包管理器來安裝、更新和卸載的軟體包。

你肯定要問了,什麼要打包?舉例來說,你肯定有過拍一些照片並且將它們設置為壁紙的經歷,對吧。一個個傳到計算機上去挺累的。把這些收集起來,打成一個壁紙包,與其他人分享是個不錯的選擇。順便,通過打包,也可以對 Debian 的軟體包有個大致的了解。

背景介紹

《崩壞 3》,是一個我很喜歡玩的遊戲,但它不支持 Linux 平台,所以,望梅止渴的我只好把這些壁紙進行打包,以此紀念和女武神們並肩戰鬥過的時光。

本文中介紹的打包是給 Debian/Ubuntu 系所用的 deb 包,其他系或獨立發行版請按所屬發行版的官方手冊進行打包工作。

準備工作

先準備如下工具 wgettardh-makedebmakelintian(有一些應該在你 Linux 上已經安裝過了):

~ $ sudo apt install wget tar dh-make debmake lintian

先建立打包文件夾:

make $ mkdir -p honkai-impact3-0.1/usr/share/background/honkai-impact3

更換壁紙的時候你應該注意到了,通常壁紙的存放位置都是在 /usr/share/background 目錄里的,所以這裡建立了相應的多級目錄。

你也可以用你自己拍攝的照片來打包,本文所用的演示圖片均來自於《崩壞 3》官網,你可以自行下載。

開始打包

然後,退回到上級目錄里,將存放壁紙的目錄壓縮成一個 tar 包:

honkai-impact3-0.1 $ cd ..
make $ tar -cvzf honkai-impact3-0.1.tar.gz honkai-impact3-0.1/usr/share/background/honkai-impact3

壓縮包創建好之後,我們還得設置兩個變數,這樣軟體包維護工具就可以正確識別維護者信息了:

make $ cat >> ~/.bashrc <<EOF
DEBEMAIL="bronya_zaychik@st_freya_academy.edu"
DEBFULLNAME="Bronya Zaychik"
export DEBEMAIL DEBFULLNAME
EOF
make $ . ~/.bashrc

此處:

  • DEBEMAIL 寫你的郵箱地址
  • DEBFULLNAME 寫維護者的名字

初始化

make $ cd honkai-impact3-0.1 
honkai-impact3-0.1 $ dh_make -f ../honkai-impact3-0.1.tar.gz
Type of package: (single, indep, library, python)
[s/i/l/p]?
Maintainer Name     : Bronya Zaychik
Email-Address       : bronya_zaychik@st_freya_academy.edu
Date                : Wed, 02 Feb 2022 07:00:28 +0000
Package Name        : honkai-impact3
Version             : 0.1
License             : blank
Package Type        : library
Are the details correct? [Y/n/q]

dh_make 是個不錯的工具,這工具用於初始化壓縮包並生成模板文件。下面的 debian 文件夾就是用這個工具生成的。

在初始化完成之後,你會看到如下文件:

honkai-impact3-0.1 $ cd ..
make $ ls -F
honkai-impact3-0.1/
honkai-impact3-0.1.tar.gz
honkai-impact3_0.1.orig.tar.gz

debian 文件夾里卻有了很多模板文件,在一陣怒砍之後,只留下如下文件:

make $ ls -F honkai-impact3-0.1/debian/
source/
changelog
control
copyright
rules

其中,changlog 文件是用來記錄版本更新內容的變更日誌。

例如:

honkai-impact3-0.1 $ cat debian/changelog
honkai-impact3-background (0.1-1) unstable; urgency=medium

  * 2020.8.17 首次打包完成
  * 2022.2.2  重新打包

 -- Bronya Zaychik <bronya_zaychik@st_freya_academy.edu> Wed, 02 Feb 2022 07:20:00 +0000

honkai-impact3-background (0.1-1) unstable; urgency=medium

  * Initial release 

 -- Bronya Zaychik <bronya_zaychik@st_freya_academy.edu> Wed, 02 Feb 2022 07:00:28 +0000

control 文件用來記錄壁紙包的版本信息:

honkai-impact3-0.1 $ cat debian/control
Package: honkai-impact3-background
Version: 0.1-1
Architecture: all
Maintainer: Bronya Zaychik <bronya_zaychik@st_freya_academy.edu>
Section: x11
Priority: optional
Homepage: https://gitee.com/PokerFace128/K423_Lab_Soft
Description: This is the game wallpaper of the HokaiImpact3.
 TECH OTAKUS SAVE THE WORLD

說明如下:

  • 第 1-2 行是包名和版本號
  • 第 3 行是可以編譯該二進位包的體系結構,通常文本、圖像、或解釋型語言腳本所生成的二進位包都用 Architecture: all
  • 第 4 行是維護者信息
  • 第 5 行是分類,這裡我們選擇為 x11,這是不屬於其他分類的為 X11 程序
  • 第 6 行是優先順序,這個為常規優先順序。
  • 第 7 行是維護者的個人主頁,GitHub、Gitee,甚至是你的 BiliBili 主頁都可以。
  • 第 8 行是對這個軟體包的描述
  • 第 9 行建議寫點什麼上去,這樣在用 lintian 檢查的時候就不會空了。

最後是 copyright 文件,用來存放版權信息。就是該軟體包內文件的版權說明。至於這個示例壁紙包,由於版權屬於該遊戲出品方,作為演示用途,我這裡就沒填。

開始打包

只需一個命令,就可輕鬆打包:

make $ cd honkai-impact3-0.1/
honkai-impact3-0.1 $ dpkg-buildpackage -us -uc

你應該用過 dpkg -i 這條命令,dpkg 工具不只能安裝,還能打包和拆包。

啪的一下,一個壁紙包就這樣打好了:

honkai-impact3-0.1 $ cd ../
make $ ls -F 
honkai-impact3-0.1/                   
honkai-impact3_0.1-1_amd64.changes  
honkai-impact3_0.1-1.debian.tar.xz  
honkai-impact3_0.1.orig.tar.gz
honkai-impact3_0.1-1_amd64.buildinfo  
honkai-impact3_0.1-1_amd64.deb      
honkai-impact3_0.1-1.dsc            
honkai-impact3-0.1.tar.gz

接下來用 lintian 檢查

make $ lintian honkai-impact3_0.1-1_amd64.deb   

E: honkai-impact3-background: copyright-contains-dh_make-todo-boilerplate
E: honkai-impact3-background: helper-templates-in-copyright
W: honkai-impact3-background: copyright-has-url-from-dh_make-boilerplate

這裡顯示我沒填 copyright 文件,這裡需要你填入版權信息,像壁紙類的話,通常都是 CC 協議。

打包好之後就像這樣:

如果你想了解關於 deb 打包的更多內容,請看如下鏈接:https://www.debian.org/doc/manuals/maint-guide/index.zh-cn.html

作者註:因讀者多次吐槽,文章經過了反覆修改。詳情請看 GitHub 上的 PR。

作者簡介:

PokerFace,一個會空中劈叉的老艦長(睿智清潔工)。

作者:PokerFace 編輯:wxy

本文由貢獻者投稿至 Linux 中國公開投稿計劃,採用 CC-BY-SA 協議 發布,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國