如何让cpanm使用我的本地perl5?

时间:2019-04-15 16:57:35

标签: macos perl homebrew cpanm

我在Mac上,所以我当然遇到了huge problem with perl on the Mac操作系统正在尝试保护我的地方,这是安装的噩梦。解决方案似乎是“制作自己的perl,而不是与操作系统一起使用”,所以我做到了。我运行brew install perl,现在在我的.bashrc中有这个

PATH="/Users/ericmueller/perl5/bin${PATH:+:${PATH}}"; export PATH;
PERL5LIB="/Users/ericmueller/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
PERL_LOCAL_LIB_ROOT="/Users/ericmueller/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
PERL_MB_OPT="--install_base \"/Users/ericmueller/perl5\""; export PERL_MB_OPT;
PERL_MM_OPT="INSTALL_BASE=/Users/ericmueller/perl5"; export PERL_MM_OPT;
eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib=$HOME/perl5)"
source ~/perl5/perlbrew/etc/bashrceval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib=$HOME/perl5)"

老实说,我不知道这大部分是什么;-),但看起来我的文件夹中有我自己的perl,而且我看到我可以运行简单的perl脚本,所以我觉得一切都很好。

所以现在我要安装cpanminus和DBI。

我安装了cpanminus(brew install cpanminus),没有错误。但是,当我运行cpanm DBI时,它会失败,而当我查看失败的日志时,我会看到:

"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- DBI.bs blib/arch/auto/DBI/DBI.bs 644
"/usr/bin/perl" -p -e "s/~DRIVER~/Perl/g" ./Driver.xst > Perl.xsi
"/usr/bin/perl" "/System/Library/Perl/5.18/ExtUtils/xsubpp"  -typemap '/System/Library/Perl/5.18/ExtUtils/typemap' -typemap '/Users/ericmueller/.cpanm/work/1555346710.17160/DBI-1.642/typemap'  Perl.xs > Perl.xsc
mv Perl.xsc Perl.c
cc -c   -g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -fstack-protector -Os   -DVERSION=\"1.642\" -DXS_VERSION=\"1.642\"  "-I/System/Library/Perl/5.18/darwin-thread-multi-2level/CORE"  -W -Wall -Wpointer-arith -Wbad-function-cast -Wno-comment -Wno-sign-compare -Wno-cast-qual -Wmissing-noreturn -Wno-unused-parameter Perl.c
In file included from Perl.xs:7:
./DBIXS.h:22:10: fatal error: 'EXTERN.h' file not found
#include <EXTERN.h>
         ^~~~~~~~~~
1 error generated.
make: *** [Perl.o] Error 1

这完全是愚蠢的Mac perl问题,并且出现 问题是因为它仍在尝试将DBI库(或其依赖项之一)放在/ usr / bin /中。大不行又或者它正在尝试使用系统perl进行安装,因此这也失败了。我的主文件夹中有我自己的perl5安装。那是应该放东西并与他们合作的地方。

因此,如果这是问题所在(并且我真的对perl和这种sysadmin东西都很讨厌,那么我不是100%肯定!),如何使cpanm与我的perl一起工作在我的主文件夹中,而不是在/ usr / bin /中?我不希望在/ usr / bin /中发生任何事情,因为那不是启动器!

**编辑我从bashrc中删除了除PATH命令以外的所有内容,现在当我运行cpanm DBI

时得到了此信息
!
! Can't write to /Library/Perl/5.18 and /usr/local/bin: Installing modules to /Users/ericmueller/perl5
! To turn off this warning, you have to do one of the following:
!   - run me as a root or with --sudo option (to install to /Library/Perl/5.18 and /usr/local/bin)
!   - Configure local::lib in your existing shell to set PERL_MM_OPT etc.
!   - Install local::lib by running the following commands
!
!         cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
!
--> Working on DBI
Fetching http://www.cpan.org/authors/id/T/TI/TIMB/DBI-1.642.tar.gz ... OK
Configuring DBI-1.642 ... OK
Building and testing DBI-1.642 ... FAIL
! Installing DBI failed. See /Users/ericmueller/.cpanm/work/1555348167.22814/build.log for details. Retry with --force to force install it.

所以好消息是,我肯定在/ Users文件夹中使用自定义perl5随附的cpanm。坏消息是,我仍然遇到同样的愚蠢问题。

1 个答案:

答案 0 :(得分:-1)

是的... MacOS Perl是您不应该碰的东西。

是的...你可以做到的。

但是...常见的做法,https://perlbrew.pl

然后...安装一些shinny perl

然后...按照网站上有关cpanm

的说明进行操作