С некоторых пор я стараюсь избавиться от конфликта между системой Perl (MacOS, Catalina: v5.18.4) и Homebrew Perl (v5.30.1). Модули установлены в ~/perl5
Но я понимаю, что система Perl также использует для модулей ~/perl5
Вот некоторые сведения из моей оболочки (zsh ):
which perl
/usr/local/bin/perl
ls -l /usr/local/bin/perl
lrwxr-xr-x 1 mstep admin 30 11 Jan 19:17 /usr/local/bin/perl -> ../Cellar/perl/5.30.1/bin/perl
То есть Perl от Homebrew (v5.30.1). Некоторые другие сведения из системы - Perl и
env | grep PERL
PERL5LIB=/Users/mstep/perl5/lib/perl5
PERL_LOCAL_LIB_ROOT=/Users/mstep/perl5
PERL_MB_OPT=--install_base "/Users/mstep/perl5"
PERL_MM_OPT=INSTALL_BASE=/Users/mstep/perl5
/usr/bin/perl -V
...
%ENV:
PERL5LIB="/Users/mstep/perl5/lib/perl5"
PERL_LOCAL_LIB_ROOT="/Users/mstep/perl5"
PERL_MB_OPT="--install_base "/Users/mstep/perl5""
PERL_MM_OPT="INSTALL_BASE=/Users/mstep/perl5"
@INC:
/Users/mstep/perl5/lib/perl5/5.18.4/darwin-thread-multi-2level
/Users/mstep/perl5/lib/perl5/5.18.4
/Users/mstep/perl5/lib/perl5/darwin-thread-multi-2level
/Users/mstep/perl5/lib/perl5
/Library/Perl/5.18/darwin-thread-multi-2level
/Library/Perl/5.18
...
perl -e 'print join("\n",@INC)'
/Users/mstep/perl5/lib/perl5/5.30.1/darwin-thread-multi-2level
/Users/mstep/perl5/lib/perl5/5.30.1
/Users/mstep/perl5/lib/perl5/darwin-thread-multi-2level
/Users/mstep/perl5/lib/perl5
/usr/local/Cellar/perl/5.30.1/lib/perl5/site_perl/5.30.1/darwin-thread-multi-2level
/usr/local/Cellar/perl/5.30.1/lib/perl5/site_perl/5.30.1
/usr/local/Cellar/perl/5.30.1/lib/perl5/5.30.1/darwin-thread-multi-2level
/usr/local/Cellar/perl/5.30.1/lib/perl5/5.30.1
/usr/local/lib/perl5/site_perl/5.30.1
В своем файле .zshrc
я перепробовал все безрезультатно; На данный момент я все закомментировал:
# PERL_MM_OPT="INSTALL_BASE=$HOME/perl5" cpan local::lib
# eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib=$HOME/perl5)"
# eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"
# PATH="/Users/mstep/perl5/bin${PATH:+:${PATH}}"; export PATH;
# PERL5LIB="/Users/mstep/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}"; export PERL5LIB;
# PERL_LOCAL_LIB_ROOT="/Users/mstep/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}"; export PERL_LOCAL_LIB_ROOT;
# PERL_MB_OPT="--install_base \"/Users/mstep/perl5\""; export PERL_MB_OPT;
# PERL_MM_OPT="INSTALL_BASE=/Users/mstep/perl5"; export PERL_MM_OPT;
# PERL_MM_OPT="INSTALL_BASE=/Users/mstep/perl5"; export PERL_MM_OPT;
# PERL_MM_OPT="INSTALL_BASE=$HOME/perl5" cpan local::lib
Каждый раз, когда я запускаю ZSH, он начинается с установки Running install for module 'local::lib'
, а ZSH жалуется, что YAML
не установлен, заканчивает со следующей ошибкой; если я оставлю некоторые строки perl5
-определения в моем .zshrc
, то даже дважды выдаю эту ошибку:
Dumper.c: loadable library and perl binaries are mismatched (got handshake key 0xc500080, needed 0xc400080)
Как обучить системе perl, чтобы использовать правильная папка модуля? Буду очень признателен за любую помощь!
Марек
пс: Спасибо за ваши ответы:
find /Users/mstep/perl5/lib/perl5 -name '*Dumper*' /Users/mstep/perl5/lib/perl5/PPIx/Regexp/Dumper.pm
/Users/mstep/perl5/lib/perl5/PPIx/QuoteLike/Dumper.pm
/Users/mstep/perl5/lib/perl5/Module/Build/Dumper.pm
/Users/mstep/perl5/lib/perl5/darwin-thread-multi-2level/.meta/Data-Dumper-2.173
/Users/mstep/perl5/lib/perl5/darwin-thread-multi-2level/auto/Data/Dumper
/Users/mstep/perl5/lib/perl5/darwin-thread-multi-2level/auto/Data/Dumper/Dumper.bundle
/Users/mstep/perl5/lib/perl5/darwin-thread-multi-2level/DBI/ProfileDumper.pm
/Users/mstep/perl5/lib/perl5/darwin-thread-multi-2level/DBI/Gofer/Serializer/DataDumper.pm
/Users/mstep/perl5/lib/perl5/darwin-thread-multi-2level/DBI/ProfileDumper
/Users/mstep/perl5/lib/perl5/darwin-thread-multi-2level/Data/Dumper.pm
/Users/mstep/perl5/lib/perl5/YAML/Dumper.pm
/Users/mstep/perl5/lib/perl5/YAML/Dumper.pod
/Users/mstep/perl5/lib/perl5/YAML/Dumper
/Users/mstep/perl5/lib/perl5/PPI/Dumper.pm