太复杂的包咱们打不来,咱们先从最简单的壁纸包开始打起。
“ 打包 packing ” 是什么?在 Linux 语境中,“打包”是指制作可以在 Linux 上用软件包管理器来安装、更新和卸载的软件包。
你肯定要问了,什么要打包?举例来说,你肯定有过拍一些照片并且将它们设置为壁纸的经历,对吧。一个个传到计算机上去挺累的。把这些收集起来,打成一个壁纸包,与其他人分享是个不错的选择。顺便,通过打包,也可以对 Debian 的软件包有个大致的了解。
背景介绍 《崩坏 3》,是一个我很喜欢玩的游戏,但它不支持 Linux 平台,所以,望梅止渴的我只好把这些壁纸进行打包,以此纪念和女武神们并肩战斗过的时光。
本文中介绍的打包是给 Debian/Ubuntu 系所用的 deb 包,其他系或独立发行版请按所属发行版的官方手册进行打包工作。
准备工作 先准备如下工具 wget
、tar
、dh-make
、debmake
、lintian
(有一些应该在你 Linux 上已经安装过了):
1 2 ~ $ sudo apt install wget tar dh-make debmake lintian
先建立打包文件夹:
1 2 make $ mkdir -p honkai-impact3-0 .1 /usr/share/background/honkai-impact3
更换壁纸的时候你应该注意到了,通常壁纸的存放位置都是在 /usr/share/background
目录里的,所以这里建立了相应的多级目录。
你也可以用你自己拍摄的照片来打包,本文所用的演示图片均来自于《崩坏 3》官网,你可以自行下载。
开始打包 然后,退回到上级目录里,将存放壁纸的目录压缩成一个 tar 包:
1 2 3 honkai -impact3-0 .1 $ cd ..make $ tar -cvzf honkai-impact3-0 .1 .tar.gz honkai-impact3-0 .1 /usr/share/background/honkai-impact3
压缩包创建好之后,我们还得设置两个变量,这样软件包维护工具就可以正确识别维护者信息了:
1 2 3 4 5 6 7 make $ cat >> ~/.bashrc <<EOF DEBEMAIL="bronya_zaychik@st_freya_academy.edu" DEBFULLNAME="Bronya Zaychik" export DEBEMAIL DEBFULLNAME EOF make $ . ~/.bashrc
此处:
DEBEMAIL
写你的邮箱地址
DEBFULLNAME
写维护者的名字
初始化 1 2 3 4 5 6 7 8 9 10 11 12 13 make $ cd honkai-impact3-0.1 honkai-impact3-0.1 $ dh_make -f ../honkai-impact3-0.1 .tar.gzType 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
文件夹就是用这个工具生成的。
在初始化完成之后,你会看到如下文件:
1 2 3 4 5 6 honkai -impact3-0 .1 $ cd ..make $ ls -Fhonkai -impact3-0 .1 /honkai -impact3-0 .1 .tar.gzhonkai -impact3_0.1 .orig.tar.gz
而 debian
文件夹里却有了很多模板文件,在一阵怒砍之后,只留下如下文件:
1 2 3 4 5 6 7 make $ ls -F honkai-impact3-0.1/debian/source / changelog control copyright rules
其中,changlog
文件是用来记录版本更新内容的变更日志。
例如:
1 2 honkai -impact3-0 .1 $ cat debian/changelog
1 2 3 4 5 6 7 8 9 10 11 12 13 honkai-impact3-background (0 .1 -1 ) unstable * 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 * Initial release -- Bronya Zaychik <bronya_zaychik@st_freya_academy.edu> Wed, 02 Feb 2022 07 :00 :28 +0000
control
文件用来记录壁纸包的版本信息:
1 2 honkai -impact3-0 .1 $ cat debian/control
1 2 3 4 5 6 7 8 9 10 Package: honkai-impact3-backgroundVersion: 0.1 -1 Architecture: allMaintainer: Bronya Zaychik <bronya_zaychik@st_freya_academy.edu> Section: x11Priority: optionalHomepage: https: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
文件,用来存放版权信息。就是该软件包内文件的版权说明。至于这个示例壁纸包,由于版权属于该游戏出品方,作为演示用途,我这里就没填。
开始打包 只需一个命令,就可轻松打包:
1 2 3 make $ cd honkai-impact3-0 .1 /honkai -impact3-0 .1 $ dpkg-buildpackage -us -uc
你应该用过 dpkg -i
这条命令,dpkg
工具不只能安装,还能打包和拆包。
啪的一下,一个壁纸包就这样打好了:
1 2 3 4 5 6 7 8 9 10 11 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.gzhonkai -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 检查
1 2 3 4 5 6 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中国 荣誉推出