【问题标题】:cpan install module DBD::mysql fails, snow leopardcpan 安装模块 DBD::mysql 失败,雪豹
【发布时间】:2011-05-19 14:14:44
【问题描述】:

我正在为 Koha 安装依赖项。这需要使用 perl 和 cpan,这是我第一次使用。我通过 hivelogic 指令安装了 mysql。我在 32 位 mac mini 上运行 10.6.2。

这是终端输出:

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

【问题讨论】:

标签: perl osx-snow-leopard cpan


【解决方案1】:

线索在您引用的输出的这一行中:

在@INC 中找不到 DBI/DBD.pm...

当您使用 Perl 进行开发时,您会经常看到这种类型的错误!这意味着您缺少模块依赖项,通常是因为该模块尚未从 CPAN 安装。

因此,您需要先安装DBI::DBD,然后再安装DBD::mysql。有some complicated reasons为什么这不是cpan作为先决条件自动安装的(通常在安装模块或发行版时,它会自动安装其所有依赖项):

PREREQ_PM 告诉 MakeMaker 该模块需要 DBI(本例中为 1.03 版)。如果有人试图在没有 DBI 1.03 的情况下安装您的 DBD,这将发出 DBI 1.03 缺失的警告。如果没有安装 DBI,为什么这不能可靠地阻止 cpan 测试人员使您的模块失败,请参阅下面的 CONFIGURE。

CONFIGURE 是 MakeMaker 在 WriteMakefile 期间调用的子程序。通过将 require DBI::DBD 放在本节中,我们可以尝试加载 DBI::DBD,但如果它丢失,我们将成功退出。当 DBI::DBD 丢失时,我们成功退出而不创建 Makefile,cpan 测试人员不会报告失败。这可能看起来与 PREREQ_PM 不一致,但 PREREQ_PM 不会导致 WriteMakefile 失败(除非您还指定 PREREQ_FATAL,这是 MakeMaker 强烈反对的),因此 WriteMakefile 将继续调用 dbd_dbi_arch_dir 并失败。

您可以同时安装两个模块:

sudo -H cpan DBI::DBD DBD::mysql

【讨论】:

    【解决方案2】:

    我花了一个晚上的大部分时间在谷歌上搜索并尝试各种方向来让 DBD::mysql 与我现有的 osx perl 安装一起工作。我没有取得任何进展,最后尝试安装活动 perl。它带有一个 perl 包管理器 (ppm)。从那里,您可以安装一个纯 perl mysql 驱动程序 (DBD::mysqlPP),这绕过了所有的编译难题。 - 请务必更改您的代码以使用 DBD::mysqlPP 而不是 DBD::mysql - 就我而言,我更改了 这个: 我的 $dsn = 'DBI:mysql:schemaName:localhost';

    对此: 我的 $dsn = 'DBI:mysqlPP:schemaName:localhost';

    【讨论】:

      【解决方案3】:

      尝试先安装 DBI.pm。

      【讨论】:

        猜你喜欢
        • 2010-11-24
        • 2011-08-04
        • 2018-06-19
        • 2013-11-04
        • 1970-01-01
        • 2012-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多