ZMQ::LibZMQ3 и клубничный перл

Я пытаюсь установить ZMQ::LibZMQ3 на клубничный Perl, но получаю следующее сообщение об ошибке при установке этого модуля, также мои библиотеки zmq и их включения находятся в папке C:\Program Files\ZeroMQ 3.2.2:

cpan> install ZMQ::LibZMQ3

Running install for module 'ZMQ::LibZMQ3'
Running make for D/DM/DMAKI/ZMQ-LibZMQ3-1.09.tar.gz
Checksum for C:\strawberry\cpan\sources\authors\id\D\DM\DMAKI\ZMQ-LibZMQ3-1.09.tar.gz ok
Scanning cache C:\strawberry\cpan\build for sizes
............................................................................DONE

  CPAN.pm: Building D/DM/DMAKI/ZMQ-LibZMQ3-1.09.tar.gz

Cannot determine perl version info from lib/ZMQ/LibZMQ3.pm
Probing environment variables:
Probing libzmq via pkg-config ...
'pkg-config' is not recognized as an internal or external command,
operable program or batch file.
 - No libzmq found...
Probing zeromq3 via pkg-config ...
'pkg-config' is not recognized as an internal or external command,
operable program or batch file.
 - No zeromq3 found...
Detected the following ZMQ settings:
 + ZMQ_HOME = "C:\Program Files\ZeroMQ 3.2.2"
 + ZMQ_H = "C:\Program Files\ZeroMQ 3.2.2\include\zmq.h"
 + ZMQ_INCLUDES = "C:\Program Files\ZeroMQ 3.2.2\include"
 + ZMQ_LIBS = "C:\Program Files\ZeroMQ 3.2.2\lib"
 + ZMQ_TRACE = (null)
Can't link/include C library 'zmq.h', 'zmq', aborting.
Warning: No success on command[C:\strawberry\perl\bin\perl.exe Makefile.PL]
  DMAKI/ZMQ-LibZMQ3-1.09.tar.gz
  C:\strawberry\perl\bin\perl.exe Makefile.PL -- NOT OK
Running make test
  Make had some problems, won't test
Running make install
  Make had some problems, won't install
Stopping: 'install' failed for 'ZMQ::LibZMQ3'.
Failed during this command:
 DMAKI/ZMQ-LibZMQ3-1.09.tar.gz                : writemakefile NO 'C:\strawberry\perl\bin\perl.exe Ma
kefile.PL' returned status 512

Можно ли установить этот модуль cpan на окна, и если да, может ли кто-нибудь помочь, в чем может быть проблема?


person smith    schedule 19.02.2013    source источник
comment
Ха, вся твоя репутация за награду. ;) Не уверен, что это актуально, но похоже, что это не работает не только в вашей системе: code.activestate .com/ppm/ZMQ-LibZMQ3   -  person Qtax    schedule 03.03.2013


Ответы (3)


Я только что попробовал это в своей среде ActiveStatePerl.

Сначала я получил те же результаты, но затем переименовал свою установку ZMQ и удалил пробелы.

C:\App\ZeroMQ 2.2.0 по C:\App\ZeroMQ2_2_0.)

+ ZMQ_HOME = C:\App\ZeroMQ2_2_0
+ ZMQ_H = C:\App\ZeroMQ2_2_0\include\zmq.h
+ ZMQ_INCLUDES = C:\App\ZeroMQ2_2_0\include
+ ZMQ_LIBS = C:\App\ZeroMQ2_2_0\lib
+ ZMQ_TRACE = (null)

Так я прошел проблему

Can't link/include C library 'zmq.h', 'zmq', aborting.

и получил следующий шаг в Makefile.PL

Detecting zmq version...

(Это не работает в моей системе, потому что у меня 0mq 2.2.0, а для привязки perl требуется 3.3)

Надеюсь, это сработает и для вас.

person smartmeta    schedule 03.03.2013
comment
Хм, может быть, я должен добавить некоторые очевидные факты, тоже. ;-) - person smartmeta; 05.03.2013

Вы используете Strawberry Perl или ActiveState Perl? Active State Perl может иметь проблемы с установкой из CPAN, если у вас нет nmake и не установлены утилиты MinGW. Меня беспокоит это:

Probing libzmq via pkg-config ...
'pkg-config' is not recognized as an internal or external command,
operable program or batch file.

Это поднимает большие красные флаги для меня. Я также заметил эту маленькую частушку, когда пытался установить:

Detected the following ZMQ settings:
 + ZMQ_HOME = (null)
 + ZMQ_H = (null)
 + ZMQ_INCLUDES = (null)
 + ZMQ_LIBS = (null)
 + ZMQ_TRACE = (null)

Хм... Сначала я должен установить эти переменные среды.

Затем я получил Невозможно связать / включить библиотеку C «zmq», прерывание. который взят из assert в Makefile. Я нашел эту проблему на Github. Он сказал:

Ааа хороший указатель. Проблема pthread_create. Мой Perl был скомпилирован с поддержкой потоков. Я перекомпилировал Perl, и эта проблема исчезла.

Гм, да, Strawberry Perl скомпилирован с поддержкой потоков. И я не перекомпилирую его.

Я рекомендую следующее:

  • Установите ZMQ в каталог без пробелов в имени. Установил прямо под C:\ZeroMQ-3.2.2.
  • Определите эти переменные среды. Я посмотрел на Makefile.PL, и он требует ZMQ_LIBS и ZMQ_INCLUDES.
  • Убедитесь, что вы используете только Strawberry Perl, а не ActiveState. Вы можете использовать ActiveState, но для чего-то подобного требуется небольшая настройка.
  • Добавьте этот флаг отладки debug => 1 в Makefile.PL (это означает, что вам нужно выполнить ручной метод установки Makefile, когда вы запускаете perl Makefile.PL из командной строки.

Я не собираюсь скачивать и перекомпилировать Perl без поддержки потоков, чтобы посмотреть, будет ли это работать. Надеюсь, я направил вас по правильному пути.

person David W.    schedule 04.03.2013

Этот пакет не будет установлен на моей машине ActiveState Perl под управлением Windows, хотя некоторые пакеты ZMQ будут установлены. Похоже, поддержка Windows/Perl в лучшем случае ограничена.

См. эту страницу: https://github.com/lestrrat/p5-ZMQ/issues/14 Поскольку, похоже, существуют известные проблемы с Strawberry Perl.

Ненавижу добавлять это (не люблю Python), но, похоже, это работает под Windows с Python 2.7. Просто сделал быструю установку и запустил включенные тесты, которые прошли. Документы также говорят, что Java хорошо работает и под Windows.

Если у вас не 64-битная версия, это может помочь (от laufeyjarson):

A work-around is to change $^I to have a backup. I used ~ like gvim does:

Line 100 of Makefile.PL:
local $^I = '~';
EDIT:  On recent versions, it is line 203 - JimB

That lets the Makefile.PL work.
person Jim Black    schedule 03.03.2013