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

2023-11-24

我正在建造git在一个非常小的系统(Ubuntu 16.04 docker 镜像)上,不使用包管理器(除了wget, xz-utils, make and gcc)。因此,我安装先决条件如下:

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 ..

然而,make in the git源根失败,因为

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 @INC对于 Perl 项目,如何告诉 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

After cpan I get

$ 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-buildGitLab CI 运行程序的示例输出可以在以下位置找到:https://gitlab.com/krichter/git-docker-build/-/jobs/53888412.


在CentOS7中,我遇到这个问题,我发现我应该安装perl-devel首先:

yum install perl-devel

然后重试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • 将 Ajax.BeginForm 与 A​​SP.NET MVC 3 Razor 结合使用

    有使用教程或代码示例吗Ajax BeginForm在 Asp net MVC 3 中 哪里存在不显眼的验证和 Ajax 对于 MVC 3 来说 这是一个难以捉摸的主题 我似乎无法让我的表单正常工作 它将执行 Ajax 提交 但忽略验证错误
  • INSERT 语句与 FOREIGN KEY 约束冲突错误

    您好 我收到此错误 INSERT 语句与 FOREIGN KEY 约束 FK dbo AspNetUsers dbo Contacts ContactID 冲突 冲突发生在数据库 aspnet COGMakati 2014011901555
  • TextView 超链接不起作用?

    Why TextView超链接不起作用 使用超链接作为自定义内部dialog box 超链接未出现 我哪里弄错了 怎么解决呢 给我指导 XML 代码是
  • 如何在一个图中绘制“多个箱形图”?

    我有以下格式的数据 repetition packet route energy level 1 1 1 10 0 1 1 2 12 3 1 1 3 13 8 1 2 1 9 2 1 2 2 10 1 1 2 3 11 2 50 99 3
  • 有人对“阅读时间算法”有任何线索吗?

    只是好奇如何计算某人阅读包含 x 个字符和 或 y 个单词的段落所需的时间长度 对此有什么想法吗 假设它有 938 个单词 或者如果你使用 JavaScript 你可以这样做 const blogPost article or blog p
  • 解决后承诺值未放入模板

    我对 javascript 和 Promise 相当陌生 所以我可能无法理解所有基本概念 但我正在尝试 我的模型中有一个函数可以检查友谊状态 friendShipStatus function var self this return Em
  • 如何按字母顺序排序,同时忽略大小写?

    我有这个代码 但仅适用于小写字母 我希望它对列表进行排序 同时忽略大写字母 package sortarray com import java util ArrayList import java util List import andr
  • 如何使用 AngularJS $resource 自定义操作?

    我一直在一些存储库中使用自定义操作 到目前为止 我只需要指定 url 和方法 例如 updatePassword url ENV NITRO PROJECT REST URL admins adminId password method P
  • 使用 File.Encrypt 加密文件,然后将其解密到内存流

    我需要实现一个简单的文件加密 然后在需要时将其解密到内存流 最简单的方法似乎是使用 File Encrypt 来做到这一点 但是是否可以将文件解密到内存流 而不是在将文件读取到内存流之前解密文件 从而将其暴露一段时间 如果 File Enc
  • Xcode 4.3 和 iPhone 模拟器 4.2

    有没有办法在 Xcode 中安装 iPhone Simulator 4 24 3为了狮子 我只能找到如何在 Xcode 4 2 中安装它 但不能找到 Xcode 4 3 for Lion 中的安装方法 我找到了一种将iPhone模拟器4 2
  • Spotify API 非法的redirect_uri

    我正在尝试完成 Spotify 开发人员 API 教程 但当我尝试访问用户登录页面时 出现此错误 我已经三次检查代码中的 URI 是否与 MyApplications 页面上的 URI 匹配 但它仍然无法工作 这是脚本 var expres
  • Python Eyed3 警告

    我的一些 mp3 文件似乎有非标准流派 当我循环遍历它们时 我必须在程序中执行此操作 我收到大量如下警告 eyed3 id3 WARNING Non standard genre name Rock Punk Pop Punk Rock A
  • django-simple-history 中 ManyToManyField 的历史

    简而言之 我需要在历史记录中保存对我的模型之一的多对多字段所做的更改 我可以从 https github com Kyruus django simple history commit 5ba8d2b4d72819f154a11f29779
  • 使用 automake 设置每个文件的标志

    有没有办法使用 automake 在每个文件的基础上设置标志 特别是 如果我有一个 C 项目 并且想要使用 W 编译除我想要禁用特定警告的文件之外的所有文件 我该怎么办 我尝试过类似的东西 CXXFLAGS WAll bin PROGRAM
  • Thread.suspend() 和 .resume() 的替代方法

    我有一大段代码不是循环 只是一个发生一次但需要一些时间的命令列表 我需要它根据不断变化的布尔值随时暂停或终止此操作 我可以使用不同的线程来挂起 恢复和停止此代码 但这些方法已被弃用 因此我想避免使用它们 我可以检查每行代码之间的布尔值 但我
  • PHP表单验证函数

    我目前正在编写一些 PHP 表单验证 我已经验证了客户端 并且有一些重复的代码 我认为这些代码在一个不错的 PHP 小函数中可以很好地工作 但是我很难让它工作 我确信这只是语法问题 但我无法确定它 任何帮助表示赞赏 Validate pho
  • 如何记录所有 Django 表单验证错误?

    在我的 Django 应用程序中 我有一个 forms py 文件 在其中定义了与表单输入屏幕对应的类负载 这些类中的每一个都在该属性 字段特定的 clean 函数中或在表单类的整体 clean 函数中进行一些验证 如果这些 clean 函
  • 清理整数数据库输入

    我有一个通过 POST 请求获取数据的应用程序 我正在使用这些数据将新行插入数据库 我知道使用mysql real escape string 加上删除 和 是处理字符串的方法 但是整数值呢 现在 我正在使用 PHP 函数intval 在他
  • Gradle 同步失败:com/intellij/openapi/util/io/FileUtil.toSystemIndependentName 的 @NotNull 参数“aFileName”的参数不能为 null

    我将我的项目导入到Android Studio 1 3 2现在显示错误 Gradle sync started Gradle sync failed Argument for NotNull parameter aFileName of c
  • git 构建期间“无法在 @INC 中找到 ExtUtils/MakeMaker.pm”

    我正在建造git在一个非常小的系统 Ubuntu 16 04 docker 镜像 上 不使用包管理器 除了wget xz utils make and gcc 因此 我安装先决条件如下 apt get update apt get inst