Perl安裝說明

 

http://www.yuzi.net/Show.asp?id=9585

 

Perl對MySQL的支持藉助DBI/DBD客戶接口而提供。見20.5 MySQL Perl API。Perl DBD/DBI客戶代碼要求Perl 5.004或以後版本。如果你有Perl的一個更舊的版本,接口將不能工作

MySQL Perl支持也要求你安裝了MySQL客戶編程支持。如果你從RPM文件安裝MySQL,客戶程序在客戶RPM中,但是客戶編程支持在開發者RPM。確定你安裝了後一個RPM 。

對於版本3.22.8,Perl支持是與主要MySQL發行版本單獨分發。如果你想要安裝Perl支持,你需要的文件能從http://www.mysql.com/Contrib獲得。

Perl 分發以壓縮的tar檔案提供,並且有一個類似“MODULE-VERSION.tar.gz”的名字,這裏MODULE是模塊名字並且VERSION是版本號。你應該得到Data-Dumper、DBI和Msql-Mysql-modules分發並按此次序安裝他們。安裝過程顯示出在下面,顯示的例子針對Data-Dumper模塊, 但是所有3個過程是相同的。

  1. 解包分發到當前目錄:
    shell> gunzip < Data-Dumper-VERSION.tar.gz | tar  xvf -

    這個命令創建的一個名爲“Data-Dumper-VERSION”的目錄。

  2. 進入解包分發的頂級目錄:
    shell> cd  Data-Dumper-VERSION
  3. 構造分發並且編譯所有東西:
    shell> perl Makefile.PLshell> makeshell> make testshell> make install

make test命令很重要,因爲它驗證模塊正在工作。注意:在你Msql-Mysql-modules安裝期間運行該命令試驗接口代碼時,MySQL服務器必須正在運行,否則測試將失敗。

無論何時你安裝一個新版本的MySQL,重建並且重新安裝Msql-Mysql-modules分發是一個好主意, 特別是如果你在升級MySQL後,觀察所有異常,如你的DBI腳本核心傾倒(core dump)。

如果你沒有權限在系統目錄下安裝Perl模塊,或如果你安裝本地Perl模塊,下列參考書可以幫助你:

http://www.iserver.com/support/contrib/perl5/modules.html

在標題Installing New Modules that Require Locally Installed Modules下面查找。

4.10.2 在Win32上安裝ActiveState Perl

在 Win32 上安裝 ActiveState Perl的MySQL DBD的模塊, 你應該做下列步驟:

  • 打開一個DOS shell。
  • 如果需要,設置HTTP_proxy變量。例如, 你可以試一試:set HTTP_proxy=my.proxy.com:3128
  • 啓動PPM程序:C:/perl/bin/ppm.pl
  • 如果你還沒有這樣做,安裝DBIinstall DBI
  • 如果成功,安裝DBD::mysql:http://www.mysql.com/Contrib/ppd/DBD-mysql.ppd

如果你不能使上述步驟工作,你應該安裝MyODBC驅動程序並且通過ODBC連接MySQL服務器。

use DBI;$dbh= DBI->connect("DBI:ODBC:$dsn","$user","$password") ||   die "Got error $DBI::errstr when connecting to $dsn/n";

4.10.3 在Win32上安裝MySQL Perl分發

MySQL Perl分發包含DBIDBD:MySQLDBD:ODBC

  • 從http://www.mysql.com/download.html得到Win32的Perl分發。
  • C:解壓縮分發,這樣你得到一個“C:/PERL”目錄。
  • 增加目錄“C:/PERL/BIN”到你的路徑。
  • 增加目錄“C:/PERL/BIN/MSWin32-x86-thread”“C:/PERL/BIN/MSWin32-x86”到你的路徑。
  • 在 DOS shell執行perl -v測試perl的運行。

4.10.4 使用PerlDBI/DBD接口的問題

如果 Perl 報告它不能找到../mysql/mysql.so模塊,那麼問題可能是該Perl不能找到共享庫文件“libmysqlclient.so”

你可用下列任何一個方法修正它這:

  • perl Makefile.PL -static而非perl Makefile.PL譯Msql-Mysql-modules分發。
  • 拷貝libmysqlclient.so到其他共享庫文件所在的目錄(可能是“/usr/lib”“/lib”)。
  • Linux上,你可以把libmysqlclient.so所在目錄的路徑名加到“/etc/ld.so.conf”文件中。
  • libmysqlclient.so所在目錄的路徑名加到LD_RUN_PATH環境變量中。

如果你從DBD-mysql得到下列錯誤,你可能正在使用gcc(或使用一箇舊的用gcc編譯的二進制代碼):

/usr/bin/perl: can't resolve symbol '__moddi3'/usr/bin/perl: can't resolve symbol '__divdi3'

“mysql.so”庫文件被構造時候,爲鏈接命令加上-L/usr/lib/gcc-lib/... -lgcc(當你編譯Perl客戶時檢查針對“mysql.so”make輸出)。-L選項應該指定“libgcc.a”在你係統上所在目錄的路徑名。

這個問題的另一個原因可能是Perl和MySQL都不是用gcc編譯的。在這種情況下,你可以都用gcc編譯以解決不匹配。

如果你想要在一個不支持動態鏈接(象SCO那樣)的系統上使用Perl模塊,你可以產生包括DBIDBD-mysql的Perl的一個靜態版本。這種運行方法是你生成一個鏈接了DBI代碼的Perl版本並在最新的Perl上安裝它,然後你使用它來構造附加鏈接了DBD代碼的Perl版本,並且安裝它。

在 SCO 上,你必須有下列環境變量設置:

shell> LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib或shell> LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/libshell> LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:/usr/progressive/lib:/usr/skunk/libshell> MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:/usr/skunk/man:

首先, 在DBI分發所在目錄下運行下列命令,創造包括一個靜態鏈接的Perl DBI

shell> perl Makefile.PL LINKTYPE=staticshell> makeshell> make installshell> make perl

然後你必須安裝新的Perl。make perl的輸出將顯示正確的你需要執行施行安裝的make的命令。在SCO上,是make -f Makefile.aperl inst_perl MAP_TARGET=perl.

接下來,在Msql-Mysql-modules分發所在目錄下,使用剛纔創建的Perl來創建同樣包括一個靜態鏈接的PerlDBD::mysql的另一個Perl:

shell> perl Makefile.PL LINKTYPE=static shell> make shell> make install shell> make perl

最後, 你應該安裝這個新的Perl。而且,make perl的輸出指出使用的命令。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章