модуль установки cpan DBD :: mysql завершается ошибкой, снежный барс - PullRequest
2 голосов
/ 20 января 2010

Я устанавливаю зависимости для Коха.Это требует использования perl и cpan, из которых я впервые.Я установил mysql с помощью инструкций hivelogic.Я использую 10.6.2 на 32-битном Mac Mini.

Вот вывод терминала:

John-Breedloves-Mac-mini:~ john_breedlove$ sudo -H cpan -i DBD::mysql
CPAN: Storable loaded ok (v2.19)
Going to read /var/root/.cpan/Metadata
  Database was generated on Tue, 19 Jan 2010 14:52:55 GMT
Running install for module 'DBD::mysql'
CPAN: YAML loaded ok (v0.71)
Running make for C/CA/CAPTTOFU/DBD-mysql-4.013.tar.gz
CPAN: Digest::SHA loaded ok (v5.48)
CPAN: Time::HiRes loaded ok (v1.9715)
  LWP not available

Trying with "/usr/bin/curl -L -f -s -S --netrc-optional" to get
    http://www.perl.org/CPAN/authors/id/C/CA/CAPTTOFU/CHECKSUMS
Checksum for /var/root/.cpan/sources/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.013.tar.gz ok
x DBD-mysql-4.013/
x DBD-mysql-4.013/lib/
x DBD-mysql-4.013/lib/DBD/
x DBD-mysql-4.013/lib/DBD/mysql.pm
x DBD-mysql-4.013/lib/DBD/mysql/
x DBD-mysql-4.013/lib/DBD/mysql/GetInfo.pm
x DBD-mysql-4.013/lib/DBD/mysql/INSTALL.pod
x DBD-mysql-4.013/lib/Bundle/
x DBD-mysql-4.013/lib/Bundle/DBD/
x DBD-mysql-4.013/lib/Bundle/DBD/mysql.pm
x DBD-mysql-4.013/mysql.xs
x DBD-mysql-4.013/dbdimp.c
x DBD-mysql-4.013/myld
x DBD-mysql-4.013/INSTALL.html
x DBD-mysql-4.013/Makefile.PL.embedded
x DBD-mysql-4.013/TODO
x DBD-mysql-4.013/README
x DBD-mysql-4.013/MANIFEST.SKIP
x DBD-mysql-4.013/ChangeLog
x DBD-mysql-4.013/Makefile.PL
x DBD-mysql-4.013/META.yml
x DBD-mysql-4.013/dbdimp.h
x DBD-mysql-4.013/eg/
x DBD-mysql-4.013/eg/prepare_memory_usage.pl
x DBD-mysql-4.013/eg/proc_example2b.pl
x DBD-mysql-4.013/eg/proc_example2.pl
x DBD-mysql-4.013/eg/decimal_test.pl
x DBD-mysql-4.013/eg/bug30033pg.pl
x DBD-mysql-4.013/eg/proc_example2a.pl
x DBD-mysql-4.013/eg/proc_example4.pl
x DBD-mysql-4.013/eg/bug21028.pl
x DBD-mysql-4.013/eg/bug14979.pl
x DBD-mysql-4.013/eg/bug30033.pl
x DBD-mysql-4.013/eg/issue21946.pl
x DBD-mysql-4.013/eg/proc_example3.pl
x DBD-mysql-4.013/eg/proc_example1.pl
x DBD-mysql-4.013/constants.h
x DBD-mysql-4.013/t/
x DBD-mysql-4.013/t/85init_command.t
x DBD-mysql-4.013/t/40listfields.t
x DBD-mysql-4.013/t/40bindparam.t
x DBD-mysql-4.013/t/mysql.mtest
x DBD-mysql-4.013/t/41bindparam.t
x DBD-mysql-4.013/t/76multi_statement.t
x DBD-mysql-4.013/t/40nulls.t
x DBD-mysql-4.013/t/32insert_error.t
x DBD-mysql-4.013/t/40catalog.t
x DBD-mysql-4.013/t/51bind_type_guessing.t
x DBD-mysql-4.013/t/40bindparam2.t
x DBD-mysql-4.013/t/41blobs_prepare.t
x DBD-mysql-4.013/t/20createdrop.t
x DBD-mysql-4.013/t/70takeimp.t
x DBD-mysql-4.013/t/42bindparam.t
x DBD-mysql-4.013/t/00base.t
x DBD-mysql-4.013/t/55utf8.t
x DBD-mysql-4.013/t/65types.t
x DBD-mysql-4.013/t/40server_prepare_error.t
x DBD-mysql-4.013/t/31insertid.t
x DBD-mysql-4.013/t/29warnings.t
x DBD-mysql-4.013/t/40types.t
x DBD-mysql-4.013/t/10connect.t
x DBD-mysql-4.013/t/lib.pl
x DBD-mysql-4.013/t/mysql.dbtest
x DBD-mysql-4.013/t/35limit.t
x DBD-mysql-4.013/t/71impdata.t
x DBD-mysql-4.013/t/40blobs.t
x DBD-mysql-4.013/t/40server_prepare.t
x DBD-mysql-4.013/t/40numrows.t
x DBD-mysql-4.013/t/35prepare.t
x DBD-mysql-4.013/t/40keyinfo.t
x DBD-mysql-4.013/t/75supported_sql.t
x DBD-mysql-4.013/t/60leaks.t
x DBD-mysql-4.013/t/50commit.t
x DBD-mysql-4.013/t/30insertfetch.t
x DBD-mysql-4.013/t/50chopblanks.t
x DBD-mysql-4.013/t/25lockunlock.t
x DBD-mysql-4.013/t/80procs.t
x DBD-mysql-4.013/MANIFEST
CPAN: File::Temp loaded ok (v0.20)

  CPAN.pm: Going to build C/CA/CAPTTOFU/DBD-mysql-4.013.tar.gz

Can't locate DBI/DBD.pm in @INC (@INC contains: /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level /opt/local/lib/perl5/site_perl/5.8.9 /opt/local/lib/perl5/site_perl /opt/local/lib/perl5/vendor_perl/5.8.9/darwin-2level /opt/local/lib/perl5/vendor_perl/5.8.9 /opt/local/lib/perl5/vendor_perl /opt/local/lib/perl5/5.8.9/darwin-2level /opt/local/lib/perl5/5.8.9 .) at Makefile.PL line 24.
Warning: No success on command[/opt/local/bin/perl Makefile.PL]
  CAPTTOFU/DBD-mysql-4.013.tar.gz
  /opt/local/bin/perl Makefile.PL -- NOT OK
Running make test
  Make had some problems, won't test
Running make install
  Make had some problems, won't install

Ответы [ 3 ]

6 голосов
/ 20 января 2010

Подсказка была в этой строке вашего цитируемого вывода:

    Can't locate DBI/DBD.pm in @INC...

Вы будете часто видеть этот тип ошибок по мере разработки в Perl!Это означает, что вам не хватает зависимости модуля, как правило, потому что модуль не был установлен из CPAN.

Следовательно, вам нужно сначала установить DBI :: DBD , прежде чем DBD:: MySQL .Есть несколько сложных причин , почему cpan не устанавливает их автоматически как предварительное условие (обычно при установке модуля или дистрибутива автоматически устанавливаются все его зависимости):

PREREQ_PM сообщает MakeMaker, что для этого модуля требуется DBI (в данном случае версия 1.03).Это выдаст предупреждение, что DBI 1.03 отсутствует, если кто-то пытается установить ваш DBD без DBI 1.03.См. Ниже раздел «КОНФИГУРАЦИЯ», чтобы узнать, почему это не работает с надежной остановкой тестеров cpan, приводящих к сбою модуля, если DBI не установлен.

КОНФИГУРАЦИЯ - это подпрограмма, вызываемая MakeMaker во время WriteMakefile.Помещая в этом разделе требуемый DBI :: DBD, мы можем попытаться загрузить DBI :: DBD, но если он отсутствует, мы успешно завершаем работу.Поскольку мы успешно завершаем работу, не создавая Makefile, когда отсутствует DBI :: DBD, тестеры cpan не сообщат об ошибке.Это может показаться противоречащим с PREREQ_PM, но PREREQ_PM не приводит к сбою WriteMakefile (если только вы не укажете PREREQ_FATAL, который настоятельно не рекомендуется MakeMaker), так что WriteMakefile продолжит вызывать dbd_dbi_arch_dir и завершится неудачей.

Вы можете установитьоба модуля одновременно с:

    sudo -H cpan DBI::DBD DBD::mysql
1 голос
/ 19 мая 2011

Я провел большую часть вечера в поисках Google и пробовал разные направления, чтобы заставить DBD :: mysql работать с моей существующей установкой osx perl. Я не делал успехов и, наконец, попытался установить активный Perl. Он поставляется с менеджером пакетов perl (ppm). Оттуда вы можете установить чистый Perl MySQL драйвер (DBD :: mysqlPP), и это обходит все проблемы компиляции. - Просто убедитесь, что изменили свой код, чтобы использовать DBD :: mysqlPP вместо DBD :: mysql - в моем случае я изменил этот: my $ dsn = 'DBI: mysql: schemaName: localhost';

к этому: my $ dsn = 'DBI: mysqlPP: имя_схемы: localhost';

0 голосов
/ 20 января 2010

Попробуйте сначала установить DBI.pm.

...