怎么开始你的第一次打包?

开发
本文中介绍的打包是给 Debian/Ubuntu 系所用的 deb 包,其他系或独立发行版请按所属发行版的官方手册进行打包工作。

太复杂的包咱们打不来,咱们先从最简单的壁纸包开始打起。

“打包packing” 是什么?在 Linux 语境中,“打包”是指制作可以在 Linux 上用软件包管理器来安装、更新和卸载的软件包。

你肯定要问了,什么要打包?举例来说,你肯定有过拍一些照片并且将它们设置为壁纸的经历,对吧。一个个传到计算机上去挺累的。把这些收集起来,打成一个壁纸包,与其他人分享是个不错的选择。顺便,通过打包,也可以对 Debian 的软件包有个大致的了解。

背景介绍

《崩坏 3》,是一个我很喜欢玩的游戏,但它不支持 Linux 平台,所以,望梅止渴的我只好把这些壁纸进行打包,以此纪念和女武神们并肩战斗过的时光。

本文中介绍的打包是给 Debian/Ubuntu 系所用的 deb 包,其他系或独立发行版请按所属发行版的官方手册进行打包工作。

准备工作

先准备如下工具 wget、tar、dh-make、debmake、lintian(有一些应该在你 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 打包的更多内容,请看​​链接​

作者注:因读者多次吐槽,文章经过了反复修改。详情请看 GitHub 上的 PR。

作者简介:PokerFace,一个会空中劈叉的老舰长(睿智清洁工)。

责任编辑:未丽燕 来源: Linux中国
相关推荐

2011-07-21 21:01:37

诺基亚塞班苹果

2017-03-22 15:38:28

代码架构Java

2019-07-15 16:15:31

微软Windows 10操作系统

2012-04-13 10:11:58

Windows 8泄露

2023-09-11 00:14:46

后端团队项目

2024-08-08 09:05:54

2024-06-27 07:54:46

2021-06-25 06:41:22

Windows 11操作系统微软

2022-08-15 08:16:56

shiroWeb认证

2017-08-08 12:50:51

Serverless云端数据库

2013-02-25 09:43:22

LambdasJava8

2015-11-02 14:42:12

2013-05-13 11:35:53

独立开发开发经验开发感悟

2013-06-03 09:28:49

游戏设计

2015-10-26 16:38:17

2021-02-05 08:35:21

私活程序员

2022-06-21 09:26:28

开源项目PR

2012-10-19 09:27:23

Ruby

2018-08-15 10:34:30

戴尔

2018-11-21 14:51:00

Windows 功能系统
点赞
收藏

51CTO技术栈公众号