Почему я получаю «версия (5.12.2) не совпадает с исполняемой версией» с PAR в Perl? - PullRequest
5 голосов
/ 07 октября 2010

Когда я запускаю следующее для создания исполняемого файла из моего Perl-скрипта:

pp -o process_target_mode_data Process_Target_Mode_Data.pl

Я получаю следующее сообщение об ошибке:

 Perl lib version (5.12.2) doesn't match executable version (v5.12.0) at /home/Neil/ActivePerl-5.12/lib/Config.pm line 50.

Compilation failed in require at /home/Neil/ActivePerl-5.12/lib/Errno.pm line 8.
BEGIN failed--compilation aborted at /home/Neil/ActivePerl-5.12/lib/Errno.pm line 8.
Compilation failed in require at /home/Neil/ActivePerl-5.12/lib/File/Temp.pm line 148.
BEGIN failed--compilation aborted at /home/Neil/ActivePerl-5.12/lib/File/Temp.pm line 148.
Compilation failed in require at /home/Neil/ActivePerl-5.12/lib/Archive/Zip.pm line 14.
BEGIN failed--compilation aborted at /home/Neil/ActivePerl-5.12/lib/Archive/Zip.pm line 14.
Compilation failed in require at -e line 459.

/home/Neil/ActivePerl-5.12/site/bin/pp: Failed to extract a parl from 'PAR::StrippedPARL::Static' to file 'parleNrP2Xi' at /home/Neil/ActivePerl-5.12/site/lib/PAR/Packer.pm line 1172, <DATA> line 1.

Может кто-нибудь объяснить мне, чтои как я могу решить эту проблему?

Информация Брайана Д. Фоя запрошена:

[bash-3.2][Neil@willy]$  which pp
/home/Neil/ActivePerl-5.12/site/bin/pp

[bash-3.2][Neil@willy]$   /home/Neil/ActivePerl-5.12/site/bin/pp -o process_target_mode_data Process_Target_Mode_Data.pl
Perl lib version (5.12.2) doesn't match executable version (v5.12.0) at /home/Neil/ActivePerl-5.12/lib/Config.pm line 50.
Compilation failed in require at /home/Neil/ActivePerl-5.12/lib/Errno.pm line 8.
BEGIN failed--compilation aborted at /home/Neil/ActivePerl-5.12/lib/Errno.pm line 8.
Compilation failed in require at /home/Neil/ActivePerl-5.12/lib/File/Temp.pm line 148.
BEGIN failed--compilation aborted at /home/Neil/ActivePerl-5.12/lib/File/Temp.pm line 148.
Compilation failed in require at /home/Neil/ActivePerl-5.12/lib/Archive/Zip.pm line 14.
BEGIN failed--compilation aborted at /home/Neil/ActivePerl-5.12/lib/Archive/Zip.pm line 14.
Compilation failed in require at -e line 459.
/home/Neil/ActivePerl-5.12/site/bin/pp: Failed to extract a parl from 'PAR::StrippedPARL::Static' to file 'parludZfldz' at /home/Neil/ActivePerl-5.12/site/lib/PAR/Packer.pm line 1172,  line 1.
[bash-3.2][Neil@willy]$  


[bash-3.2][Neil@willy]$  /home/Neil/ActivePerl-5.12/bin/cpan -l | grep PAR
PAR     1.002
PAR::Dist       0.47
PAR::Heavy      0.12
PAR::Filter     0.03
PAR::SetupTemp  1.002
PAR::SetupProgname      1.002
PAR::Packer     1.006
PAR::StrippedPARL::Dynamic      0.958
PAR::StrippedPARL::Static       0.958
PAR::StrippedPARL::Base 0.975
PAR::Filter::Bytecode   undef
PAR::Filter::Bleach     undef
PAR::Filter::Obfuscate  undef
PAR::Filter::PatchContent       undef
PAR::Filter::PodStrip   undef
App::Packer::PAR        0.91

Ответы [ 3 ]

3 голосов
/ 20 января 2011

У меня была такая же проблема. Я установил PAR :: Packer из Activestate Perl Package Manager (PPM). Как упоминалось выше в одном из ответов, существует несоответствие версий между двоичными файлами perl и pp. Вот как я это исправил:

  1. Удалите PAR-Packer из PPM.
  2. Открыть командную строку DOS.
  3. Выполнить cpan install PAR::Packer

Это позволит загрузить, скомпилировать и установить пакет из CPAN. При необходимости также будет загружен набор инструментов MinGW. Весь процесс может занять некоторое время на более медленном процессоре.

3 голосов
/ 07 октября 2010

Версия Perl lib (5.12.2) не соответствует исполняемой версии (v5.12.0)

Некоторые части вашей установки Perl имеют другую версию, чем другие. Более конкретно, если вы посмотрите на /home/Neil/ActivePerl-5.12/lib/Config.pm строку 50, вы увидите, что существует явное сравнение версии исполняемого Perl (то есть 5.12.0) с версией используемой библиотеки Config.pm (5.12. 2).

Если вы выполняете новую установку ActivePerl 5.12.2 (чтобы привести все компоненты к одной и той же версии), эта ошибка должна исчезнуть.

2 голосов
/ 07 октября 2010

Найдите местоположение этого pp, затем выясните его версию. Бьюсь об заклад, это осталось от более ранней установки. Убедитесь, что у вас есть PAR для вашей новой версии Perl.

Вы также можете попробовать указать местоположение конкретного pp, который вы хотите использовать, чтобы точно знать, какой из них вы используете:

 $ /full/path/to/5.12.2/pp ...
...