Rpm
rpm 如何確定軟體包是否為更新?
也許這個問題有點奇怪,但我在這裡掙扎。
rpm 根據什麼標準確定數據包是否為更新?
version 和 release 是一個字元串,因此不能與其他版本進行比較。有三個標誌來定義版本:epoch、version 和 release。rpm(和 yum、dnf、…)是否檢查建構時間以確定軟體包是否是更新?我幾乎不能相信這一點,但我無法弄清楚其他任何事情。
我不夠熟練,無法自己在原始碼中找到此功能的位置。也許有人可以幫忙。
非常感謝你。
RPM 包具有特定的格式:
[$epoch:]$name-$version-$release.$arch
是一個可以很容易比較的
$epoch
整數,有些包不使用它,它只是被省略了。$name
只是一個不應在版本之間更改的字元串。$version
是可以解析和比較格式的版本字元串(通常是用句點分隔的整數)。$release
是一個通常以整數開頭的字元串,但也可以包含有關其建構的分佈的資訊。如果所有
$epoch
、$name
和$verion
都相同,則$release
進行比較以確定它是否是更新。如果$version
s 不同,則對其進行解析,較高的為更新。如果$epoch
不同,則較高的為更新。RPM 更新比較的原始碼我相信可以在函式
parseEVR
和rpmdsCompareEVR
.