【发布时间】: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 才能更新它,我认为这是不允许的(检查)。