当前位置: 首页 > 面试题库 >

git构建期间“无法在@INC中找到ExtUtils / MakeMaker.pm”

朱海超
2023-03-14
问题内容

我建立git不使用包管理器一个相当小的系统(Ubuntu的16.04搬运工图像)(除wgetxz- utilsmakegcc)。因此,我安装了以下先决条件:

apt-get update && apt-get install --yes wget xz-utils make gcc
wget http://www.cpan.org/src/5.0/perl-5.26.1.tar.gz && tar xf perl-5.26.1.tar.gz && cd perl-5.26.1 && ./configure.gnu && make -j16 && make install && cd ..
wget https://ftp.gnu.org/pub/gnu/gettext/gettext-0.19.8.1.tar.xz && tar xf gettext-0.19.8.1.tar.xz && cd gettext-0.19.8.1 && ./configure && make -j16 && make install && cd ..
wget https://www.zlib.net/zlib-1.2.11.tar.gz && tar xf zlib-1.2.11.tar.gz && cd zlib-1.2.11 && ./configure && make -j16 && make install && cd ..
cpan install ExtUtils::MakeMaker
wget https://www.kernel.org/pub/software/scm/git/git-2.13.3.tar.gz && tar xf git-2.13.3.tar.gz && cd git-2.13.3 && ./configure && make -j16 && make install && cd ..

然而,makegit源根失败,因为

Can't locate ExtUtils/MakeMaker.pm in @INC (you may need to install the ExtUtils::MakeMaker module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at Makefile.PL line 3.
BEGIN failed--compilation aborted at Makefile.PL line 3.
make[1]: *** [perl.mak] Error 2
Makefile:83: recipe for target 'perl.mak' failed
make: *** [perl/perl.mak] Error 2
make: *** Waiting for unfinished jobs....
Makefile:1870: recipe for target 'perl/perl.mak' failed

我知道有很多关于Can't locate [module].pm in @INCPerl项目的解决方案,如何告诉CPAN安装所有依赖项?。但是,git使用GNU自动工具和可以解决该问题的选项可能是从到目前为止我还不清楚的环境变量中读取的。

Ubuntu 16.04提供了perl,但没有cpan命令(这就是我添加perl源安装的原因)。perl识别源安装后,但似乎未使用它:

$ which -a perl
/usr/local/bin/perl
/usr/bin/perl
$ which -a cpan
/usr/local/bin/cpan

之后cpan我得到

$ find / -name MakeMaker.pm
/builds/project-0/perl-5.26.1/lib/ExtUtils/MakeMaker.pm
/builds/project-0/perl-5.26.1/cpan/ExtUtils-MakeMaker/lib/ExtUtils/MakeMaker.pm
/root/.cpan/build/ExtUtils-MakeMaker-7.32-0/lib/ExtUtils/MakeMaker.pm
/root/.cpan/build/ExtUtils-MakeMaker-7.32-0/blib/lib/ExtUtils/MakeMaker.pm
/usr/local/lib/perl5/5.26.1/ExtUtils/MakeMaker.pm
/usr/local/lib/perl5/site_perl/5.26.1/ExtUtils/MakeMaker.pm
$ perl -E 'say for @INC'
/usr/local/lib/perl5/site_perl/5.26.1/x86_64-linux
/usr/local/lib/perl5/site_perl/5.26.1
/usr/local/lib/perl5/5.26.1/x86_64-linux
/usr/local/lib/perl5/5.26.1

该设置是从引导脚本中抽象出来的,因此,实际上没有选择使用程序包管理器。

您可以docker run -i -t ubuntu:latest在需要调查环境的情况下使用。

我在https://gitlab.com/krichter/git-docker-
build上
提供了可复制的版本,可以在https://gitlab.com/krichter/git-docker-
build/-
上找到GitLab CI运行器的示例输出。/ jobs /
53888412。


问题答案:

使用./configure --with- perl=/usr/local/bin/perlgit作品,但是目前还不清楚我为什么/usr/local/bin/perl之前没有拿起/usr/bin/perl如果PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

cpan ExtUtils::MakeMaker加入后是没有必要的--with-perl



 类似资料:
  • 本文向大家介绍解决Can't locate ExtUtils/MakeMaker.pm in @INC报错,包括了解决Can't locate ExtUtils/MakeMaker.pm in @INC报错的使用技巧和注意事项,需要的朋友参考一下 在安装mha4mysql时,大概步骤是:解压,perl Makefile.PL,make, make install。在执行 perl Makefile

  • 我试图使用谷歌云构建触发器构建我的docker容器。不幸的是,构建没有找到我的docker文件。它不在我的存储库的根目录下,但我认为我可以指定一个相对路径。显然我配置错误了。下面是我的cloudbuild.yaml和输出日志。 如果有关系的话——我的代码在github中,但我将触发器配置为从该回购中提取。 日志:

  • 我有一个设置,其中存在一个 JenkinsMaster(jenkins-master)机器和一个JenkinsSlave Node(jenkins-server-one)。Slave Node用于编译Maven项目。这些项目是从Gitlab安装中拉下来的。 在主服务器端运行Jenkins作业时,我在控制台中看到以下错误: [ERROR]您指定的目标需要执行一个项目,但此目录(/var/jenkin

  • 当Openshift从git存储库构建时,源代码以这样的方式被克隆/导出,即克隆不是git repo,即没有.git目录。有人知道如何将这种行为变成真正的克隆人吗? 相关文档(https://docs . open shift . com/container-platform/3.5/dev _ guide/builds/build _ inputs . html # source-code)中什

  • 问题内容: 我是Docker的新手,所以请允许我描述我执行的步骤。我在OS X上使用Docker(不是Docker工具箱)。我使用以下命令从Dockerfile构建了映像 Docker确认构建成功。 但是,我在任何地方都找不到图像。我看了这个问题,但是答案是针对Docker工具箱的,并且没有公认的答案所建议的文件夹。 问题答案: 您将可以通过以下命令查看您的docker映像: 并检查哪些容器正在d

  • 例如。 可以更改为 ...什么的。 null