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

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

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

rpm 透過什麼標準來判斷資料包是否是更新?

版本和發行版是一個字串,因此無法與其他版本進行比較。可以使用三個標誌來定義版本:epoch、version 和release。 rpm(以及 yum、dnf...)是否檢查建置時間以確定軟體包是否為更新?我簡直不敢相信這一點,但我無法弄清楚其他任何事情。

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

非常感謝。

答案1

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

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

如果$epoch$name、 和$verion都相同,則$release比較以確定是否為更新。如果$versions 不同,則解析它們並更新較高的值。如果$epoch不同,則更新的版本越高。

我相信可以找到RPM更新比較的源碼這裡在函數parseEVR和中rpmdsCompareEVR

相關內容