XS. c: загружаемая библиотека и perl двоичные файлы не совпадают (получил ключ рукопожатия 0xce00080, требуется 0xdb80080) - PullRequest
0 голосов
/ 03 апреля 2020

Я использовал perl5 и выполнял свой скрипт

perl myscript.R 

и получал следующую ошибку.

Can't locate local/lib.pm in @INC (you may need to install the local::lib module) (@INC contains: /kb/deployment/lib /kb/deployment/lib/perl5 /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/x86_64-linux-gnu/perl5/5.24 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base).
BEGIN failed--compilation aborted.

, поэтому я установил local :: lib, используя следующую команду

cpan local::lib

, но после того, как попытался использовать perl myscript.pl и получил

  XS.c: loadable library and perl binaries are mismatched (got handshake key 0xce00080, needed 0xdb80080)

Я не знаю, как решить эту проблему.

1 Ответ

1 голос
/ 03 апреля 2020

Версия двоичного компонента и версия компонента Perl модуля, который вы пытаетесь загрузить, не совпадают.

Похоже, вы использовали local :: lib для установки модулей в твой дом реж. Обновление perl приводит к сбою этой настройки. Решение состоит в том, чтобы удалить ~/perl5 [1] и переустановить модули, которые вы установили локально.


Что делать, если у вас более одной сборки Perl или у вас нет не хотите, чтобы эта проблема возникала при следующем обновлении Perl?

Существуют способы сообщить установщикам, чтобы они устанавливали модули в вашей домашней директории таким образом, чтобы несколько сборок Perl могли совместно использовать каталог установки, [2] , но на самом деле он не работает. [3]

Вот почему я использую perlbrew для установите Perl в моем домашнем каталоге, чтобы мне не пришлось переопределять место установки модулей. Использование perlbrew имеет следующие преимущества:

  • Вы можете иметь несколько сборок Perl, установленных без хлопот.
  • Вы можете обновить Perl, когда хотите, независимо от Обновления ОС.
  • Вы можете протестировать скрипты и модули с более новыми версиями Perl, прежде чем переключиться на его постоянное использование.
  • Вы можете протестировать скрипты и модули с более старыми версиями Perl .

  1. Ну, переименовывайте его, пока не убедитесь, что с ним покончено.
  2. Передав PREFIX / --prefix и LIB / --lib варианты Makefile.PL / Build.PL вместо INSTALL_BASE / --install-base.
  3. Проблемы возникают, когда модуль pure- Perl зависит от модуля XS.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...