如何在我构建的 .deb 包中设置新版本号

如何在我构建的 .deb 包中设置新版本号

我刚刚在 Raspberry Pi OS - bullseye 机器上完成了简单的源代码修改和重建。因为这对我来说是新的,所以我将列出我遵循的步骤以避免歧义:

$ dhcpcd --version
dhcpcd 8.1.2                            # "before" version
$ sudo apt install devscripts           # build tools for using `debuild`
$ apt-get source dhcpcd5                # creates source tree ~/dhcpcd5-8.1.2; Debian git repo is far off!
$ cd dhcpcd5-8.1.2                      # cd to source dir
$ nano src/dhcp.c                       # make required changes to the source (one line)
~/dhcpcd5-8.1.2 $ debuild -b -uc -us    # successful build
$ cd ..
$ sudo dpkg -i dhcpcd5_8.1.2-1+rpt5_armhf.deb # install .deb file created by debuild
$ dhcpcd --version
dhcpcd 8.1.2                            # "after" version
$ 

一切都很好,但是“之前”和“之后”版本号完全相同,这让我没有一种简单的方法来知道我是否有我的已纠正代码运行,或者未修正的代码。我将安装 已纠正.deb 文件发送到多个主机,我可能会收到其他人的请求等,所以我想以某种方式以便轻松区分已纠正未修正的代码。

使用dhcpcd --version似乎是一种简单的方法来做到这一点。我读到 Debian 有关于版本号的规则,但由于我不会向“全世界”发布它,所以我认为没有必要拘泥于形式。另外 - 我已向 Debian 存储库提交了拉取请求/合并请求,并且我已就该问题向 RPi 组织提供了建议。我没有收到任何一方的反馈,但这个错误对我来说是一个巨大的烦恼。我不想等待dhcpcd具有“正确”版本号的新版本。

我必须做什么才能导致已纠正dhcpcd报告的版本dhcpcd 8.1.2.1- 或类似的东西?

编辑澄清:

基于这个答案,我编辑过dhcpcd5-8.1.2/debian/changelog。进行此更改后,实用程序一致报告asapt的版本:dhcpcd8.1.3

$ apt-cache policy dhcpcd5
dhcpcd5:
  Installed: 1:8.1.3-1+rpt1
  Candidate: 1:8.1.3-1+rpt1
  Version table:
 *** 1:8.1.3-1+rpt1 100
        100 /var/lib/dpkg/status
     1:8.1.2-1+rpt1 500
        500 http://archive.raspberrypi.org/debian buster/main armhf Packages
     7.1.0-2 500
        500 http://raspbian.raspberrypi.org/raspbian buster/main armhf Packages
$ #
$ dpkg -s dhcpcd5 | grep Version
Version: 1:8.1.3-1+rpt1 
$

然而:dhcpcd --version仍然报道8.1.2dhcpcd别名为dhcpcd5in /etc/alternatives。因此,dhcpcd --version实际上是dhcpcd5 --version.它出现可执行文件dhcpcd5--version来源与apt实用程序不同。?

编辑2:

结果报告的版本号dhcpcd --version定义defs.h如下:

#define PACKAGE                 "dhcpcd"
#define VERSION                 "8.1.2"

思考 dhcpcd有点像异常值。 RPi 团队显然决定在发布时(几年前)放弃上游版本 9,并坚持使用版本 8.1.2,尽管在版本 8.1.2 之后有多个上游版本。更令人困惑的是,该.dsc文件列为Vcs-Browser: https://salsa.debian.org/smlx-guest/dhcpcd5Git 存储库 - 但它实际上停留在版本 7。这对我来说没有多大意义 - 我想这就是我不是包维护者的原因之一。 :)

答案1

您可以在顶部添加相关行debian/changelog(查找这里该文件内容的详细信息)。

您可以复制当前的顶部节并更改版本号(进行有用的日志注释是一个好主意)。

或者,您可以使用该dch工具(来自devtools):

dch --local your_package_name

安装后,您可以使用类似以下内容检查软件包的已安装版本(有备择方案

dpkg -l dhcpcd5

上游版本标识符无法自动导入,因为它们并不总是正式存在(例如python3-lzss)并且当它们这样做时,它们可能与限制和排序不兼容软件包系统版本。例如,epoch有时需要从上游版本迁移到 Debian 版本。

相关内容