在 RPM 中编辑 Spec 文件

在 RPM 中编辑 Spec 文件

我正在尝试编辑一个规范文件,当我尝试使用 RPM 将其安装到其他计算机上时,该文件总是失败。我用的是CentOS。这是错误。

error: Failed dependencies:
perl(ActsUtil) is needed by my_program
perl(ParseBishop) is needed by my_program

这两个文件都是 RPM 的依赖项。问题是,这两个文件实际上是在 RPM 包中提供的。这两个文件都是 .pm 文件并且位于/opt/mysoftware/bin.我知道可以使用 来解决rpm - ivh --nodeps mysoftware。但我不喜欢使用这种方法。所以,我尝试修复规范文件。这是我尝试过的一些代码。

第一次尝试

Summary:....
Name:..
Version:..
....
....
Provides: perl(ParseBishop), perl(ActsUtil)
...
...
%install
...
...
%changelog

第二次尝试

Summary:....
Name:..
Version:..
....
....
Provides: ParseBishop, ActsUtil
...
...
%install
...
...
%changelog

第三次尝试

Summary:....
Name:..
Version:..
....
....
Provides: ParseBishop.pm, ActsUtil.pm
...
...
%install
...
...
%changelog

第四次尝试

Summary:....
Name:..
Version:..
....
....
Provides: /opt/mysoftware/bin/ParseBishop, /opt/mysoftware/bin/ActsUtil
...
...
%install
...
...
%changelog

我是否执行了“提供”命令错误?还是我解决问题的方法已经错了?

答案1

我已经找到了解决方案。问题是我的提供位于错误的区域。它应该位于代码的顶部。

Summary:....
Name:..
Version:..
Provides: perl(ParseBishop), perl(ActsUtil)
...
...
%install
...
...
%changelog

为了验证这一点。我已经 rpm -qp --provides mysoftware.rpm在内置文件夹中使用了。它将显示我的包裹中提供的内容。感谢您的所有帮助。

答案2

rpm -i --nodeps my_program.rpm

将跳过任何依赖问题。

答案3

预先要求?

我想知道您是否需要将它们列为PreReqs

Prereq 与 require 的不同之处仅在于 PreReq 保证在包含 PreReq 的软件包之前安装。 PreReq 仅用于订购软件包,否则 PreReq 与 Requires: 依赖项完全相同。

来源:http://rpm5.org/docs/api/dependency.html

例子

PreReq: perl(ActsUtil), perl(ParseBishop)

需要

如果这些 Perl 模块实际上是该 RPM 安装所必需的,那么它们是否需要上Requires线Provides

例子

Requires: perl(ParseBishop), perl(ActsUtil)

只是文件?

如果它们只是您在安装过程中提供的 .pm 文件,那么这些文件不需要列在除 RPM 安装和清单之外的任何地方。

依赖于它们的其他 RPM 将只需要此 RPM。

相关内容