图书馆不会更新

图书馆不会更新

我正在尝试更新 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 libarchiverpm -q libarchive命令时,我仍然只显示旧的 3.1.2 版 libarchive。

那么,我该如何更新这个库?如果它已经更新,为什么这些命令没有显示它已更新?

谢谢你的时间。

答案1

您正在尝试安装的 RPM 是 SRPM(因此.src文件名中带有 ),它包含来源对于要升级的软件包。

您需要先针对目标系统进行编译。使用嘲笑要做到这一点。

如果您引入了 CentOS 提供的系统库的较新版本,请务必小心不要破坏其他内容。考虑升级到 EL8(例如 Rocky Linux、Alma Linux 或 CentOS 8 Stream),您可能会免去很多麻烦。

答案2

您找到的版本中的 el9 标签表示 RHEL 9。截至目前(2022 年第一季度),仍处于其生命周期的早期阶段,因此它来自 CentOS Stream 9 或 RHEL 9 beta。如果您使用这些操作系统,它将被预安装。或者当然 Fedora 在版本方面遥遥领先。

通用构建和安装说明不使用 rpm 包管理器。为了保持您期望的包管理体验,请获取用于 RHEL(或 Fedora)的源 RPM,并使用 mock 工具重建它们。

即使您设法构建了 rpm 包,也存在使其共存的问题。重要的系统包依赖于 libarchive。而从 baseos 替换包并非易事。一定要先在不重要的系统上进行测试。

答案3

最终,我决定采纳你们两位的建议。我决定不更新这个库。

我正在尝试更新该库,以便可以安装另一个软件——OpenCoarrays。

幸运的是,我能够使用提供给我的安装脚本来安装 OpenCoarrays。该脚本有效,程序已安装。因此,我不再需要更新此库。

感谢您抽出时间提供意见。你们两位都帮了大忙。

相关内容