如何让 yum 知道源包已安装?

如何让 yum 知道源包已安装?

我删除了 yum 软件包并从源代码安装了同一软件包的更高版本。但百胜没有看到它。每当我尝试安装 yum 软件包时,它都会尝试安装旧的 yum 软件包,但看不到我安装的源软件包。

有没有办法让yum看到源码包?请记住,我还不知道如何从源代码创建 rpm。

答案1

遗憾的是(幸运的是?)rpm 没有与 deb 相当的东西equivs-build,“一个创建 Debian 软件包的程序,可用于通知 dpkg 有关本地安装的软件包及其依赖项的信息。”

很容易将一个空的 rpm 组合在一起并安装它,以通知 rpm 已安装软件包(但不通知源安装添加到系统中的文件)。

第一个是氟PM

$ fpm -s empty -t rpm -n foo -v 1.2.3 --iteration noop

请注意,如果您将来想走这条路,fpm 可以简化构建 rpm 的过程。

第二个是转速绒毛

$ python
>>> import rpmfluff
>>> foo = rpmfluff.SimpleRpmBuild("foo", "0.1", "1")
>>> foo.make()

另一个简单的选项(如 fpm)用于制作包含文件的真正 rpm 是检查安装。 (我不知道它是否还有效。)

./configure 后;制作您的程序,CheckInstall 将运行 make install(或您告诉它运行的任何内容)并跟踪此安装修改的每个文件...当 make install 完成时,CheckInstall 将创建 Slackware、RPM 或 Debian 兼容包并安装根据需要使用 Slackware 的 installpkg、“rpm -i”或 Debian 的“dpkg -i”

答案2

我将详细说明答案。

yum基本上是一个前端,因为rpm它可以从远程存储库查询和安装,还可以查询和解析依赖项,而不必rpm按照正确的顺序手动安装包及其依赖项。还有其他的事情,但这些是最重要的。

因此,yum使用目录rpm中的数据库和关联文件/var/lib/rpm。当安装、删除、删除软件包等时,该数据库会更新。如果软件是从源代码编译的,或者是通过创建二进制文件、库、标头等的脚本安装的,或者使用其他实用程序(如snappip、 、 等cpan)安装的gem,那么yumrpm可以了根本不知道它在系统上,因为它不在数据库中。

这就是为什么yum看不到您从源代码编译的软件的原因。

相关内容