簡體   English   中英

如何在Mac OS X上安裝Perl的DBI,以便Apache可以找到它?

[英]How can I install Perl's DBI on Mac OS X so Apache can find it?

我正在嘗試在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一起使用:

For DBI

1. cd /Library/Perl/DBI-1.611 
2. sudo Perl Makefile.PL 
3. sudo make 
4. sudo make install 

For DBD

1. cd /Library/Perl/DBD-mysql-4.014 
2. sudo Perl Makefile.PL --mysql_config=/Applications/MAMP/Library/bin/mysql_config 
3. sudo make 
4. sudo make install 

我在運行上述命令時注意到的是,文件似乎已安裝在“ /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)更新我安裝模塊的方式以將它們安裝到以下其中一個中搜索目錄。 老實說,我不知道哪種選擇更有意義,也可以使用指導。

如您所知,我現在迷路了。 請幫忙!!! 提前致謝。

看來您已經通過macports安裝了另一個Perl(/ opt / local是所有macports安裝的安裝目錄),並且/ opt / local / bin在$PATH位置早於/ usr / bin中的系統Perl。 很好,如果您樂於運行Perl 5.8.9而不是Perl 5.10.0(提示:如果不確定這些差異,那么這些差異就沒有關系了)。

通常建議不要對系統Perl進行額外的安裝。 Apple可能會通過定期的系統更新來升級組件,這可能會干擾您所做的任何修改,並且如果您在安裝過程中犯了一個錯誤,那么在不進行完整的系統重新安裝或對操作系統膽量不甚了解的情況下很難對其進行補救。 。 因此,由於您已經准備好另一個Perl安裝,因此我強烈建議您堅持使用該安裝。

但是,如果macports上已經有可用的發行版,則您可能不應該手動安裝庫。 我使用port search dbiport search dbd來找到它們:這些發行版分別名為p5-dbi和p5-dbd-mysql。 您可以像安裝其他任何macports模塊一樣安裝它們:使用sudo port install <distroname> (您可能還需要自己安裝mod_perl。)

之后,您只需要告訴Apache / mod_perl使用該Perl安裝,而不是系統perl。 我從來沒有做過,所以我不能建議最好的方法。 但是,在http://superuser.com上進行的快速搜索顯示,默認情況下將運行apache的macports版本(通過相同的$ PATH順序),因此我只想嘗試一下:)。

很好的答案,以太。 做了太多次了,我可以給你一些建議:

注意:我顯然只限於帖子中的單個鏈接,因此我必須刪除所有注釋。 值得慶幸的是,在美味的地方,我都用stackoverflowmacports標記存儲了它們。 在下面刪除鏈接以適合Stack Overflow荒謬的反垃圾郵件措施的任何地方,我都用(*)標記了它。

  1. 如果始終具有可靠運行的開發環境對您很重要,請盡可能依賴LITTLE Mac OS X捆綁軟件。 我愛蘋果,但他們絕對不厭其煩地盡可能地打破其軟件的自定義設置。

  2. 如果聽起來#1聽起來像您需要做的事,那么Macports是一個絕佳選擇 我曾經使用過Fink,但就易用性和可用軟件的種類而言,它們在塵埃時代就已經消失了。 安裝macports的最簡單方法是通過二進制軟件包安裝方法(*)

  3. 正如Ether所提到的,當一切設置正確時,Macports提供的MySQL,PHP和Apache可以很好地協同工作,而不會干擾系統安裝的類似物。 其中大部分與您的PATH設置有關,但所有這些詳細信息都由軟件包安裝程序的運行后腳本(*)處理

  4. 一旦進入Macports火車,它就會成為您尋找任何軟件的第一站。 port searchport info始終是同伴。 他們目前有6863個端口(*) ,涵蓋了您的基地的大部分。

  5. 當您確實需要在Macports領域之外查找內容時,請將其安裝在/usr/local 文件系統層次結構的那部分是您自己玩的。 不要被誤認為是一種安全感,並認為由於Macports沒有您要安裝的內容,因此可以將其放在/opt/local因為軟件總是會安裝一些依賴項,而該依賴項也會成為依賴項對於某些Macports軟件而言,如果其任何文件覆蓋了Macports 尚未管理的現有文件,除非Macports的任何文件覆蓋了該文件(除非您強制采用這種方式,否則這樣做都是不禮貌的)

  6. 如果您使用Perl進行任何工作,並且使用Macports的版本,您將絕對會遇到Macports沒有您要尋找的一個CPAN模塊的情況。 (而且,實際上,鑒於有兩個半億的CPAN模塊,誰能責怪他們?)。 這種情況經常發生,以至於您很可能會厭倦手動安裝方法(*)perl Makefile.PL; make; make test; sudo make install; cha; cha; cha ),並且為了您的易用性習慣於Macports。

    如果是這樣,您可以絕對使用cpan (*)實用程序,CPANPLUS (*)或cpanminus (*)來滿足所有安裝需求。 只需確保對所選工具的配置進行必要的調整,以指示它將模塊安裝到/ usr / local / lib / perl5中,而無需/opt/local/bin/perl堅持將模塊安裝到/opt/local/lib/perl5 您可以在外殼程序的init腳本中設置PERL5LIB環境變量,以在/usr/local/lib/perl5另外查找模塊。 只需從perl -V抓取@INC輸出並將其固定在最后...

  7. 最后...利用系統的日常初始化腳本或諸如Anacron (*)或MacPorts Notifier (*)的第三方軟件(均可通過 MacPorts獲得),請確保經常更新軟件。 您並沒有蘋果母親為Macports安裝的軟件提供軟件更新來保護您,該軟件更新所具有的錯誤和安全漏洞與蘋果捆綁的軟件一樣多。

    通過頻繁地更新,你會保持領先的壞人,並通過自動化它的升級將實際發生 ,你會不會最終成為我的過去與吹,因為你有過時的港口堆積如山升級完整的周末。 注意:Macports將分階段進行更新,如果它在任何時候失敗,則您的當前版本將繼續工作。 我告訴蘋果,蘋果可以向他們學習一兩件事。

所以,這就是我能想到的一瞬間。 希望以上課程可以幫助您快速上手,並節省我過去幾年在學習中所花費的所有時間,精力和壓力。 我認為這仍然比替代方案要好得多:討厭蘋果,因為它們破壞了您的所有美好事物... :-)

我在使用錯誤的Perl的Apache上遇到了類似的問題。 我通過在我的httpd.conf文件中添加以下幾行來解決此問題:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM