RPM 依赖性虽已存在,但需要安装

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

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

但是我遇到了以下错误:

        openresty-1.19.3.1-1.el7.x86_64需要 perl(Test::Nginx::Socket::Lua)
        openresty-1.19.3.1-1.el7.x86_64需要 perl(Test::Nginx::Socket::Lua::Stream)

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

Test::Nginx已是最新的版本(0.29)。

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

我不确定发生了什么。似乎rpm没有发现这些依赖项的存在。我尝试过重启、刷新等操作,但没有改变。

点赞
用户3489429
用户3489429

将下面翻译成中文并且保留原本的 markdown 格式

看看我关于 Python 的非常相似的答案 如何在 RPM 构建中包含 pip 包

RPM 检查的是 rpmdb 中的内容,而不是磁盘上已安装的内容。RPM 无法真正理解所有这些生态系统(Python, Perl, Ruby, Rust, Java, Node.js ...)。

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

2021-07-02 09:24:28
用户7419228
用户7419228

最终对我有效的方法是创建一个本地 repo,它自己安装了依赖项。

我还发现

yum repo-pkgs my-rpms install

比通过 Google 找到的其他答案更可靠,可以安装 repo 中的所有包。

2021-07-02 11:52:23
用户7231
用户7231

RPM 仅能识别通过 rpm 安装的内容。如果你直接从 CPAN 安装了一个模块,那么 RPM 就无法知晓它的存在。

2021-07-02 20:37:01