Linux

關於 rpm 安裝/升級方式的問題

  • April 15, 2018

下面是我教科書中在解釋包的命名約定時的引用(例如:packagename-abc-x.arch.rpm)。

內部版本號:版本號 (x) 後面的數字是內部版本號。許多發行版維護者在內部版本號中添加了一個字母程式碼,以將他們的軟體包與其他軟體包區分開來。請注意,這些數字在包維護者之間沒有可比性——George 的建構號 5 不一定比 Susan 的建構號 4 的相同包有所改進。

以下是解釋軟體包升級時的引用

警告:有可能以不同的名稱分發相同的程序。在這種情況下,升級可能會失敗,或者可能會產生重複安裝,這可能會產生奇怪的特定於程序的故障。Red Hat 已經描述了一個正式的軟體包命名系統來避免此類問題,但它們仍然偶爾會發生。因此,最好使用提供原始版本的同一個人或組織提供的後續版本來升級軟體包。

Q-1所以按照quote-1;版本號 與特定於發行版的某些字母相關聯。維護者,所以它可能因為名稱不同而無法升級?&因此不知道它是否是目前安裝的升級版本?

Q-2但是如果發行版/名稱相同,rpm 如何確定它是否是升級版?它是否解析包的名稱並從名稱中選擇版本號?如果是,那麼為什麼在不同發行版的情況下它會失敗。還有嗎?

內部版本號稱為發行版。例如python-qt5-5.10-3.fc28.x86_64,名稱是“python-qt5”,版本是“5.10”,版本是“3.fc28”,最後一個是架構“x86_64”

你所說的喬治或蘇珊的信通常被稱為“dist tag”。在上面的範例中,它是“.fc28”。它用於區分相同版本和發行版的不同包。例如,用於 Fedora 28 的 python-qt5 將文件放入/usr/lib64/python2.7/site-packages,但這在 RHEL6 上不起作用,因為它需要/usr/lib64/python2.6目錄中的 python 模組。所以RHEL6版本的同一個包是python-qt5-5.10-3.el6.x86_64

RPM 本身只比較名稱、版本和發行版。沒有邏輯不能在 RHEL7 上安裝 Fedora 28 軟體包。由於其他依賴關係,它通常不起作用。例如,如果您嘗試python-qt5-5.10-3.fc28.x86_64使用python-qt5-5.10-4.el7.x86_64它進行升級,它可能無法正常工作,因為 RHEL7 上 libQT*.so 的 SONAME 不同。但是,如果您使用一些沒有任何要求(或非常寬鬆的要求)的軟體包進行此操作,那麼 rpm 本身將允許升級,因為“4.el7”大於“3.fc28”。問題是 rpm 包的作者不打算(也沒有測試)將他的包安裝在不同的平台上。它很少起作用,但大多數情況下不起作用。

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