Debian

如何在我建構的 .deb 包中設置新版本號

  • April 10, 2022

我剛剛在 Raspberry Pi OS - 靶心機器上完成了一個簡單的原始碼修改和重建。因為這對我來說是新的,所以我將列出我遵循的步驟以避免歧義:

$ 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 repo 送出了一個拉取請求/合併請求,並且我已經就這個問題向 RPi 組織提出了建議。我沒有得到任何一方的回饋,但這個錯誤對我來說是一個巨大的煩惱。我不想等待dhcpcd具有“正確”版本號的新版本。

我必須做什麼才能導致報告的更正版本- 或類似的東西?dhcpcd``dhcpcd 8.1.2.1

編輯澄清:

基於這個答案,我編輯了dhcpcd5-8.1.2/debian/changelog。在此更改之後,apt實用程序始終將版本報告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。?

您可以在頂部添加相關行(在此處debian/changelog找到有關該文件內容的詳細資訊)。

您可以複製目前的頂部節並更改版本號(做一個有用的日誌註釋是個好主意)。

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

dch --local your_package_name

安裝後,您可以使用類似這樣的方式檢查軟體包的安裝版本(有替代方案

dpkg -l dhcpcd5

上游版本標識符不能自動導入,因為它們並不總是正式存在(比如python3-lzss ),並且當它們存在時,它們可能與包系統版本的限制和排序不兼容。例如epoch,有時需要從上游遷移到 Debian 版本。

引用自:https://unix.stackexchange.com/questions/698619