【问题标题】:Why won't cpanm install dependencies?为什么 cpanm 不安装依赖项?
【发布时间】:2015-11-15 23:06:15
【问题描述】:

我正在尝试像这样从 cpanm 安装 PAR:cpanm App::Packer::PAR,但它给了我这个错误:

skipping R/RJ/RJBS/perl-5.22.0.tar.bz2
! Installing the dependencies failed: Module ExtUtils::Embed is not installed
! Bailing out the installation for PAR-Packer-1.026.

即使 cpanm 应该自动安装依赖项,我尝试手动安装它:cpanm ExtUtils::Embed,但只得到相同的错误:skipping R/RJ/RJBS/perl-5.22.0.tar.bz2 关于为什么会失败以及如何使其发挥作用的任何想法?

【问题讨论】:

    标签: perl module cpan par cpanm


    【解决方案1】:

    ExtUtils::Embed 是一个双生命模块,这意味着它作为perl 分发as well as 的一部分在第二个分发中分发。

    cpanm 正在尝试通过安装 perl distribution 而不是 ExtUtils-Embed distribution 来安装 ExtUtils::Embed。为什么?我不知道。可能是因为它更新(1.32 而不是 1.2505)。

    cpanm 明智地不愿意升级 perl 本身。

    现在,最新的 App::Packer::PAR 的 META 没有指定 ExtUtils::Embed 的最低版本,因此 ExtUtils-Embed 分发中的版本很可能已经足够好了。以下命令将实现此目的:

    cpanm D/DO/DOUGM/ExtUtils-Embed-1.14.tar.gz
    

    但是,正如我之前提到的,ExtUtils::Embed 是 Perl 自带的。它已经这样做了超过 15 年(从 Perl 5.4 之前开始)。你必须安装它是没有意义的。

    您似乎正在使用一个系统,其提供商决定通过将perl 分发到多个包中来引起头痛。您应该使用系统的包管理器(apt-getyum 或其他)来安装perl 的缺失部分,而不是使用cpanm

    【讨论】:

    • 完美!我所要做的就是yum install "perl(ExtUtils::Embed)" 然后 cpanm 按预期工作。谢谢!
    • 谢谢。我遇到了同样的问题,虽然用perl(LWP::UserAgent)perl(HTTP::Response) 代替。现在,为什么这些是 Yum 关心的问题,对我来说是个谜。 Perl 模块的安装不应该留给 Perl 的包管理器,而不是 Linux 发行版的吗?
    • @mamacdon 你的问题毫无意义。 OP 试图使用 Perl 的包管理器但不能,因为他们的 linux 发行版只包含 Perl 的部分安装,并且一些缺失的部分同意包管理器的要求。这显然不能由 Perl 的包管理器解决;这只能通过安装 Perl 的其余部分来解决。 linux 发行版将丢失的文件作为其包管理器中的包之一提供。
    • @mamacdon 如果他们一直在使用正确安装的 Perl(而不是被他们的 linux 发行版安装的那种),他们可以毫无问题地使用 Perl 的包管理器。
    • 这不是一个问题,而是一个评论。让发行版承担某些 Perl 软件包的责任(通过运送一个残缺的 Perl 安装)对我来说似乎很疯狂。我完全同意 CPAN 是完成这项工作的最佳工具,我只是希望 Red Hat 也有同样的感受。
    猜你喜欢
    • 2019-01-04
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 2021-08-28
    • 2018-11-13
    • 2010-09-30
    • 2018-07-01
    相关资源
    最近更新 更多