DBD::Pg на Mac OS X - не найден
Выполняя.cgi из командной строки (как пользователь, имеющий доступ к БД), я получаю
Ошибка install_driver(Pg): Не удается найти файл DBD/Pg.pm в @INC (@INC содержит: /Library/Perl/5.12/darwin-thread-multi-2level /Library/Perl/5.12 / Сеть / Библиотека /Perl/5.12/darwin-thread-multi-2level /Network/Library/Perl/5.12 /Library/Perl/Updates/5.12.4 /System/Library/Perl/5.12/darwin-thread-multi-2level /System/Library/Perl/5.12 /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level /System/Library/Perl/Extras/5.12 .) В (eval 4) строке 3. Возможно, модуль perl DBD::Pg не имеет был полностью установлен, или, возможно, заглавная буква 'Pg' не так.
cpan -D DBD::Pg показывает
DBD::Pg
Postgres Драйвер для DBI T/TU/TURNSTEP/DBD-Pg-2.19.2.tar.gz /opt/local/lib/perl5/site_perl/5.12.4/darwin-thread-multi-2level/DBD/Pg.pm установлен: 2.19.2 CPAN: 2.19.2 в актуальном состоянии DBD::Pg Developers (DBDPG) dbd-pg@perl.org
Попытка экспортировать выше пути с помощью PERL5LIB или PERLLIB не имеет другого результата.
.Cgi ссылается на /usr/bin/perl, который сообщает
Это perl 5, версия 12, subversion 4 (v5.12.4), созданная для darwin-thread-multi-2level (с 2 зарегистрированными патчами, смотрите perl -V для более подробной информации)
Мне нравится постоянно устанавливать путь к модулю, на котором установлен DBD::Pg (/ opt /...). Интересно, почему это не упоминается в списке выходных данных об ошибках.
Я установил DBD::Pg через cpanm.
Я использую Mac OS X Mountain Lion.
2 ответа
Похоже, у вас установлены две разные сборки Perl. Тот, с которым вы запускаете ваш скрипт, отличается от того, который использовался для запуска cpan
, Чтобы установить DBD::Pg с правильным Perl, используйте
perl -MCPAN -e'install DBD::Pg'
замещать perl
с путем к Perl, используемому для запуска вашего скрипта, если это необходимо.
/opt/... обозначает Perl "третьей стороны". "which perl", "which cpan" показывают, что Perl стороннего производителя используется при запуске capn. Это Макпорт. Когда я установил cpan и cpanm, сторонний Perl обновился. Выполнение от имени другого пользователя и / usr / bin / perl shebang дают команду Mac OS X на использование. Поскольку я должен использовать shebang и другого пользователя, я должен использовать Mac OS X Perl. Явное добавление модуля с помощью /usr/bin/cpan DBD::Pg устанавливает модуль в Mac OS X Perl. Теперь мой.cgi работает. Альтернативы для переключения на сторонний Perl - это изменение shebang на "... / env perl" или использование псевдонимов в файловой системе.