我正在尝试在 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 替换一个包并不是一件容易的事。绝对首先在一个不重要的系统上进行测试。
最终,我决定采纳你们俩的建议。我决定不更新图书馆。
我试图更新库,以便我可以安装另一个软件——OpenCoarrays。
幸运的是,我能够使用提供给我的安装脚本来安装 OpenCoarrays。该脚本有效,并且该程序已安装。出于这个原因,我不再需要更新这个库。
感谢您抽出宝贵时间提供您的意见。你们俩都非常有帮助。