Linux

庫不會更新

  • February 28, 2022

我正在嘗試在 CentOS 7 上更新我的 libarchive 庫。目前,我的版本為 3.1.2。如果我鍵入以下命令,結果如下:

# rpm -q libarchive
libarchive-3.1.2-10.el7_2.x86_64

我在網上找到了一個 .rpm 文件,它提供了 libarchive 3.5.2。我想更新到這個較新的版本。因此,我嘗試通過鍵入以下內容來安裝該軟體包:

# rpm -i libarchive-3.5.2-1.el9.src.rpm
warning: user mockbuild does not exist -- using root
warning: group mock does not exist -- using root
warning: user mockbuild does not exist -- using root
warning: group mock does not exist -- using root
warning: user mockbuild does not exist -- using root
warning: group mock does not exist -- using root
warning: user mockbuild does not exist -- using root
warning: group mock does not exist -- using root

即使它顯示警告,我希望它已安裝。畢竟,它們是警告,而不是錯誤。但是,如果我鍵入以下命令,它不會顯示包已安裝。

# rpm -lq libarchive
/usr/lib64/libarchive.so.13
/usr/lib64/libarchive.so.13.1.2
/usr/share/doc/libarchive-3.1.2
/usr/share/doc/libarchive-3.1.2/COPYING
/usr/share/doc/libarchive-3.1.2/NEWS
/usr/share/doc/libarchive-3.1.2/README
/usr/share/man/man5/cpio.5.gz
/usr/share/man/man5/mtree.5.gz
/usr/share/man/man5/tar.5.gz

我還嘗試根據從 libarchive.org 網站下載的 .tar 文件從原始碼編譯。該過程似乎進展順利,但在鍵入rpm -lq libarchive命令或rpm -q libarchive命令時,我仍然只顯示舊的 3.1.2 版本的 libarchive。

那麼,我將如何更新這個庫?如果已更新,為什麼這些命令不顯示已更新?

謝謝你的時間。

您嘗試安裝的 RPM 是一個 SRPM(因此.src在其文件名中) - 它包含您要升級的軟體包的原始碼。

您需要先為您的目標系統編譯它。使用模擬來做到這一點。

如果您引入 CentOS 提供的較新版本的系統庫,請注意不要破壞其他東西。考慮升級到 EL8(例如 Rocky Linux、Alma Linux 或 CentOS 8 Stream),您可能會免於頭痛。

您找到的版本中的 el9 標籤表示 RHEL 9。截至 2022 年第一季度,仍處於其生命週期的早期,因此來自 CentOS Stream 9 或 RHEL 9 beta。如果您使用這些作業系統,這將是預先安裝的。當然,Fedora 在版本方面遙遙領先。

通用建構和安裝說明不使用 rpm 包管理器。為了保持您期望的包管理體驗,請獲取用於 RHEL(或 Fedora)的源 RPM,並使用模擬工具重新建構它們。

即使你設法建構了一個 rpm 包,也存在讓它共存的問題。重要的系統包依賴於 libarchive。從 baseos 替換一個包並不是一件容易的事。絕對首先在一個不重要的系統上進行測試。

引用自:https://serverfault.com/questions/1092902