需要 rpm 依赖项,即使它们存在

时间:2021-07-01 10:06:35

标签: perl centos7 rpm rpmbuild

我正在尝试在 Centos7 虚拟机上安装自定义的 openresty。

sudo rpm -i openresty-1.19.3.1-1.el7.x86_64.rpm

但是我收到此错误:

        perl(Test::Nginx::Socket::Lua) is needed by openresty-1.19.3.1-1.el7.x86_64
        perl(Test::Nginx::Socket::Lua::Stream) is needed by openresty-1.19.3.1-1.el7.x86_64

但是我已经用 cpan 安装了这些依赖项,当我再次尝试安装它们时,我得到:

Test::Nginx is up to date (0.29).

Text::Nginx 包含 socket::lua 子类。

我不确定那里发生了什么。 rpm 似乎没有发现这些依赖项的存在。我重新启动,刷新...等,但没有改变。

3 个答案:

答案 0 :(得分:1)

检查我关于 python How to include pip packages in rpm build 的非常相似的答案

RPM 检查您在 rpmdb 中的内容,而不是您在磁盘上安装的内容。 RPM 无法真正理解所有这些生态系统(python、perl、ruby、rust、java、nojs ......)。

您要么需要打包依赖项(cpan2spec 是您的朋友)或使用 create-fake-rpm

答案 1 :(得分:0)

最终对我有用的是创建一个本地存储库,它本身安装了依赖项。

我也发现了

yum repo-pkgs my-rpms install

在存储库中安装所有软件包比通过谷歌找到的其他答案更可靠。

答案 2 :(得分:0)

RPM 只知道使用 rpm 安装的东西。如果您直接从 CPAN 安装 CPAN 模块,那么 RPM 不会知道它。