我试图将RHEL6上的git 2.5.2编译到我的主目录中,它需要一个perl模块ExtUtils :: MakeMaker。 ExtUtils :: MakeMaker没有安装在标准位置,由于组织限制,安装包(通过yum)是不可能的。
ExtUtils :: MakeMaker需要Test :: Harness,它也没有安装。 Test :: Harness依赖于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
答案 0 :(得分:0)
它安装在哪里? 只需将该目录添加到PERL5LIB
即可export PERL5LIB=/home/user/stuff/lib/perl5:$PERL5LIB
更新:尝试安装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
来自http://git-scm.com/book/en/v2/Getting-Started-Installing-Git
的引用答案 1 :(得分:0)
编译更近期(2018年第二季度,差不多3年后),Git版本可能会更容易,因为perl
/部分的构建过程已经通过断开Git MakeMaker
而大大简化了。
commit 7a7bfc7见Jonathan Nieder (artagnon
)(2018年1月2日)
请参阅commit 805a378(2017年12月22日)和commit 20d2a30(2017年12月10日)Ævar Arnfjörð Bjarmason (avar
)。
(由Junio C Hamano -- gitster
--合并于commit ed1b87e,2018年2月13日)
Ævar解释道:
替换下使用的
perl/Makefile.PL
和后备perl/Makefile
NO_PERL_MAKEMAKER=NoThanks
具有更简单的实现方式 灵感来自i18n基础设施的构建过程如何运作 请参阅commit 5e9637c from Git v1.7.9-rc0, Nov. 2011。首先拥有
Makefile.PL
的原因是它 最初构建了一个perl C绑定到与libgit
(commit b1edc53d0, Git v1.4.3-rc1, June 2006)的接口,这个功能在Git.pm
进入{{1}之前被移除(commit 18b0fc1, Git v1.4.3-rc1, Sept. 2006)分支。从那以后我们就开始维持一个后备
master
perl/Makefile
无法在某些平台上发挥作用(commit f848718, Git v1.5.0-rc0, Dec. 2006 这只是冰山一角。我们在顶级MakeMaker
(commit ee9be06, Git v1.7.12-rc1, Jul. 2012)中有PM.stamp
黑客来检测我们是否需要重新生成Makefile
,我刚刚修复了perl/perl.mak
以解决像perl
版本从我们(commit c59c4939, Git v2.13.0-rc0, March 2017)下更改。绝对没有理由为什么这种情况需要变得如此复杂 我们从这个精心制作的Rube Goldberg机器中得到的就是将
perl/*
复制到perl/blib/*
,因为我们进行了字符串替换 要在源中硬编码*.pm
的{{1}}个文件,以及 pod2man-ing@@LOCALEDIR@@
&朋友。所以用几乎是副本的东西替换整个东西 我们如何从
Git.pm
生成po/build/**.mo
,只需要一个小sed(1)
命令而不是po/*.po
正如所做的那样,将文件从msgfmt
重命名为*.pm
只是为了表明它们已生成(请参阅"perldoc -f require")。