Git 解决ExtUtils::MakeMaker和Test::Harnese之间的循环依赖关系

Git 解决ExtUtils::MakeMaker和Test::Harnese之间的循环依赖关系,git,perl,rhel6,makemaker,Git,Perl,Rhel6,Makemaker,我正在尝试将RHEL6上的Git2.5.2编译到我的主目录中,它需要一个perl模块ExtUtils::MakeMaker。ExtUtils::MakeMaker未安装在标准位置,由于组织限制,无法(通过yum)安装软件包 ExtUtils::MakeMaker需要测试::线束,但也未安装。线束依赖于ExtUtils::MakeMaker,有没有办法打破这种依赖关系,或者有没有办法编译git而不依赖于ExtUtils::MakeMaker 尝试安装ExtUtils::MakeMaker时的输出:

我正在尝试将RHEL6上的Git2.5.2编译到我的主目录中,它需要一个perl模块ExtUtils::MakeMaker。ExtUtils::MakeMaker未安装在标准位置,由于组织限制,无法(通过yum)安装软件包

ExtUtils::MakeMaker需要测试::线束,但也未安装。线束依赖于ExtUtils::MakeMaker,有没有办法打破这种依赖关系,或者有没有办法编译git而不依赖于ExtUtils::MakeMaker

尝试安装ExtUtils::MakeMaker时的输出:

Using included version of CPAN::Meta (2.120351) because it is not already installed.
Using included version of Parse::CPAN::Meta (1.4405) because it is not already installed.
Using included version of CPAN::Meta::YAML (0.008) because it is not already installed.
Using included version of ExtUtils::Manifest (1.65) because it is not already installed.
Using included version of JSON::PP (2.27203) because it is not already installed.
Using included version of ExtUtils::Install (1.54) because it is not already installed.
Using included version of CPAN::Meta::Requirements (2.127) because it is not already installed.
Generating a Unix-style Makefile
Writing Makefile for ExtUtils::MakeMaker
Writing MYMETA.yml and MYMETA.json
Can't locate Test/Harness.pm in @INC (@INC contains: bundled/CPAN-Meta bundled/JSON-PP-Compat5006 bundled/Parse-CPAN-Meta bundled/CPAN-Meta-YAML bundled/File-
Temp bundled/ExtUtils-Manifest bundled/JSON-PP bundled/ExtUtils-Install bundled/Scalar-List-Utils bundled/CPAN-Meta-Requirements lib . /usr/local/lib64/perl5
/usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at Makefile.PL line 143.
git make的输出:

    SUBDIR perl
/usr/bin/perl Makefile.PL PREFIX='/home/svc_rrtd/local' INSTALL_BASE='' --localedir='/home/svc_rrtd/local/share/locale'
Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 3.
BEGIN failed--compilation aborted at Makefile.PL line 3.
make[1]: *** [perl.mak] Error 2
make: *** [perl/perl.mak] Error 2
它安装在哪里? 只需将该目录添加到

更新:尝试安装git的必备组件,如

$ sudo yum install curl-devel expat-devel gettext-devel \
  openssl-devel perl-devel zlib-devel
$ sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
  libz-dev libssl-dev
这是一段引自

的话,它安装在哪里? 只需将该目录添加到

更新:尝试安装git的必备组件,如

$ sudo yum install curl-devel expat-devel gettext-devel \
  openssl-devel perl-devel zlib-devel
$ sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
  libz-dev libssl-dev
这是从编译更新版本(2018年第2.17季度,大约3年后)的Git中引用的一句话,因为Git脱离了
MakeMaker
,从而大大简化了
perl
/part的构建过程

参见作者(2018年1月2日)
参见(2017年12月22日)和(2017年12月10日)作者。
(于2018年2月13日合并)

Ævar解释说:

替换下使用的
perl/Makefile.PL
和回退
perl/Makefile
NO\u PERL\u MAKEMAKER=NoThanks
实现简单得多 受i18n基础架构构建过程的启发。

Makefile.PL
放在首位的原因是 最初是构建一个perl C绑定到与
libgit
()的接口,这个功能在
Git.pm
进入
master
分支之前被删除()

从那以后,我们开始维护一个后备
perl/Makefile
,如下所示
MakeMaker
无法在某些平台上工作(.
这只是冰山一角。我们在顶层的
Makefile
()中有
PM.stamp
hack来检测我们是否需要重新生成
perl/perl.mak
,我最近刚刚修复了它,以处理像
perl
版本从我们下面改变()这样的问题

完全没有理由再让这件事如此复杂了。
我们从这台精心设计的Rube Goldberg机器中得到的只是将
perl/*
复制到
perl/blib/*
,就像我们在
*.pm
文件在源代码中的硬编码
@@LOCALEDIR@
,以及 pod2man-ing
Git.pm
&朋友

所以,用一个几乎是 如何从
po/*.po
生成
po/build/**.mo
,只需一个小的 命令而不是
msgfmt

完成此操作后,将文件从
*.pm
重命名为
*.pmc
,以指示它们已生成(请参阅)


使用Git2.32(2021年第2季度),构建过程得到清理

参见(2021年5月12日)和,,(2021年5月5日)的作者。
(于2021年5月20日合并)

:在
NO\u GETTEXT=Y
签字人:Ævar ArnfjörðBjarmason

将我在(“
i18n
:添加用gettext翻译Git的基础设施”,2011-11-18,Git v1.7.9-rc0--)中添加的i18n函数的逻辑更改为在定义了
NO_gettext
时使用传递函数

NO_GETTEXT=Y
生效时,这将加快使用此库的命令的编译时间。
在我的机器上加载它和POSIX.pm大约需要20毫秒,而仅仅实例化Perl本身需要2毫秒

编译较新版本(2018年第2.17季度,大约3年后)的Git可能会更容易,因为将Git从
MakeMaker
中分离出来大大简化了
perl
/part的构建过程

参见作者(2018年1月2日)
参见(2017年12月22日)和(2017年12月10日)作者。
(于2018年2月13日合并)

Ævar解释说:

替换下使用的
perl/Makefile.PL
和回退
perl/Makefile
NO\u PERL\u MAKEMAKER=NoThanks
实现简单得多 受i18n基础架构构建过程的启发。

Makefile.PL
放在首位的原因是 最初是构建一个perl C绑定到与
libgit
()的接口,这个功能在
Git.pm
进入
master
分支之前被删除()

从那以后,我们开始维护一个后备
perl/Makefile
,如下所示
MakeMaker
无法在某些平台上工作(.
这只是冰山一角。我们在顶层的
Makefile
()中有
PM.stamp
hack来检测我们是否需要重新生成
perl/perl.mak
,我最近刚刚修复了它,以处理像
perl
版本从我们下面改变()这样的问题

完全没有理由再让这件事如此复杂了。
我们从这台精心设计的Rube Goldberg机器中得到的只是将
perl/*
复制到
perl/blib/*
,就像我们在
*.pm
文件在源代码中的硬编码
@@LOCALEDIR@
,以及 pod2man-ing
Git.pm
&朋友

所以,用一个几乎是 如何从
po/*.po
生成
po/build/**.mo
,只需一个小的 命令而不是
msgfmt

完成此操作后,将文件从
*.pm
重命名为
*.pmc
,以指示它们已生成(请参阅)


使用Git2.32(2021年第2季度),构建过程