3

我在 Mac 上,所以当然我在 Mac 上遇到了 perl 这个巨大的问题,操作系统试图保护我,安装它是一场噩梦。解决方案似乎是“制作自己的 perl,而不是使用带有操作系统的 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 和这种系统管理员的东西都很糟糕,所以我不是 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。坏消息是,我仍然遇到完全相同的愚蠢问题。

4

1 回答 1

-1

是的... MacOS Perl 是你不应该接触的东西。

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

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

和......安装一些闪亮的perl

并且...按照网站上的说明进行操作cpanm

于 2019-04-15T19:32:49.213 回答