Как мне заставить cpanm использовать мой локальный perl5? - PullRequest
2 голосов
/ 15 апреля 2019

Я на Mac, поэтому, конечно, я сталкиваюсь с этой огромной проблемой с perl на 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, так и с такими сисадминами, так что я не уверен на 100%!)как мне заставить cpanm работать с моим perl в моей домашней папке, а не в / usr / bin /?Я не хочу, чтобы НИЧЕГО происходило в / usr / bin /, поскольку это не начало!

** РЕДАКТИРОВАТЬ Я удалил все, кроме команды PATH, из моего bashrc, и теперь я получаю это при запуске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.

Итак, хорошая новость в том, что я определенно использую cpanm, который поставляется с моим настраиваемым perl5 в моей папке / Users.Плохая новость в том, что у меня все та же глупая проблема.

1 Ответ

0 голосов
/ 15 апреля 2019

да ... MacOS Perl - это то, что вам лучше не трогать.

да ... Вы можете сделать это.

, но ... Обычная практика, https://perlbrew.pl

и ... Установите какой-нибудь shinny perl

и ... следуйте инструкциям на сайте о cpanm

...