
只是安裝路徑嗎?如果是這種情況,那麼名稱/路徑中具有版本的任何套件都將永遠不會更新另一個包,因此不可能是這樣。我在手動依賴資訊中沒有看到對此的提及。建立 RPM 時,如何告訴 cAPI-3.1.6-x86_64.rpm 安裝時應該更新 cAPI-2.1.7-x86_64.rpm,而不是在 /usr/lib 下建立新路徑並忽略現有的套件?
答案1
基本同意@msuchy相關特徵是包的組合姓名和建築學,它有助於提供一些概述。
尋找資訊的地方不是“升級”,而是安裝多個版本一個包的:
多個安裝版本(在 rpm.org 上)給出了很好的概述:
所有套件管理工具都使用某些鍵來引用套件/程式。通常該密鑰是包 姓名 或包裝 姓名 和包裝 拱
也就是說,有兩種選擇(通常):套件名稱本身,或套件名稱與體系結構的組合。它接著說
內核包是專門構建的,因此它們不會提供從一個版本的內核到下一版本的任何衝突文件
也就是說,核心受到特殊對待,因為(套件開發人員)知道 Linux 核心套件中的所有檔案都具有不同的名稱(檔案名稱嵌入了版本,或者檔案位於嵌入版本的目錄中) 。這是一種特殊情況。太多的特殊情況讓 RPM 的維護者無法運作。
它還展示瞭如何使用這些版本號作為程式包的一部分來建立具有長期穩定版本的程式的程式包姓名,從而允許在同一台機器上安裝該程式的多個版本。給出的範例適用於 python。您可能會看到使用相同方案的其他程式包括 apache、autoconf、gcc、java。以下是 Fedora22 的一些範例:
SDL2-2.0.3-5.fc22.x86_64
openjpeg2-2.1.0-6.fc22.x86_64
pygobject2-2.28.6-13.fc22.x86_64
pygobject3-3.16.2-1.fc22.x86_64
pygobject3-base-3.16.2-1.fc22.x86_64
python3-3.4.2-6.fc22.x86_64
qt5-qtbase-5.5.0-15.fc22.x86_64
vte291-0.40.2-1.fc22.x86_64
vte3-0.36.4-1.fc22.x86_64
webkitgtk3-2.4.9-1.fc22.x86_64
webkitgtk4-2.8.5-2.fc22.x86_64
當您看到這些套件時,很容易混淆哪些數字是套件名稱的一部分,哪些是版本和發布。 RPM 使用破折號 ( -
) 來分隔它們:如果沒有破折號,則數字是名稱的一部分。
答案2
這是%{name}.%{arch}
組合。如果這是相同的那麼它是升級。如果不同,則為另一個安裝。
即您可以同時擁有cAPI-3.1.6-x86_64
和安裝。cAPI-3.1.6-i386
但你不能在一個系統上擁有cAPI-3.1.6-x86_64
和cAPI-2.1.7-x86_64
(除非你做了非常骯髒的把戲)。