2009-08-14 113 views
4

首先,我想構建DBD::mysql包。這一直沒有成功,因爲無論如何造成的結果都無法通過Symbol not found: _is_prefix加載測試。所以我認爲cpan可能有點舊了。我知道這是一個隨機假設,但cpan確實告訴我要安裝最新的Bundle::CPAN如何在編譯Perl的DBD :: mysql時修復「Symbol not found:_is_prefix」?

誰在Mac OS X 10.5上成功安裝DBD::mysqlBundle::CPAN?你能推薦任何我可以做得不同的事情嗎?

This is perl, v5.8.8 built for darwin-thread-multi-2level 
(with 4 registered patches, see perl -V for more detail)
/usr/local/mysql/bin/mysql Ver 14.14 Distrib 5.1.36, 
for apple-darwin9.5.0 (i386) using readline 5.1

下面是DBD::mysql日誌的輸出CPAN的:

 
Writing Makefile for DBD::mysql 
cc -c -I/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBI -I/usr/local/mysql/include -DDBD_MYSQL_INSERT_ID_IS_GOOD -g -arch ppc -arch i386 -g -pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -Wdeclaration-after-statement -I/usr/local/include -O3 -DVERSION=\"4.012\" -DXS_VERSION=\"4.012\" "-I/System/Library/Perl/5.8.8/darwin-thread-multi-2level/CORE" dbdimp.c 
/usr/bin/perl -p -e "s/~DRIVER~/mysql/g" /Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBI/Driver.xst > mysql.xsi 

Running Mkbootstrap for DBD::mysql() 
chmod 644 mysql.bs 
/usr/bin/perl /System/Library/Perl/5.8.8/ExtUtils/xsubpp -typemap /System/Library/Perl/5.8.8/ExtUtils/typemap mysql.xs > mysql.xsc && mv mysql.xsc mysql.c 
cp lib/DBD/mysql.pm blib/lib/DBD/mysql.pm 
cp lib/DBD/mysql/GetInfo.pm blib/lib/DBD/mysql/GetInfo.pm 
cp lib/DBD/mysql/INSTALL.pod blib/lib/DBD/mysql/INSTALL.pod 
cp lib/Bundle/DBD/mysql.pm blib/lib/Bundle/DBD/mysql.pm 
cp mysql.bs blib/arch/auto/DBD/mysql/mysql.bs 
chmod 644 blib/arch/auto/DBD/mysql/mysql.bs 
Warning: duplicate function definition 'do' detected in mysql.xs, line 225 
Warning: duplicate function definition 'rows' detected in mysql.xs, line 650 
cc -c -I/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBI -I/usr/local/mysql/include -DDBD_MYSQL_INSERT_ID_IS_GOOD -g -arch ppc -arch i386 -g -pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -Wdeclaration-after-statement -I/usr/local/include -O3 -DVERSION=\"4.012\" -DXS_VERSION=\"4.012\" "-I/System/Library/Perl/5.8.8/darwin-thread-multi-2level/CORE" mysql.c 
dbdimp.c: In function 'mysql_describe': 
dbdimp.c:3309: warning: assignment from incompatible pointer type 
dbdimp.c: In function 'mysql_describe': 
dbdimp.c:3309: warning: assignment from incompatible pointer type 
rm -f blib/arch/auto/DBD/mysql/mysql.bundle 
LD_RUN_PATH="/usr/local/mysql/lib" /usr/bin/perl myld cc -mmacosx-version-min=10.5.7 -arch ppc -arch i386 -bundle -undefined dynamic_lookup -L/usr/local/lib dbdimp.o mysql.o -o blib/arch/auto/DBD/mysql/mysql.bundle \ 
     -L/usr/local/mysql/lib -lmysqlclient -lz -lm  \ 

chmod 755 blib/arch/auto/DBD/mysql/mysql.bundle 
Manifying blib/man3/DBD::mysql.3pm 
Manifying blib/man3/DBD::mysql::INSTALL.3pm 
Manifying blib/man3/Bundle::DBD::mysql.3pm 
    CAPTTOFU/DBD-mysql-4.012.tar.gz 
    /usr/bin/make -j3 -j3 -- OK 

Running make test 
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t 
t/00base.t .................. 1/6 Bailout called. Further testing stopped: Unable to load DBD::mysql 

# Failed test 'use DBD::mysql;' 
# at t/00base.t line 21. 
#  Tried to use 'DBD::mysql'. 
#  Error: Can't load '/Users/dlamblin/.cpan/build/DBD-mysql-4.012-4n3pv8/blib/arch/auto/DBD/mysql/mysql.bundle' for module DBD::mysql: dlopen(/Users/dlamblin/.cpan/build/DBD-mysql-4.012-4n3pv8/blib/arch/auto/DBD/mysql/mysql.bundle, 2): Symbol not found: _is_prefix 
# Referenced from: /Users/dlamblin/.cpan/build/DBD-mysql-4.012-4n3pv8/blib/arch/auto/DBD/mysql/mysql.bundle 
# Expected in: dynamic lookup 
# at (eval 7) line 2 
# Compilation failed in require at (eval 7) line 2. 
# BEGIN failed--compilation aborted at (eval 7) line 2. 
FAILED--Further testing stopped: Unable to load DBD::mysql 
make: *** [test_dynamic] Error 255 
    CAPTTOFU/DBD-mysql-4.012.tar.gz 
    /usr/bin/make test -- NOT OK 
//hint// to see the cpan-testers results for installing this module, try: 
    reports CAPTTOFU/DBD-mysql-4.012.tar.gz 
Running make install 
    make test had returned bad status, won't install without force 
Failed during this command: 
CAPTTOFU/DBD-mysql-4.012.tar.gz    : make_test NO 
+0

哪個版本的Perl?它是一個系統Perl嗎? – 2009-08-14 20:22:00

+0

/System/Library/Perl/5.8.8/ – dlamblin 2009-11-30 04:40:14

回答

5

好吧,如果你得到這些錯誤,我現在瞭解以下內容:

  1. MySQL 5.1 for Mac OS X x86_64不與DBD::mysql(還)不兼容。安裝32位x86版本,然後重試。你會成功。我希望perl Makefile.pl只會在橫幅上告訴你。
  2. Bundle::CPAN有問題,因爲我沒有以root身份進行安裝。爲什麼這使得它報告循環引用,而不是安裝許可問題,我永遠不會明白。

如果此時變成過時的信息,請添加註釋。

1

你嘗試安裝Bundle::DBD::mysql

+0

絕對如此。 DBI安裝得很好,但DBD :: mysql沒有。 – dlamblin 2009-08-14 21:08:06

+0

有關重新定義函數'do'的消息令我感到困惑。我不認爲你可以在C程序中有一個名爲'do'的函數。 – 2009-08-14 21:31:23

0

我還沒有處理這個問題,但我發現MacPorts清理了我所有的UNIX不兼容問題。在忍受太多的痛苦和痛苦之前,你可能想嘗試一下。

+2

MacPorts通過安裝它自己的Perl版本來發揮它的魔力。這可能是一個好主意 - 我寧願不使用Mac的系統Perl進行任何操作 - 但值得澄清MacPorts的幫助。 – Telemachus 2009-08-15 17:37:50

+0

我個人認爲這對聯合國國際法庭發佈的權證的規模來說是巨大的矯枉過正。 – dlamblin 2009-08-17 03:19:40

0

它在哪裏抱怨循環依賴?它看起來像你試圖鏈接到一個不兼容的版本的MySQL庫。它正在查找的符號不在您加載的庫中。我不認爲這是由CPAN.pm或cpan腳本引起的問題。

一些問題:

  • 誰編的Perl?這是蘋果的Perl嗎?
  • 誰編譯mysql?這是你自己的版本,因爲它在/ usr/local?
  • 您以前編譯過其他版本嗎?我從編譯開始,確保一切都指向正確的位置。
+0

是的我明白,該示例不顯示循環依賴。這是因爲它是我展示的dbd :: mysql部分。我用循環引用關閉了終端。現在我修好了,我無法重現它。如果人們不改變我的頭銜,你會發現它是「apple's」perl和mysql的mysql pkg。 (股票)。我想盡可能少地編譯。 – dlamblin 2009-08-17 03:12:30

+0

你的標題沒有提到過蘋果的perl。既然你不能重現循環依賴的東西,你應該從你的問題中刪除它。 – 2009-08-17 22:53:46

2

安裝可從其開發人員網站獲得的(測試版)5.4.1 64位版本的mysql可以解決此問題。經過雪豹測試。

+0

我只是嘗試了10.6(確實沒有10.6 pkgs)的確切的一些版本4.5.1-beta-osx10.5-x86_64,安裝和運行良好,但sudo perl -MCPAN -e'shell'不會安裝Bundle: :DBD :: mysql的。 測試彙總報告 ------------------- ... 此命令執行失敗: CAPTTOFU/DBD-mysql-4.012.tar.gz:make_test NO – dlamblin 2009-09-06 09:14:02

+0

我並不孤單,perlmonks.org上的某個人也有同樣的問題http://www.perlmonks.org/?node_id=793727 – dlamblin 2009-09-06 09:16:58

+0

最後讓它建立並運行,並至少用5.4.1 64位模塊加載模塊版本爲10.6上的10.5。測試仍然不能運行,因爲它似乎堅持要連接到測試數據庫。即使加載它,也沒有通過符號錯誤。結束強制安裝它,事情正在美好地工作。 – mikegrb 2009-09-14 02:08:02

0

在我的電腦上安裝最新的beta版64bit版本的Mysql固定問題。

+0

請使用版本號或版本號識別「最新版本」。目前網站上有3個最新版本,一個是測試版,一個是推薦的版本,另一個版本是舊版本,但兼容版本(舊版本)。 – dlamblin 2009-09-20 03:18:30

相關問題