Perl

индекс
80,38

Компиляция Perl под Windows

Под Microsoft Windows существует несколько популярных дистрибутивов Perl.
Это Strawberry Perl и ActivePerl. Первый предназначен исключительно для Windows, второй собирается под различные платформы (полный список можно найти на официальном сайте). Важно учесть, что в ActivePerl, модули распространяются в уже готовом виде, и бывает так, что приходится ждать пока обновят репозитории.

В этом небольшом HowTo я расскажу, как подготовить рабочую среду Perl из сорцов.


Подготовка



Для сборки нам понадобятся: компилятор и SDK.
1. Качаем и устанавливаем Visual C++ Express.
2. Microsoft Windows SDK можно взять здесь

После установки необходимо прописать пути в PATH. Для этого заходим в «Дополнительные параметры системы — переменные среды...»
Добавляем в PATH: C:\Program Files\Microsoft Visual Studio 9.0\VC\bin и нажимаем ОК.

image

3. Качаем исходные коды стабильной ветви Perl (5.10.1) и распаковываем архив в любую папку.

открываем в текстовом редакторе win32/Makefile
Выставляем переменные INST_DRV, INST_TOP, CCTYPE.
В моем случае CCTYPE = MSVC90FREE (возможно у Вас другая версия студии).

image

Остальное можно не менять.

Сборка



Запускаем терминал (cmd.exe) и переходим в папку с сорцами/win32.
C:\BUILD\perl-5.10.1\win32> call VCVARS32.BAT
C:\BUILD\perl-5.10.1\win32> nmake


Процесс пошел :)

image

C:\BUILD\perl-5.10.1\win32> nmake test
C:\BUILD\perl-5.10.1\win32> nmake install


После установки добавляем в PATH пути до перла.
C:\perl-5.10.1l\bin;C:\perl-5.10.1\site\bin

Еще можно определить PERL5LIB.

Готово. Запускаем терминал, далее call VCVARS32.BAT, и начинаем устанавливать с CPAN нужные модули

C:\> cpan LWP::UserAgent
C:\> cpan WWW::Mechanize
...


+13
11 декабря 2009, 22:31
16

комментарии (29)

–1
mecommayou #
Здорово, не подскажешь есть для перла какой-нибудь удобный дебаггер?
0
apla #
Devel::REPL
0
santeri #
меня устраивает ActiveState Perl Debugger.
под винду с UI
+1
mecommayou #
Нашел Perl Dev Kit думается это то что доктор прописал.
0
Pilat #
ptkdb есть. Для windows и для unix.
+1
afan #
> Важно учесть, что модули распространяются в уже готовом виде, и бывает так, что приходится ждать пока обновят репозитории.

В подавляющем большинстве случаев все модули можно просто скачивать из CPAN и класть в lib/ вручную, и все замечательно работает.
0
musuk #
А отладчик под mod_perl уже придумали, или забава писать под mod_perl ушла в небытие?
НЛО прилетело и опубликовало эту надпись здесь
0
happybyte #
Примерно то же, что под mod_php или зенд.
+1
DurRandir #
Strawberry идёт сразу с компилятором (mingw) и ставит практически все модули с CPAN'a (если они не требуют завимостей от каких-то *nix-only библиотек).
0
santeri #
Спасибо за замечание.
0
NickyX3 #
В ActiveState Perl тоже, при наличии nmake + win32GnuUtils все ставится как родно за исключением особенный бинарных *nix only либок
НЛО прилетело и опубликовало эту надпись здесь
0
Pilat #
Стандартный совет: если производитель считает что должно быть Perl-5.10-1, то надо Perl-5.10-1 и никуда иначе. Если ставить в /usr — то, во-первых, такой папки в windows просто нет, во-вторых там уже что-то может стоять.

Я решаю проблему просто — ставлю в c:\Perl-5.10-1, делаю линк c:\Perl -> c:\Perl-5.10-1, и прописываю c:\Perl\bin;c:\Perl\site\bin в PATH. Этого хватает везде.
НЛО прилетело и опубликовало эту надпись здесь
0
Pilat #
Вы можете ставить куда хотите, но от этого папка /usr/bin/ в Windows не появится. Скрипт, запущенный не с диска С:, такой папки не найдёт. Кстати, может быть у Вас только диск С: и есть? Но не у всех же так.
НЛО прилетело и опубликовало эту надпись здесь
0
amosk #
Тут одно из двух: либо у вас запускаемый Perl-скрипт тоже находится на диске где установлен Perl, либо вебсерверу под виндой абсолютно пофик какой там путь указать в #!, он его удаляет и ищет просто perl в PATH.
0
Pilat #
Гуру, я в печали… Любой скрипт будет начинаться с того, что ты в него напишешь, вне зависимости от того где у тебя перл установлен и установлен ли вообще. И выполняться он будет вне зависимости от того куда перл установили. А вот если захочется иметь две версии перла — а это бывает надо, — то эти хитроумности в установке приведут к проблемам.
+1
amosk #
На самом деле можно устанавливать куда угодно, а для указанных целей достаточно добавить %perl%/bin в PATH (это умеет инталлятор Active Perl), а в папку c:\usr\bin поместить только копию perl.exe (который всего лишь загрузчик интерпретатора расположенного в DLL)
НЛО прилетело и опубликовало эту надпись здесь
0
amosk #
Логика в том что подобным образом можно проделать это с несколькими программами не устанавливая их все в одну папку и превращая ее в помойку.
НЛО прилетело и опубликовало эту надпись здесь
0
amosk #
В юниксе в папках bin находятся только исполняемые файлы, остальные части программ распределены по другим папкам согласно их назначению — библиотеки отдельно, конфиги отдельно, и т.д.
А то что предлагаете вы — именно что помойка. Не говоря уже о том что программам могут потребоваться разные версии одной и той же DLL, а они у вас все в одной папке, где возможна только одна версия.
НЛО прилетело и опубликовало эту надпись здесь
0
amosk #
Папка bin Active Perl содержит сотню файлов
0
amosk #
… и 6 DLL
0
danko #
Я несколько лет назад пользовался ActivePerl, но, в последнее время, не мудрствуя лукаво, ставлю Perl из Cygwin :)
0
Pilat #
Любителям ставить перл из исходников: посетите downloads.activestate.com/ActivePerl/src/5.10/, сколько там интересного… Поясняю: ActiveState кроме сбора денег занимается правкой перла для работы под Windows. И патчи в основную ветку попадают не сразу. Так что качая исходники с офсайта, мы имеем не совсем работоспособную версию.

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