Я был удивлен, что не нашел хороших ответов от Google на этот счет.Кажется, что Activstate работает для некоторых, но не для других.Были подозрения о конфликтах с различными версиями системных библиотек Windows, но ничего определенного.Тем не менее, я смог наконец создать plperl.dll, который работает, используя клубничный Perl.
Вот пошаговые инструкции, чтобы заставить plperl работать с клубничным Perl.Хитрость заключается в том, чтобы перекомпилировать postgresql и plperl, но установить plperl поверх существующей установки postgresql.
сначала вам понадобится следующее:
- mingw (http://www.mingw.org)
- клубничный перл.http://www.strawberryperl.org
- Postgresql источники.Убедитесь, что вы получаете версию, соответствующую вашей установке.
Сайт mingw запутан до чертиков.Нет единого пакета для загрузки.Вы должны загрузить установщик, который загружает все остальное.Вот быстрая ссылка на него.
http://sourceforge.net/projects/mingw/files/Installer/
В их установщике выберите C и C ++ и среду MSYS для установки.Mingw не будет загрязнять вашу среду, поэтому установите его в любом старом месте.
Что касается Perl, я не думаю, что activestate поставляется с файлами (общими библиотеками), необходимыми для этого, и я нашелCPAN-клубника поддерживает превосходную поддержку (по сравнению с частными ppm-сайтами activestate) и douchebag-шаг activestate, заключающийся в размещении старых версий за платным доступом (и вынуждает другие сайты удалять свои размещенные копии).FU ActiveState.
Postgresql 9.1 изначально был построен на Perl 5.14, поэтому, вероятно, лучше придерживаться этой версии.
Распакуйте и установите все это.Mingw предоставит вам оболочку (найдите ярлык в меню автозагрузки) для компиляции. Запустите оболочку и не закрывайте ее.
выполните следующие действия для установки / удаления пакетов:
mingw-get install libminizip
mingw-get remove mingw-perl
вам нужно удалить perl от mingw, чтобы в процессе сборки использовался клубничный perl.Вместо этого вы можете обойтись с переменной path, но теперь этот путь проще
, вам нужно попасть в каталог, в который вы распаковали распакованные исходники postgresql.В оболочке mingw используйте корневой путь / c для обращения к диску C :.
Теперь просто сконфигурируйте и выполните
./configure --with-perl
make
Обратите внимание, что в postgres docs говорят, что нужно использовать gmake, но на mingw это make.
Сборка, вероятно, завершится неудачно при сборкеактуальный файл plperl.dll.Это потому, что среда сборки не производит правильную команду для сборки DLL.Если вы получите сообщение об ошибке, подобное этому:
dllwrap -o plperl.dll --dllname plperl.dll --def libplperldll.def plperl.o SPI.o Util.o -L../../../src/port -Wl,--allow-multiple-definition -Wl,--as-needed -LC:/strawberry/perl/lib/CORE -l -L../../../src/backend -lpostgres
c:/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../mingw32/bin/ld.exe: cannot find -l-L../../../src/backend
c:/mingw/bin/../lib/gcc/mingw32/4.7.0/../../../../mingw32/bin/ld.exe: cannot find -lpostgres
cd в src / pl / plperl и выполните следующую команду:
dllwrap -o plperl.dll --dllname plperl.dll --def libplperldll.def plperl.o SPI.o Util.o -L../../../src/port -Wl,--allow-multiple-definition -Wl,--as-needed -L/c/strawberry/perl/lib/CORE -L../../../src/backend -lpostgres -lperl514
(обратите внимание, что у меня установлен perl в c: \клубника и mingw установлены в c: \ mingw)
На этом все готово.у вас есть plperl.dll в этом каталоге, который может заменить тот, который поставляется с postgresql.