---
author: Pokerface128
category: 技术
comments_data:
- date: '2022-03-16 21:57:37'
  message: "建议标题改成《怎么开始你的第一次打 Debian 包？》<br />\r\n<br />\r\nDebian 我是很喜欢的，但是打包太繁琐了
    (或者说打出完全符合 Policy 的包)，然后我就逃到 Arch 了。附上一个 Arch 的打包 WIKI (可在侧边栏选择中文)：wiki.archlinux.org/title/PKGBUILD"
  postip: 112.45.48.108
  username: 来自四川泸州的 Chrome 85.0|Windows 7 用户
- date: '2022-03-25 15:35:25'
  message: '第一步 : 先建立打包文件夹就出错了'
  postip: 113.57.74.119
  username: 来自湖北武汉的 Firefox 91.0|GNU/Linux 用户
count:
  commentnum: 2
  favtimes: 0
  likes: 0
  sharetimes: 0
  viewnum: 2942
date: '2022-03-16 14:44:15'
editorchoice: false
excerpt: 太复杂的包咱们打不来，咱们先从最简单的壁纸包开始打起。
fromurl: https://github.com/LCTT/Articles/pull/5
id: 14362
islctt: false
largepic: /images/p/202203/16/144330v800a3qax40px5vp.jpg
permalink: /article-14362-1.html
pic: /images/p/202203/16/144330v800a3qax40px5vp.jpg.thumb.jpg
related: []
reviewer: wxy
selector: ''
summary: 太复杂的包咱们打不来，咱们先从最简单的壁纸包开始打起。
tags:
- 打包
thumb: false
title: 怎么开始你的第一次打包？
titlepic: true
translator: ''
updated: '2022-03-16 14:44:15'
---


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


![](/images/p/202203/16/144330v800a3qax40px5vp.jpg)


“<ruby> 打包 <rt>  packing </rt></ruby>” 是什么？在 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》官网，你可以自行下载。


![](/images/p/202203/16/144415kzvnnkuafobfaab4.png)


### 开始打包


然后，退回到上级目录里，将存放壁纸的目录压缩成一个 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 协议。


打包好之后就像这样：


![](/images/p/202203/16/144415gq604btbh6ouheba.png)


如果你想了解关于 deb 打包的更多内容，请看如下链接：<https://www.debian.org/doc/manuals/maint-guide/index.zh-cn.html>


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




---


作者简介：


PokerFace，一个会空中劈叉的老舰长（睿智清洁工）。




---


作者：[PokerFace](https://github.com/pokerface128) 编辑：[wxy](https://github.com/wxy)


本文由贡献者投稿至 [Linux 中国公开投稿计划](https://github.com/LCTT/Articles/)，采用 [CC-BY-SA 协议](https://creativecommons.org/licenses/by-sa/4.0/deed.zh) 发布，[Linux中国](https://linux.cn/) 荣誉推出