如何安装Perl';在Mac OS X上安装DBI以便Apache可以找到它?

如何安装Perl';在Mac OS X上安装DBI以便Apache可以找到它?,perl,dbi,mamp,Perl,Dbi,Mamp,我正试图在我的Mac笔记本电脑上设置一个Perl开发环境,但一直很难让它正常工作。我认为我已经正确配置了所有内容,但当我尝试运行示例脚本时,它报告了DBI模块的错误,无法访问数据库 以下是Apache错误日志中报告的内容: [Fri Apr 30 23:11:33 2010] [error] [client 127.0.0.1] Can't locate DBI.pm in @INC (@INC contains: /Library/Perl/Updates/5.10.0/darwin-thre

我正试图在我的Mac笔记本电脑上设置一个Perl开发环境,但一直很难让它正常工作。我认为我已经正确配置了所有内容,但当我尝试运行示例脚本时,它报告了DBI模块的错误,无法访问数据库

以下是Apache错误日志中报告的内容:

[Fri Apr 30 23:11:33 2010] [error] [client 127.0.0.1] Can't locate DBI.pm in @INC (@INC contains: /Library/Perl/Updates/5.10.0/darwin-thread-multi-2level /Library/Perl/Updates/5.10.0 /System/Library/Perl/5.10.0/darwin-thread-multi-2level /System/Library/Perl/5.10.0 /Library/Perl/5.10.0/darwin-thread-multi-2level /Library/Perl/5.10.0 /Network/Library/Perl/5.10.0/darwin-thread-multi-2level /Network/Library/Perl/5.10.0 /Network/Library/Perl /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level /System/Library/Perl/Extras/5.10.0 .) at main.pm line 5.
我手动下载并安装了这两个模块,以便使用本文中指定的以下命令使用MAMP:

在运行上述命令时,我注意到文件似乎安装在“/opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/”目录中,该目录似乎不是Apache在本文开头的错误中提到的搜索目录之一。以下是我在安装过程中看到的内容:

$ sudo make install
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/auto/DBI/DBI.bundle
Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/auto/DBI/dbipport.h
Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/auto/DBI/DBIXS.h
Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/auto/DBI/dbixs_rev.h
Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/auto/DBI/Driver.xst
Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/auto/DBI/Driver_xst.h
Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBI.pm
Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/TASKS.pod
Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBD/DBM.pm
Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBD/File.pm
Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBD/Gofer.pm
Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBI/Changes.pm
Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBI/DBD.pm
Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBI/Profile.pm
Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBI/ProxyServer.pm
Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBI/PurePerl.pm
Installing /opt/local/share/man/man3/DBD::DBM.3pm
Installing /opt/local/share/man/man3/DBD::File.3pm
Installing /opt/local/share/man/man3/DBD::Gofer.3pm
Installing /opt/local/share/man/man3/DBI.3pm
Installing /opt/local/share/man/man3/DBI::DBD.3pm
Installing /opt/local/share/man/man3/DBI::Profile.3pm
Installing /opt/local/share/man/man3/DBI::ProxyServer.3pm
Installing /opt/local/share/man/man3/DBI::PurePerl.3pm
Installing /opt/local/share/man/man3/TASKS.3pm
Installing /opt/local/bin/dbiprof
Installing /opt/local/bin/dbiproxy
Writing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/auto/DBI/.packlist
Appending installation info to /opt/local/lib/perl5/5.8.9/darwin-2level/perllocal.pod
我的问题是,我做错了什么,我如何1)让Apache查找安装DBD和DBI模块的正确目录,或者2)更新安装模块的方式,将它们安装到其中一个搜索目录中。老实说,我不知道什么选择更有意义,也可以在这方面提供指导


你可能知道,我现在很迷茫。请帮忙!!!提前感谢。

看起来您已经安装了另一个Perl via(/opt/local是所有macports安装的位置),并且/opt/local/bin在
$PATH
中比/usr/bin中的系统Perl更早。这很好,如果您乐于运行Perl5.8.9而不是Perl5.10.0(提示:如果您不确定这些差异,那么这些差异并不重要)

通常建议不要对系统进行额外安装。苹果可能会通过定期的系统更新来升级组件,这可能会干扰您所做的任何修改。如果您在安装过程中出错,如果不进行完整的系统重新安装或不认真了解操作系统的细节,就很难纠正错误。因此,既然您已经准备好了另一个Perl安装,我强烈建议您继续使用它

但是,如果macports上已有可用的发行版,则可能不应该手动安装库。我使用
portsearchdbi
portsearchdbd
来查找它们:发行版名为p5dbi和p5dbdmsql。您可以像安装任何其他macports模块一样安装这些模块:使用
sudo-port-install
。(您可能还需要安装mod_perl本身。)


之后,您只需告诉Apache/mod_perl使用该perl安装,而不是系统perl。我从来没有这样做过,所以我不能建议最好的方法。但是,快速搜索表明默认情况下,macports版本的apache将运行(通过相同的$PATH顺序),因此我只想试试看:)。

答案很好,以太。我已经做了很多次了,我可以给你一些建议:

注意:我显然只限于文章中的一个链接,所以我不得不删除所有注释。谢天谢地,我把它们都放在有标签的地方,很好吃。在Stack Overflow荒谬的反垃圾邮件措施下,我删除了一个链接,并将其标记为(*)

  • 如果始终拥有一个可靠工作的开发环境对您很重要,那么尽可能少地依赖Mac OS X捆绑软件。我喜欢苹果,但他们对尽可能频繁地破坏软件的自定义设置毫不犹豫

  • 如果#1听起来像你需要做的事情,Macports是一个很好的选择。我曾经使用Fink,但它们在易用性和可用软件的范围方面早就过时了。安装macports最简单的方法是通过二进制软件包安装方法(*)

  • 正如Ether所提到的,当您正确设置了所有内容后,Macports提供的MySQL、PHP和Apache都可以很好地协同工作,而不会受到系统安装的模拟程序的干扰。其中大部分与路径设置有关,但所有这些细节都由包安装程序飞行后脚本处理(*)

  • 一旦你上了Macports列车,它应该成为你寻找任何软件的第一个地方<代码>端口搜索和
    端口信息
    是固定的伙伴。他们目前拥有6863个端口,(*),覆盖了您的大部分基地

  • 当您确实需要跳出Macports领域查找某些内容时,请将其安装在
    /usr/local
    中。文件系统层次结构的这一部分是您可以使用的。不要误以为Macports没有您正在安装的设备,可以将其放在
    /opt/local
    中,因为该软件始终会安装一些依赖项,这些依赖项也将是某些Macports软件的依赖项,并且如果某个端口的任何一个文件将覆盖不由Macports管理的现有文件,Macports将不允许安装该端口(除非你强迫,这总是不礼貌的)

  • 如果您使用Perl进行任何工作,并且使用Macports的版本,您绝对会发现Macports没有您正在寻找的一个CPAN模块(而且,事实上,有25亿个CPAN模块,谁能责怪他们呢?)。这种情况经常发生,您很可能会厌倦手动安装方法(*)
    perl Makefile.PL;make;make test;sudo make install;cha;cha
    ),并渴望使用Macports时变得习惯的易用性

    如果是这样,您完全可以使用cpan(*)实用程序、CPANPLUS(*)或cpanminus(*)来满足所有安装需求。
    $ sudo make install
    Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
    Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/auto/DBI/DBI.bundle
    Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/auto/DBI/dbipport.h
    Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/auto/DBI/DBIXS.h
    Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/auto/DBI/dbixs_rev.h
    Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/auto/DBI/Driver.xst
    Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/auto/DBI/Driver_xst.h
    Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBI.pm
    Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/TASKS.pod
    Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBD/DBM.pm
    Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBD/File.pm
    Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBD/Gofer.pm
    Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBI/Changes.pm
    Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBI/DBD.pm
    Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBI/Profile.pm
    Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBI/ProxyServer.pm
    Installing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/DBI/PurePerl.pm
    Installing /opt/local/share/man/man3/DBD::DBM.3pm
    Installing /opt/local/share/man/man3/DBD::File.3pm
    Installing /opt/local/share/man/man3/DBD::Gofer.3pm
    Installing /opt/local/share/man/man3/DBI.3pm
    Installing /opt/local/share/man/man3/DBI::DBD.3pm
    Installing /opt/local/share/man/man3/DBI::Profile.3pm
    Installing /opt/local/share/man/man3/DBI::ProxyServer.3pm
    Installing /opt/local/share/man/man3/DBI::PurePerl.3pm
    Installing /opt/local/share/man/man3/TASKS.3pm
    Installing /opt/local/bin/dbiprof
    Installing /opt/local/bin/dbiproxy
    Writing /opt/local/lib/perl5/site_perl/5.8.9/darwin-2level/auto/DBI/.packlist
    Appending installation info to /opt/local/lib/perl5/5.8.9/darwin-2level/perllocal.pod
    
    SetEnv PATH [colon-separated list of directories]
    
    SetEnv PERL5LIB [colon-sep'd list of directories]
    
    SetEnv PATH /opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/mysql/bin:$PATH
    SetEnv PERL5LIB  /opt/local/lib:/usr/local/lib