MacOS: две Perl установки: «Dumper. c: загружаемая библиотека и perl двоичные файлы не совпадают» - PullRequest
1 голос
/ 19 января 2020

С некоторых пор я стараюсь избавиться от конфликта между системой 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
...