如何在我建構的 .deb 包中設置新版本號
我剛剛在 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
實用程序始終將版本報告dhcpcd
為8.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.2
。dhcpcd
別名為dhcpcd5
in/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 版本。