【问题标题】:rpm dependencies required even though they are there需要 rpm 依赖项,即使它们存在
【发布时间】:2021-09-13 09:46:36
【问题描述】:

我正在尝试在 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 并没有发现这些依赖项的存在。我重新启动,刷新..等,但没有任何变化。

【问题讨论】:

  • 您的系统上是否有多个perlwhich perl 的输出是什么? perl --versioncpan -v 的输出是什么?
  • 您似乎混淆了直接安装所需模块(通过 cpan)和通过 rpm 包管理器安装。您可能需要卸载这两个模块,然后安装相应的 rpn 包
  • @HåkonHægland which perl => /bin/perl; perl 版本是 perl 5 版本 16。尽管我确实使用它来安装上述模块,但 cpan -v 不返回任何内容。
  • 你的错误是你使用rpm来安装perl模块——rpm没有安装依赖。相反,您应该使用yumdnfyum, dnf.

标签: perl centos7 rpm rpmbuild


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    我也找到了

    yum repo-pkgs my-rpms install

    在 repo 中安装所有软件包比通过 google 找到的其他答案可靠得多。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2020-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-07
        • 2010-10-26
        • 2013-10-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多