我删除了 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
。当安装、删除、删除软件包等时,该数据库会更新。如果软件是从源代码编译的,或者是通过创建二进制文件、库、标头等的脚本安装的,或者使用其他实用程序(如snap
、pip
、 、 等cpan
)安装的gem
,那么yum
就rpm
可以了根本不知道它在系统上,因为它不在数据库中。
这就是为什么yum
看不到您从源代码编译的软件的原因。