Rpm

rpm 如何確定軟體包是否為更新?

  • March 20, 2020

也許這個問題有點奇怪,但我在這裡掙扎。

rpm 根據什麼標準確定數據包是否為更新?

version 和 release 是一個字元串,因此不能與其他版本進行比較。有三個標誌來定義版本:epoch、version 和 release。rpm(和 yum、dnf、…)是否檢查建構時間以確定軟體包是否是更新?我幾乎不能相信這一點,但我無法弄清楚其他任何事情。

我不夠熟練,無法自己在原始碼中找到此​​功能的位置。也許有人可以幫忙。

非常感謝你。

RPM 包具有特定的格式:[$epoch:]$name-$version-$release.$arch

是一個可以很容易比較的$epoch整數,有些包不使用它,它只是被省略了。 $name只是一個不應在版本之間更改的字元串。 $version是可以解析和比較格式的版本字元串(通常是用句點分隔的整數)。 $release是一個通常以整數開頭的字元串,但也可以包含有關其建構的分佈的資訊。

如果所有$epoch$name$verion都相同,則$release進行比較以確定它是否是更新。如果$versions 不同,則對其進行解析,較高的為更新。如果$epoch不同,則較高的為更新。

RPM 更新比較的原始碼我相信可以函式parseEVRrpmdsCompareEVR.

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