strawberry perl что это
Компиляция 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 и нажимаем ОК.
3. Качаем исходные коды стабильной ветви Perl (5.10.1) и распаковываем архив в любую папку.
открываем в текстовом редакторе win32/Makefile
Выставляем переменные INST_DRV, INST_TOP, CCTYPE.
В моем случае CCTYPE = MSVC90FREE (возможно у Вас другая версия студии).
Остальное можно не менять.
Сборка
Запускаем терминал (cmd.exe) и переходим в папку с сорцами/win32.
C:\BUILD\perl-5.10.1\win32> call VCVARS32.BAT
C:\BUILD\perl-5.10.1\win32> nmake
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
.
Perl — еще раз о деплое
Perl — еще раз о деплое
Perl является скриптовым языком, с невозможностью компиляции в машинные коды, которые могли бы непосредственно выполняться на процессоре. Это создает проблему развертывания приложения на компьютере конечного пользователя. Еще сильнее эту проблему усугубляет присутствие в вашем приложении модулей из CPAN: заставить работать модуль на любой системе порой бывает проблематично.
Существует 3 подхода для решения этой проблемы:
— установка Perl на компьютере конечного пользователя, установка зависимостей приложения(как правило через установочный скрипт);
— использование инструментов вроде PAR, Perl2exe, ActiveState PDK, которые пакуют приложение, его модули, и сам интерпретатор perl в самодостаточный exe файл, который может быть запущен на другой машине;
— компромисс между первыми двумя методами — использование PAR для формирования списка зависимостей, создание дистрибутива из вашего приложения и его зависимостей, который представляет из себя просто папку со скриптом и библиотеками. Последняя может быть распространена в виде архива, инсталлятора на базе, например, NullSoft Installer.
Первый метод очевиден, второй же достаточно хорошо расписан в интернете. При этом оба из них имеют недостатки в виде сложности развертывания(первый метод) и очень медленного запуска приложения(метод 2). Оба эти недостатка заставили меня всерьез задуматься о третьем методе, недостаточно хорошо освещенном в интернете.
В качестве примера создадим простую GUI-утилиту, использующую Tk, так, чтобы она могла работать на любой машине с Windows и не требовала бы установки Perl.
1. Установка Perl на девелоперской машине
Наилучший выбор среди дистрибутивов для Windows — Strawberry Perl, ввиду того, что с ним идет компилятор С, позволяющий собирать довольно большую часть модулей CPAN. Рекомендуемая версия — 5.16.
2. Установка необходимых модулей
Через командную строку запускаем cpan и ставим необходимые модули. В нашем случае это Tk и Par::Packer. Модуль Tk ставится просто и обычно без проблем:
К сожалению PAR::Packer в данной версии имеет ошибку, из-за которой он не собирается на большинстве систем. Устанавливать его нужно так:
Вы получите ошибку вида:
Для того, чтобы установить модуль перейдите в директорию C:\strawberry\cpan\build\, там вы увидите директорию вида PAR-Packer-1.013-29nhQP, перейдите в нее. В ней находится распакованный код модуля Par::Packer, сейчас мы внесем исправления, чтобы сборка прошла успешно. Зайдите в поддиректорию \myldr\winres, откройте файл pp.rc. В оригинальном виде файл имеет следующее содержимое:
Удалите лишние строки, чтобы файл принял такой вид:
Теперь вернитесь в директорию PAR-Packer-1.013-29nhQP и выполните там команды:
Теперь модуль установлен и можно перейти к созданию дистрибутива приложения.
3. Создания дистрибутива приложения
В качестве примера возьмем следующую простую программу Hello world.
Теперь запакуем скрипт вместе с зависимостями:
В результате получим файл a.par. По сути, это обыкновенный ZIP-архив, в котором лежит наш скрипт и зависимости. В архиве нам понадобится только папка lib, распакуйте ее, например, в C:\testapp\. Туда же скопируйте наш скрипт test.pl. Теперь нужно скопировать в эту папку интерпретатор perl и нужные для его запуска dll. Для этого нужно скопировать из директории C:\strawberry\perl\bin файлы:
libgcc_s_sjlj-1.dll
libstdc++-6.dll
perl.exe
perl516.dll
В итоге нужно получить директорию следующего содержания:
Остался лишь последний штрих — нужно добавить в дистрибутив сам модуль PAR, поскольку утилита pp при составлении списка зависимостей не учитывает сам модуль PAR. Для этого скопируйте в директорию C:\testapp\lib следующие объекты из директории C:\strawberry\perl\vendor\lib:
Теперь у вас в директории C:\testapp\ находится готовое к запуску приложение. Для чистоты эксперимента, чтобы быть уверенным, что установленный на машине strawberry perl и его библиотеки не смогут участвовать в запуске нашего приложения. Для этого переименуйте директорию C:\strawberry в C:\strawberry_hide. Теперь можно перейти в директорию C:\testapp и запустить приложение при помощи команды:
4. Итоги
Мы получили директорию с нашим приложением, которую можно перенести на любую другую систему при помощи простого копирования. При желании можно создать инсталлятор, или распространять приложение в архиве. Удаленное выполнение из расшареной через Netbios папки не рекомендуется — очень низкая скорость загрузки.
Должен ли я выбрать ActivePerl или Strawberry Perl для Windows? [дубликат]
этот вопрос уже есть ответ здесь:
Я совершенно новичок в Perl, но я хотел бы попробовать. Я читал о двух конкурирующих дистрибутивах, доступных для платформы Windows (я думаю, что есть просто Perl на других ОС :).
Википедия говорит, что Strawberry поставляется с дополнительными инструментами dev для компиляции модулей CPAN, если это необходимо. Звучит неплохо.
Он также говорит, что ActivePerl имеет много расфасованных модулей, которые легче установить с PPM. Звучит тоже здорово!
между этими двумя есть явный компромисс. Интересно, что мне выбрать, чтобы начать? Если я выберу один, насколько сложно перейти на другие?
10 ответов
после использования обоих в течение многих лет, я бы сказал, Для меня, по крайней мере, Activeperl-гораздо более удобный выбор. The ppm-Installer включено в Activeperl позволяет добавлять альтернативные хранилища ppm который даст вам доступ почти ко всем полезным модулям perl, доступным на CPAN, но подготовленным и протестированным для windows. Это был для меня, в конечном счете, гораздо лучший (и более надежный) выбор. Даже для версии Windows http-сервера Apache существует предварительно скомпилированный mod_perl (2.0.4) ppm, который будет (сделал для меня) работать из коробки с Activeperl 5.12.1 и Apache 2.2.15.
Я думаю, что я бросил клубнику после попытки установить DBI + DBD:: mysql на Windows 7 (который является ежу понятно в Activeperl, просто нажмите на ppms и выберите Установить).
но, может быть, это уже решено. И, возможно, можно выбрать каталог, в котором устанавливается Strawberry (I не смог).
BTW: для компиляции собственных встроенных или XS-материалов просто установите компилятор MinGW по ppm (Я этого не делал, но это выглядит интересно).
дополнительное соглашение: прочитав комментарий ниже, я снова проверил Strawberry Perl и теперь можно изменить каталог установки, который является обозначенной функцией версии 5.12.0 (это текущая версия). Это решило бы одну важную проблему. (по моему) недостаток клубники Perl (по сравнению с Activeperl).
ActivePerl устанавливает модули в собственном формате PPM (Perl Package Manager). Официальный репозиторий размещается в ActiveState. Вы можете найти PPMs для большинства популярных модулей, поэтому у вас не должно быть никаких проблем, если вы не ищете неясный или действительно новый пакет (поэтому кровоточащий материал не будет работать, потому что PPM обычно отстает от CPAN). Хотя легче установить чем модули CPAN, PPMs специфически созданы для Windows и поэтому некоторые модули CPAN не будут работать (потому что они делают Unix-специфические вещи).
я использовал оба раньше, и это, казалось, работало для большинства случаев. Но я склоняюсь к Strawberry Perl, потому что среда ближе к Unix, и поэтому существует не так много несовместимостей. С другой стороны, ActivePerl сделан для Windows, и поэтому он очень хорошо работает с Windows.
другой вариант-установить Cygwin и Perl, которые поставляются с Cygwin. Я делал это раньше, и это работает достаточно хорошо. Вы также получаете доступ к CPAN.
выберите то, что вы думаете, лучше всего подходит для вас.
усилительной немного на полезный ответ Vivin Paliath это:
acitvestate / PPM pros: если есть PPM для вашей версии, это будет работать, и просто.
ActiveState / PPM минусы: не всегда есть PPM, или, по крайней мере, не всегда актуальный.
Strawberry / CPAN pros: ваш репозиторий-CPAN, а не куча двоичных файлов, поддерживаемых третьими сторонами. У вас есть новые модули в момент их выпуска автором, и вы используете сборку система, которую задумал автор.
Strawberry / CPAN минусы: не все гарантированно построить отлично с инструментами Windows.
Strawberry / CPAN смягчающий фактор: разработчики Strawberry пытаются очень, очень трудно чтобы убедиться, что все идет гладко и что как можно больше CPAN доступно для вас, и когда модули идентифицируются как проблемные места (трудно построить на Windows, но требуется для других популярных модулей / приложений), они будут либо работайте с автором, чтобы модуль был исправлен так, чтобы все can установите его или в исключительных случаях примените свои собственные исправления и свяжите модуль с Strawberry или Strawberry Professional.
Я предпочитаю клубнику. Я ценю то, что ActiveState пытается сделать, но я думаю, что это узкое место в процессе разработки. Они были необходимые прежде чем сообщество собралось вместе и построило клубнику, чтобы принести окна в » первый мир » экосистемы Perl, но они больше не нужны.
Strawberry более уникален в своем подходе, и я всегда был очень счастлив, когда работал с ним.
ActiveState, однако, из-за своей пользовательской системы управления пакетами, была колоссальной болью, когда я работал с ней. Это имеет значение, когда вы находитесь в корпоративной среде.
для просто возиться, ИМО, клубника лучше. / субъективно
оба велики и работают одинаково. Клубника известна тем, что может создавать модули XS, но вы можете сделать это и с ActiveState, если просто установите SDK Visual Studio (или бесплатную экспресс-версию).
Если у вас есть доступ к Visual Studio, лучшее, что вы можете сделать, это построить Perl из источника (это довольно легко, если Вы читаете README) и продолжать строить свои модули с тем же компилятором. Что на самом деле лучше, чем смесь компилятор / модули.
одна вещь, которую вы должны учитывать при использовании ActiveState: если вы установите его на сервере, обращенном к интернету, то вы обязаны купить лицензию на бизнес ($1000/год/сервер, как отметил Рон Варшавски). Это не означает, что это не сработает, это всего лишь вопрос требования в EULA. Многие люди не знают этого и установили его на серверах с выходом в Интернет без покупки соответствующей лицензии.
в идеальном мире, я бы выбрал debian-interix или pkgsrc-interix perl (не древний Perl, который поставляется с Interix/SFU/SUA), поскольку он предоставляет самую POSIX / UNIX-подобную систему (включая реальную вилку копирования на запись, а не эмуляцию вилки windows от Cygwin). У меня в прошлом (и он установлен на машинах Windows здесь), но не каждый может / будет устанавливать SFU/SUA только для Perl. В этих случаях я бы рекомендовал ActivePerl, в первую очередь для интерфейса знакомство с пользователями Windows (PPM graphical shell против CPAN) и его интеграция с Perl Dev Kit (PerlExe, PerlNET, PerlSvc и friends). Кроме того, вопреки тому, что ответили другие, вы можете использовать CPAN (и оболочку CPAN) с ActivePerl (хотя это связано с установкой необходимых инструментов dev через PPM), Если вам это нужно.
ActivePerl исключает тонны модулей из Community edition, и создание их под Windows-настоящая боль.
кроме того, они позволят вам скачать и использовать только последние версии бесплатно. Все остальное, например, доступ к 5.8.8 или к более ранней версии модулей-это бизнес ($1000/год/сервер) или Enterprise edition (за цитату).
Если ваша конструкция ваше право применения, то оно не должно иметь значение которое вы выбираете.
большой точкой могут быть версии различных модулей, которые каждый может предоставить или не предоставить. Пакеты PPM могут отставать от выпусков CPAN, но если вы не будете осторожны, выпуски CPAN bleeding edge могут нарушить обратную совместимость. Кроме того, иногда будут пакеты PPM для вещей, которые просто не будут правильно строиться под Strawberry (хотя это означает, что модуль плохо спроектирован чаще всего).
просто имейте в виду версии любых модулей, которые вы используете, и вы должны быть в порядке, независимо от того, что вы выбираете.
Должен ли я выбирать ActivePerl или Strawberry Perl для Windows?
Я абсолютно не знаком с Perl, но я бы хотел попробовать. Я читал о двух конкурирующих дистрибутивах, доступных для платформы Windows (я предполагаю, что только Perl на других ОС:).
Wikipedia говорит, что Strawberry поставляется с дополнительными инструментами для компиляции модулей CPAN, если это необходимо. Звучит неплохо для меня.
В нем также говорится, что в ActivePerl есть много предварительно упакованных модулей, которые проще установить с помощью PPM. Звучит здорово!
Там есть четкий компромисс между этими двумя. И мне интересно, что мне выбрать, чтобы начать? Если я выбираю один, как трудно перейти на другой?
Изменить: Я дал обоим дистрибутивам бежать на пару недель. Мне действительно понравилось то, что было хорошо! Нельзя ошибиться ни с одним из них. Я закончил работу с ActivePerl просто потому, что он поставляется с автономной документацией (в формате HTML) – отличный спаситель жизни для тех, кто находится в дороге или просто не всегда связан. Мне было очень легко начать работу с языком Perl, пока я был в отпуске, когда я не всегда был в сети.
Клубника по крайней мере столь же велика, если не больше. Поэтому я тоже могу это порекомендовать. И я должен сказать, что нужно просто изучить Perl – это очень красивый язык. Попробуйте!
После использования обоих в течение многих лет, я бы сказал, для меня, по крайней мере, Activeperl – гораздо более удобный выбор. ppm-Installer, включенный в Activeperl, позволяет добавлять альтернативные репозитории ppm, который предоставит вам доступ ко всем полезным модулям perl, доступным на CPAN, но подготовленным и протестированным для окон. Это было для меня, в конечном счете, намного лучшим (и более надежным) выбором. Даже для версии Windows Apache http-сервера существует предварительно скомпилированный mod_perl (2.0.4) ppm, который будет (для меня) работать из коробки с Activeperl 5. 12.1 и Apache 2.2.15.
Я думаю, что я сбросил Strawberry после попытки установить DBI + DBD:: mysql на Windows 7 (что неинтересно в Activeperl, просто нажмите на ppms и выберите установку).
Но, возможно, это решило к настоящему времени. И, возможно, можно выбрать каталог, в котором установлена Strawberry (я не мог).
BTW: для компиляции ваших собственных материалов Inline или XS просто установить компилятор MinGW на ppm (я этого не делал, но он выглядит интересно).
Добавление: после прочтения комментария ниже я снова проверил Strawberry Perl
и теперь можно изменить каталог установки, который является обозначенной функцией
версии 5.12.0 (которая является фактической версией). Это решило бы один важный (imho)
недостаток Strawberry Perl (по сравнению с Activeperl).
ActivePerl устанавливает модули, используя собственный формат PPM (Perl Package Manager). Официальный репозиторий размещен ActiveState. Вы можете найти PPM для большинства популярных модулей, поэтому у вас не должно быть никаких проблем, если вы не ищете неясный или действительно новый пакет (так что кровоточащие вещи не будут работать, потому что PPM обычно отстает от CPAN). Хотя они проще устанавливать, чем модули CPAN, PPM специально созданы для Windows и поэтому некоторые модули CPAN не будут работать (поскольку они имеют специфические для Unix вещи).
Я использовал как раньше, так и, казалось, работал в большинстве случаев. Но я склоняюсь к Strawberry Perl, потому что среда ближе к Unix, и поэтому не так много несовместимостей. С другой стороны, ActivePerl создан для Windows и очень хорошо работает с Windows.
Другой вариант – установить Cygwin и Perl, которые поставляются вместе с Cygwin. Я делал это раньше, и он работает достаточно хорошо. Вы также получаете доступ к CPAN.
Выберите, что вы считаете лучшим для вас.
Усиление всего лишь крошечного бита на полезном ответе Вивина Палиата:
Преимущества AcitveState/PPM: если у вас есть PPM для вашей версии, она будет работать и просто.
ActiveState/PPM минусы: не всегда PPM или, по крайней мере, не всегда обновленный.
Специалисты Strawberry/CPAN: ваш репозиторий – это CPAN, а не куча бинарных файлов, поддерживаемых третьими лицами. У вас есть новые модули, когда автор выпускает их, и вы используете систему сборки, которую автор намеревался.
Strawberry/CPAN минусы: не все гарантировано прекрасно работает с инструментами Windows.
Фактор смягчения Strawberry/CPAN: разработчики Strawberry действительно стараются сделать все, чтобы все прошло гладко и насколько возможно доступность CPAN для вас, и когда модули идентифицируются как проблемные места (сложность в построении Windows, но необходимые для других популярных модулей/приложений), они либо будут работать с автором, чтобы модуль был исправлен, чтобы каждый мог установить его, либо в исключительных случаях применять свои собственные исправления и связывать модуль с Strawberry или Strawberry Professional.
Я предпочитаю клубнику. Я ценю то, что ActiveState пытается сделать, но я считаю это узким местом в процессе разработки. Они были необходимы, прежде чем сообщество собралось вместе и построило Strawberry, чтобы принести Windows в “первый мир” экосистемы Perl, но они больше не нужны.
Strawberry больше Unixy в своем подходе, и я всегда был очень доволен, когда работал с ним.
ActiveState, однако, благодаря своей пользовательской системе управления пакетами, была колоссальной болью, когда я работал с ней. Это имеет значение, когда вы находитесь в корпоративной среде.
Для просто возиться, ИМО, Клубника лучше./Субъективны
Оба отличные и работают одинаково. Известно, что Strawberry может создавать модули XS, но вы также можете сделать это с помощью ActiveState, если просто установите Visual Studio SDK (или бесплатную экспресс-версию).
В этом случае, если у вас есть доступ к Visual Studio, самое лучшее, что вы можете сделать, это построить Perl из исходного кода (это довольно легко, если вы читаете README), и продолжайте строить свои модули с тем же компилятором. Это на самом деле лучшая идея, чем наличие смеси компилятора/модулей.
Одна вещь, которую вы должны учитывать при использовании ActiveState:. Если вы устанавливаете его на сервере, обращенном к Интернету, вам необходимо приобрести лицензию на бизнес (1000 долларов США/год/сервер, как указано Ron Warshawsky). Это не значит, что это не сработает, это только вопрос требования в EULA. Многие люди этого не знают и устанавливают на интернет-серверы без покупки соответствующей лицензии.
В идеальном мире я бы выбрал debian-interix или pkgsrc-interix perl (а не древний Perl, который поставляется с Interix/SFU/SUA), поскольку он предоставляет самую POSIX/UNIX-подобную систему (включая реальную вилку для копирования на запись, а не виртуализацию вил Cygwin). У меня в прошлом (и он установлен на компьютерах Windows здесь), но не все могут/будут устанавливать SFU/SUA только для Perl. В таких случаях я бы рекомендовал ActivePerl, в первую очередь, для знакомства с интерфейсом пользователей Windows (графическая оболочка PPM и CPAN) и его интеграция с Perl Dev Kit (PerlExe, PerlNET, PerlSvc и друзьями). Кроме того, вопреки тому, что ответили другие, вы можете использовать CPAN (и оболочку CPAN) с помощью ActivePerl (хотя для этого требуется установка необходимых инструментов для разработчиков через PPM), если вам это нужно.
ActivePerl исключает тонны модулей из версии сообщества, а их создание под Windows – настоящая боль.
Кроме того, они позволят вам бесплатно загружать и использовать только последние выпуски. Все остальное, например доступ к версии 5.8.8 или более ранней версии модулей, – это бизнес (1000 долларов США/год/сервер) или корпоративная версия (за кавычку).
Если ваш дизайн вашего приложения правильно, не важно, что вы выберете.
Большей точкой могут быть версии различных модулей, которые каждый может предоставить или не предоставлять. Пакеты PPM могут отставать от релизов CPAN, но если вы не будете осторожны, выпуски CPAN с выпуклым днищем могут нарушить обратную совместимость. Кроме того, иногда будут пакеты PPM для вещей, которые просто не будут правильно создаваться в Strawberry (хотя это означает, что модуль плохо разработан чаще).
Просто знайте о версиях любых модулей, которые вы используете, и вы должны быть в порядке, независимо от того, что вы выберете.
Если вы используете клиент box.com для синхронизации файлов, то вы, вероятно, захотите (по крайней мере, на данный момент) пойти со Strawberry Perl. Исполняемый файл ppm конфликтует с одной из библиотек Box.com. Gui не запускается вообще (появляется сообщение Windows, которое “интерпретатор perl… перестало работать”.) У меня также были проблемы с прерываниями, используя версию командной строки ppm, когда установлен клиент Box.com.
Если Ларри Уолл использует Strawberry Perl, так и вы.;)
Как запустить программы с Strawberry Perl?
сотрудник пытается использовать ack (программа Perl) на его машине Windows, попробовав ее под Linux и решив, что он определенно хочет ее использовать. Ему удалось добраться Клубничный Perl установлен на его машине, но не может понять, что делать, чтобы заставить ack работать с ним из командной строки. Он попытался отредактировать #! линия, но я знал, что это не сработает. Я почти уверен, что клубничный Перл стоит у него на пути.
Что нужно сделать, чтобы запустить общая программа Perl в вашем пути на Windows с помощью Strawberry?
Update: я вижу некоторую информацию в интернете о переменной PATHEXT, но недостаточно.
4 ответов
может помочь вашему поиску. Убедитесь, что ваш Path отражает ваши установки.
есть два распространенных способа, по крайней мере, я знаю, чтобы запустить программу Perl из командной строки Windows.
первым является создание пакетная версия программы с pl2bat, который будет выполнять perl С программой. Установленные программы обычно делают это автоматически, потому что MakeMaker и Module::Build об этом позаботиться.
таким образом, вы можете назвать программы, назвав их the
у меня не было проблем с установкой ack и запуском его из командной строки.
правильно ли установлен Strawberry Perl? Можете ли вы запустить «perl» из cmd.exe?
правильно ли установлено приложение::Ack?
Если это так, я не понимаю, почему вы не можете запустить » ack » из командной строки: