2

我正在为 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
4

3 回答 3

6

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

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

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

因此,您需要在DBD::mysql之前先安装DBI::DBD。有一些复杂的原因导致它没有作为先决条件自动安装(通常在安装模块或发行版时,它会自动安装其所有依赖项):cpan

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

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
于 2010-01-20T01:38:50.480 回答
1

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

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

于 2011-05-19T06:14:44.087 回答
0

尝试先安装 DBI.pm。

于 2010-01-20T01:13:54.530 回答