【问题标题】:Encode::HanExtra cannot be installed on Heroku (enc2xs not found)Encode::HanExtra 无法安装在 Heroku 上(未找到 enc2xs)
【发布时间】:2018-03-16 07:06:24
【问题描述】:

我正在尝试在 Heroku 上构建一个 Perl 应用程序,它需要模块 Encode::HanExtra。我不确定这是否重要,但我使用的是this unofficial buildpack,并且在cpanfile 中使用requires 'Encode::HanExtra'; 指定了要求。使用的 Perl 版本是 v5.16.3。

每当 cpanm 尝试配置模块时,它都会出错

   Entering Encode-HanExtra-0.23
   Checking configure dependencies from META.yml
   Running Makefile.PL
   Configuring Encode-HanExtra-0.23 ... enc2xs not found! at Makefile.PL line 46.
   ! Configure failed for Encode-HanExtra-0.23. See /app/.cpanm/work/1507137797.173/build.log for details.

Perl 已经包含了 Encode,因为它是一个核心模块,因此应该包含 enc2xs。我尝试强制下载最新版本的 Encode 以查看它是否解决了问题,但没有解决。所以我猜测模块如何找到 enc2xs 存在问题。

通过谷歌搜索错误消息,我可以看到其他 Encode 模块也有类似的错误已被修补,但我不确定它们是否真的与这个问题相同。

我对调试安装 CPAN 模块的问题不是很熟悉,所以我会很感激任何指点。如果模块有一个,我的计划是查看 Makefile.pl。 FWIW 我可以在 Strawberry Perl 上安装这个模块就好了。我只有这个 Heroku 版本的问题。

【问题讨论】:

  • Re "因此应该有enc2xs',这是自安装的perl,还是系统perl?很多unix发行版留下了@987654326的一部分@超出标准安装,并让您使用系统的包管理器安装它们。
  • 这是一个系统 perl。我明确地将requires 'Encode', '2.92'; 添加到cpanfile(并看到它被安装)。但是,值得注意的是 cpanm 在尝试安装 Encode 之前尝试安装 Encode::HanExtra,所以它可能没有帮助。但是,我在 cpanfile 文档中看不到任何强制特定安装顺序的方法。
  • 那么您是否在系统的包管理器中搜索了包含enc2xs 的包?您是否在文件系统中搜索了 enc2xs,以防它位于不在您 PATH 中的目录中?
  • 至于顺序,Encode 2.92 只有在 Encode-HanExtra 依赖的情况下才保证在 Encode-HanExtra 之前安装。 (Encode-HanExtra 确实确实依赖于 Encode,但显然不是 Encode 2.92。)
  • 这是一个关于我的系统包管理器的有趣问题。我正在使用 RHEL 7。我从没想过他们会删掉 Perl 的部分内容并要求单独安装它们。但看起来事情就是这样:在 yum 包管理器中,有一个可用的包 perl-Encode.x86_64 : Character encodings in Perl 可能会给我想要的东西。不幸的是,您必须是 root 才能更新它,我认为这是不允许的(检查)。

标签: perl heroku cpan


【解决方案1】:

我能够通过修改 buildpack 中的配置脚本以在处理 cpanfile (cpanm Encode@2.92) 之前显式安装 Encode 来解决我的问题。

仍然不确定为什么 Perl 系统会被这样破坏,但很高兴它能够正常工作。

【讨论】:

    【解决方案2】:

    您需要安装库“perl-Encode-devel”

    yum install perl-Encode-devel

    【讨论】:

      猜你喜欢
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 2014-12-02
      • 2017-12-24
      • 2020-10-28
      • 1970-01-01
      • 2015-09-29
      相关资源
      最近更新 更多