有关 rpm 安装/升级方式的问题

有关 rpm 安装/升级方式的问题

下面是我的教科书在解释包的命名约定时引用的内容(例如:packagename-abc-x.arch.rpm)。

版本号:版本号 (x) 后面的数字是内部版本号。许多发行版维护者在内部版本号中添加字母代码,以将他们的软件包与其他软件包区分开来。请注意,这些数字在软件包维护者之间不具有可比性 - George 的软件包构建号 5 不一定是 Susan 的同一软件包的构建号 4 的改进。

以下是解释包升级时的引用

警告:可以用不同的名称分发相同的程序。在这种情况下,升级可能会失败,或者可能会产生重复安装,从而导致特定于程序的奇怪故障。红帽已经描述了一个正式的包命名系统来避免此类问题,但它们仍然偶尔会发生。因此,最好使用提供原始包的同一个人或组织提供的后续版本来升级包。

Q-1因此,根据 quote-1;内部版本号与特定于发行版的某些字母相关联。维护者,所以可能会因为名称不同而升级失败?因此不知道它是否是当前安装的升级版本?

Q-2但是如果发行版/名称相同,rpm 如何确定其是否是升级版本?它是否解析包的名称并从名称中选择版本号?如果是,那么为什么在不同发行版的情况下它会失败。还有?

答案1

内部版本号称为发行版。例如python-qt5-5.10-3.fc28.x86_64,名称为“python-qt5”,版本为“5.10”,发行版为“3.fc28”,最后一个架构为“x86_64”

您所说的乔治或苏珊的信通常被称为“dist tag”。在上面的示例中,它是“.fc28”。用于区分同一版本和release的不同包。例如,Fedora 28 的 python-qt5 将文件放入/usr/lib64/python2.7/site-packages,但这在 RHEL6 上不起作用,因为它需要/usr/lib64/python2.6目录中的 python 模块。所以RHEL6版本的同一个包是python-qt5-5.10-3.el6.x86_64

RPM 本身仅比较名称、版本和发行版。不存在无法在 RHEL7 上安装 Fedora 28 软件包的逻辑。由于其他依赖关系,它通常不起作用。例如,如果您尝试升级您的python-qt5-5.10-3.fc28.x86_64版本,python-qt5-5.10-4.el7.x86_64它可能无法工作,因为 RHEL7 上的 libQT*.so 的 SONAME 不同。但是,如果您对某些没有任何要求(或非常宽松的要求)的软件包执行此操作,则 rpm 本身将允许升级,因为“4.el7”比“3.fc28”大。问题是 rpm 软件包的作者不打算(也没有测试)在不同的平台上安装他的软件包。它很少起作用,但大多数情况下不起作用。

相关内容