Trubo Linux 10下为Perl安装DBD::Mysql模块
by jondy(jondy@tom.com)
用到以前写的Windows下的perl连mysql的脚本才发现
没有安DBI模块,在Windows下安装模块用PPM就可以了,很方便
而在linux没有ppm这个文件
linux下使用perl -MCPAN来安装模块,具体用法查看帮助
perl -MCPAN -h
perl -MCPAN 初次使用时提示设置,基本上一路回车到选择区域和国家
设置保存在
/usr/lib/perl5/5.8.0/CPAN/Config.pm
设置可以修改此文件或干脆删除它再运行perl -MCAPN -e shell重新设置
下边开始安装
perl -MCPAN -e shell
首先要安装DBI模块,这个在trubolinux10下没问题,
cpan install DBI
然后安装DBD::mysql模块
cpan install DBD::mysql
提示出错退出:
t/mysql2.t 255 65280 ?? ?? % ??
1 test skipped.
Failed 16/18 test scripts, 11.11% okay. 723/730 subtests failed, 0.96% okay.
make: *** [test_dynamic] 错误 2
/usr/bin/make test -- NOT OK
Running make install
make test had returned bad status, won't install without force
向上找发现
Can't exec "mysql_config": 没有那个文件或目录 at Makefile.PL line 174.
readline() on closed filehandle PIPE at Makefile.PL line 176.
cpan q
退出
[root@localhost sources]#vim /root/.cpan/build/DBD-mysql-2.9004/Makefile.PL
输入/mysql_config查找发现
open(PIPE, "mysql_config --$param |");
open(PIPE, "/usr/local/mysql/bin/mysql_config --$param |"); #修改此处,
运行
[root@localhost sources]#cd /root/.cpan/build/DBD-mysql-2.9004
[root@localhost sources]#perl Makefile.PL --h
Usage: perl /root/.cpan/build/DBD-mysql-2.9004/Makefile.PL [options]
Possible options are:
--cflags= Use for running the C compiler; defaults
to the value of "mysql_config --cflags"
--libs= Use for running the linker; defaults
to the value of "mysql_config --libs"
--testdb= Use the database for running the test suite;
defaults to test
--testuser= Use the username for running the test suite;
defaults to no username
--testpassword= Use the password for running the test suite;
defaults to no password
--testhost= Use as a database server for running the
test suite; defaults to localhost.
--testport= Use as the port number of the database;
by default the port number is choosen from the
mysqlclient library
--nocatchstderr Supress using the "myld" script that redirects
STDERR while running the linker.
--nofoundrows Change the behavoiur of $sth-rows() so that it
returns the number of rows physically modified
instead of the rows matched
--ssl Enable SSL support
--help Print this message and exit
All options may be configured on the command line. If they are
not present on the command line, then mysql_config is called:
mysql_config --cflags
mysql_config --libs
mysql_config --testdb
and so on. See the INSTALL.html file for details.
按提示输入
[root@localhost sources]#perl Makefile.PL --testuser=root --testpassword=password
输入数据库的用户名和密码
这次没有提示错误,然后输入
[root@localhost sources]#make
[root@localhost sources]#make test
[root@localhost sources]#make install
完成安装;
下边是安装时出现错误的完整信息
Running install for module DBD::mysql
Running make for R/RU/RUDY/DBD-mysql-2.9004.tar.gz
CPAN: Digest::MD5 loaded ok
CPAN: Compress::Zlib loaded ok
Checksum for /root/.cpan/sources/authors/id/R/RU/RUDY/DBD-mysql-2.9004.tar.gz ok
Scanning cache /root/.cpan/build for sizes
Deleting from cache: /root/.cpan/build/Msql-Mysql-modules-1.2219 (11.410.0 MB)
Deleting from cache: /root/.cpan/build/Data-Dumper-2.121 (10.710.0 MB)
Deleting from cache: /root/.cpan/build/Net-Telnet-3.03 (10.210.0 MB)
DBD-mysql-2.9004/
DBD-mysql-2.9004/t/
DBD-mysql-2.9004/t/mysql2.t
DBD-mysql-2.9004/t/akmisc.t
DBD-mysql-2.9004/t/60leaks.t
DBD-mysql-2.9004/t/10dsnlist.t
DBD-mysql-2.9004/t/ak-dbd.t
DBD-mysql-2.9004/t/50chopblanks.t
DBD-mysql-2.9004/t/mysql.t
DBD-mysql-2.9004/t/lib.pl
DBD-mysql-2.9004/t/40blobs.t
DBD-mysql-2.9004/t/40nulls.t
DBD-mysql-2.9004/t/insertid.t
DBD-mysql-2.9004/t/40listfields.t
DBD-mysql-2.9004/t/40bindparam.t
DBD-mysql-2.9004/t/mysql.dbtest
DBD-mysql-2.9004/t/dbdadmin.t
DBD-mysql-2.9004/t/20createdrop.t
DBD-mysql-2.9004/t/00base.t
DBD-mysql-2.9004/t/30insertfetch.t
DBD-mysql-2.9004/t/40numrows.t
DBD-mysql-2.9004/t/50commit.t
DBD-mysql-2.9004/t/mysql.mtest
DBD-mysql-2.9004/MANIFEST
DBD-mysql-2.9004/myld
DBD-mysql-2.9004/dbdimp.c
DBD-mysql-2.9004/lib/
DBD-mysql-2.9004/lib/DBD/
DBD-mysql-2.9004/lib/DBD/mysql/
DBD-mysql-2.9004/lib/DBD/mysql/GetInfo.pm
DBD-mysql-2.9004/lib/DBD/mysql/INSTALL.pod
DBD-mysql-2.9004/lib/DBD/mysql.pm
DBD-mysql-2.9004/lib/Mysql/
DBD-mysql-2.9004/lib/Mysql/Statement.pm
DBD-mysql-2.9004/lib/Bundle/
DBD-mysql-2.9004/lib/Bundle/DBD/
DBD-mysql-2.9004/lib/Bundle/DBD/mysql.pm
DBD-mysql-2.9004/lib/Mysql.pm
DBD-mysql-2.9004/dbdimp.h
DBD-mysql-2.9004/mysql.xs
DBD-mysql-2.9004/MANIFEST.SKIP
DBD-mysql-2.9004/README
DBD-mysql-2.9004/INSTALL.html
DBD-mysql-2.9004/META.yml
DBD-mysql-2.9004/Makefile.PL
DBD-mysql-2.9004/ChangeLog
DBD-mysql-2.9004/constants.h
DBD-mysql-2.9004/TODO
Removing previously used /root/.cpan/build/DBD-mysql-2.9004
CPAN.pm: Going to build R/RU/RUDY/DBD-mysql-2.9004.tar.gz
Can't exec "mysql_config": 没有那个文件或目录 at Makefile.PL line 174.
readline() on closed filehandle PIPE at Makefile.PL line 176.
Can't exec "mysql_config": 没有那个文件或目录 at Makefile.PL line 174.
readline() on closed filehandle PIPE at Makefile.PL line 176.
Can't exec "mysql_config": 没有那个文件或目录 at Makefile.PL line 174.
readline() on closed filehandle PIPE at Makefile.PL line 176.
Can't exec "mysql_config": 没有那个文件或目录 at Makefile.PL line 174.
readline() on closed filehandle PIPE at Makefile.PL line 176.
Can't exec "mysql_config": 没有那个文件或目录 at Makefile.PL line 174.
readline() on closed filehandle PIPE at Makefile.PL line 176.
Can't exec "mysql_config": 没有那个文件或目录 at Makefile.PL line 174.
readline() on closed filehandle PIPE at Makefile.PL line 176.
Can't exec "mysql_config": 没有那个文件或目录 at Makefile.PL line 174.
readline() on closed filehandle PIPE at Makefile.PL line 176.
Can't exec "mysql_config": 没有那个文件或目录 at Makefile.PL line 174.
readline() on closed filehandle PIPE at Makefile.PL line 176.
Can't exec "mysql_config": 没有那个文件或目录 at Makefile.PL line 174.
readline() on closed filehandle PIPE at Makefile.PL line 176.
I will use the following settings for compiling and testing:
cflags (guessed) = -I/usr/local/mysql/include
libs (guessed) = -L/usr/local/mysql/lib -lmysqlclient -lz -lgz
nocatchstderr (default) = 0
nofoundrows (default) = 0
ssl (guessed) = 0
testdb (default) = test
testhost (default) =
testpassword (default) =
testuser (default) =
To change these settings, see 'perl Makefile.PL --help' and
'perldoc INSTALL'.
Checking if your kit is complete...
Looks good
Note (probably harmless): No library found for -lgz
Using DBI 1.47 (for perl 5.008 on i386-linux) installed in /usr/lib/perl5/site_p
erl/5.8.0/i386-linux/auto/DBI/
Writing Makefile for DBD::mysql
cp lib/DBD/mysql/GetInfo.pm blib/lib/DBD/mysql/GetInfo.pm
cp lib/DBD/mysql.pm blib/lib/DBD/mysql.pm
cp lib/DBD/mysql/INSTALL.pod blib/lib/DBD/mysql/INSTALL.pod
cp lib/Mysql.pm blib/lib/Mysql.pm
cp lib/Mysql/Statement.pm blib/lib/Mysql/Statement.pm
cp lib/Bundle/DBD/mysql.pm blib/lib/Bundle/DBD/mysql.pm
cc -c -I/usr/lib/perl5/site_perl/5.8.0/i386-linux/auto/DBI/ -I/usr/local/mysql/
include -DDEBUGGING -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS
=64 -O2 -g -march=i586 -DVERSION=\"2.9004\" -DXS_VERSION=\"2.9004\" -fPIC "-I/
usr/lib/perl5/5.8.0/i386-linux/CORE" dbdimp.c
/usr/bin/perl -p -e "s/~DRIVER~/mysql/g" /usr/lib/perl5/site_perl/5.8.0/i386-lin
ux/auto/DBI//Driver.xst mysql.xsi
/usr/bin/perl /usr/lib/perl5/5.8.0/ExtUtils/xsubpp -typemap /usr/lib/perl5/5.8.
0/ExtUtils/typemap mysql.xs mysql.xsc && mv mysql.xsc mysql.c
Warning: duplicate function definition 'do' detected in mysql.xs, line 196
Warning: duplicate function definition 'rows' detected in mysql.xs, line 294
cc -c -I/usr/lib/perl5/site_perl/5.8.0/i386-linux/auto/DBI/ -I/usr/local/mysql/
include -DDEBUGGING -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS
=64 -O2 -g -march=i586 -DVERSION=\"2.9004\" -DXS_VERSION=\"2.9004\" -fPIC "-I/
usr/lib/perl5/5.8.0/i386-linux/CORE" mysql.c
Running Mkbootstrap for DBD::mysql ()
chmod 644 mysql.bs
rm -f blib/arch/auto/DBD/mysql/mysql.so
LD_RUN_PATH="/usr/local/mysql/lib:/usr/lib" /usr/bin/perl myld cc -shared -L/us
r/local/lib dbdimp.o mysql.o -o blib/arch/auto/DBD/mysql/mysql.so -L/usr/loca
l/mysql/lib -lmysqlclient -lz
chmod 755 blib/arch/auto/DBD/mysql/mysql.so
cp mysql.bs blib/arch/auto/DBD/mysql/mysql.bs
chmod 644 blib/arch/auto/DBD/mysql/mysql.bs
Manifying blib/man3/DBD::mysql.3
Manifying blib/man3/Mysql.3
Manifying blib/man3/DBD::mysql::INSTALL.3
Manifying blib/man3/Bundle::DBD::mysql.3
/usr/bin/make -- 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...........ok
t/10dsnlist........DBI connect('test','',...) failed: Access denied for user 'ro
ot'@'localhost' (using password: NO) at t/10dsnlist.t line 45
Cannot connect: Access denied for user 'root'@'localhost' (using password: NO)
Either your server is not up and running or you have no
permissions for acessing the DSN DBI:mysql:test.
This test requires a running server and write permissions.
Please make sure your server is running and you have
permissions, then retry.
t/10dsnlist........dubious
Test returned status 10 (wstat 2560, 0xa00)
DIED. FAILED tests 1-9
Failed 9/9 tests, 0.00% okay
t/20createdrop.....DBI connect('test','',...) failed: Access denied for user 'ro
ot'@'localhost' (using password: NO) at t/20createdrop.t line 45
Cannot connect: Access denied for user 'root'@'localhost' (using password: NO)
Either your server is not up and running or you have no
permissions for acessing the DSN DBI:mysql:test.
This test requires a running server and write permissions.
Please make sure your server is running and you have
permissions, then retry.
t/20createdrop.....dubious
Test returned status 10 (wstat 2560, 0xa00)
DIED. FAILED tests 1-5
Failed 5/5 tests, 0.00% okay
t/30insertfetch....DBI connect('test','',...) failed: Access denied for user 'ro
ot'@'localhost' (using password: NO) at t/30insertfetch.t line 48
Cannot connect: Access denied for user 'root'@'localhost' (using password: NO)
Either your server is not up and running or you have no
permissions for acessing the DSN DBI:mysql:test.
This test requires a running server and write permissions.
Please make sure your server is running and you have
permissions, then retry.
t/30insertfetch....dubious
Test returned status 10 (wstat 2560, 0xa00)
DIED. FAILED tests 1-11
Failed 11/11 tests, 0.00% okay
t/40bindparam......DBI connect('test','',...) failed: Access denied for user 'ro
ot'@'localhost' (using password: NO) at t/40bindparam.t line 64
Cannot connect: Access denied for user 'root'@'localhost' (using password: NO)
Either your server is not up and running or you have no
permissions for acessing the DSN DBI:mysql:test.
This test requires a running server and write permissions.
Please make sure your server is running and you have
permissions, then retry.
t/40bindparam......dubious
Test returned status 10 (wstat 2560, 0xa00)
DIED. FAILED tests 1-28
Failed 28/28 tests, 0.00% okay
t/40blobs..........DBI connect('test','',...) failed: Access denied for user 'ro
ot'@'localhost' (using password: NO) at t/40blobs.t line 68
Cannot connect: Access denied for user 'root'@'localhost' (using password: NO)
Either your server is not up and running or you have no
permissions for acessing the DSN DBI:mysql:test.
This test requires a running server and write permissions.
Please make sure your server is running and you have
permissions, then retry.
t/40blobs..........dubious
Test returned status 10 (wstat 2560, 0xa00)
DIED. FAILED tests 1-11
Failed 11/11 tests, 0.00% okay
t/40listfields.....DBI connect('test','',...) failed: Access denied for user 'ro
ot'@'localhost' (using password: NO) at t/40listfields.t line 57
Cannot connect: Access denied for user 'root'@'localhost' (using password: NO)
Either your server is not up and running or you have no
permissions for acessing the DSN DBI:mysql:test.
This test requires a running server and write permissions.
Please make sure your server is running and you have
permissions, then retry.
t/40listfields.....dubious
Test returned status 10 (wstat 2560, 0xa00)
DIED. FAILED tests 1-18
Failed 18/18 tests, 0.00% okay
t/40nulls..........DBI connect('test','',...) failed: Access denied for user 'ro
ot'@'localhost' (using password: NO) at t/40nulls.t line 50
Cannot connect: Access denied for user 'root'@'localhost' (using password: NO)
Either your server is not up and running or you have no
permissions for acessing the DSN DBI:mysql:test.
This test requires a running server and write permissions.
Please make sure your server is running and you have
permissions, then retry.
t/40nulls..........dubious
Test returned status 10 (wstat 2560, 0xa00)
DIED. FAILED tests 1-11
Failed 11/11 tests, 0.00% okay
t/40numrows........DBI connect('test','',...) failed: Access denied for user 'ro
ot'@'localhost' (using password: NO) at t/40numrows.t line 59
Cannot connect: Access denied for user 'root'@'localhost' (using password: NO)
Either your server is not up and running or you have no
permissions for acessing the DSN DBI:mysql:test.
This test requires a running server and write permissions.
Please make sure your server is running and you have
permissions, then retry.
t/40numrows........dubious
Test returned status 10 (wstat 2560, 0xa00)
DIED. FAILED tests 1-25
Failed 25/25 tests, 0.00% okay
t/50chopblanks.....DBI connect('test','',...) failed: Access denied for user 'ro
ot'@'localhost' (using password: NO) at t/50chopblanks.t line 57
Cannot connect: Access denied for user 'root'@'localhost' (using password: NO)
Either your server is not up and running or you have no
permissions for acessing the DSN DBI:mysql:test.
This test requires a running server and write permissions.
Please make sure your server is running and you have
permissions, then retry.
t/50chopblanks.....dubious
Test returned status 10 (wstat 2560, 0xa00)
DIED. FAILED tests 1-35
Failed 35/35 tests, 0.00% okay
t/50commit.........DBI connect('test','',...) failed: Access denied for user 'ro
ot'@'localhost' (using password: NO) at t/50commit.t line 64
Can't call method "tables" on an undefined value at t/lib.pl line 216.
t/50commit.........dubious
Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 1-30
Failed 30/30 tests, 0.00% okay
t/60leaks..........skipped
all skipped: $ENV{SLOW_TESTS} is not set or Proc::ProcessTable not insta
lled
t/ak-dbd...........DBI connect('test','',...) failed: Access denied for user 'ro
ot'@'localhost' (using password: NO) at t/ak-dbd.t line 59
t/ak-dbd...........ok 3/90Can't call method "tables" on an undefined value at t/
lib.pl line 216.
t/ak-dbd...........dubious
Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 1, 4-90
Failed 88/90 tests, 2.22% okay
t/akmisc...........Mysql connect('database=test;host=','',...) failed: Access de
nied for user 'root'@'localhost' (using password: NO) at t/akmisc.t line 140
t/akmisc...........NOK 1Cannot connect: Access denied for user 'root'@'localhost
' (using password: NO)
It looks as if your server is not up and running.
This test requires a running server.
Please make sure your server is running and retry.
t/akmisc...........dubious
Test returned status 10 (wstat 2560, 0xa00)
DIED. FAILED tests 1-351
Failed 351/351 tests, 0.00% okay
t/dbdadmin.........DBI connect('test','',...) failed: Access denied for user 'ro
ot'@'localhost' (using password: NO) at t/dbdadmin.t line 74
t/dbdadmin.........NOK 1Cannot connect: Access denied for user 'root'@'localhost
' (using password: NO)
Either your server is not up and running or you have no
permissions for acessing the DSN DBI:mysql:test.
This test requires a running server and write permissions.
Please make sure your server is running and you have
permissions, then retry.
t/dbdadmin.........dubious
Test returned status 10 (wstat 2560, 0xa00)
DIED. FAILED tests 1-21
Failed 21/21 tests, 0.00% okay
t/insertid.........DBI connect('test','',...) failed: Access denied for user 'ro
ot'@'localhost' (using password: NO) at t/insertid.t line 13
t/insertid.........dubious
Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 1-12
Failed 12/12 tests, 0.00% okay
t/mysql............Mysql connect('database=test;host=','',...) failed: Access de
nied for user 'root'@'localhost' (using password: NO) at t/mysql.t line 55
not ok 1: Access denied for user 'root'@'localhost' (using password: NO)
It looks as if your server is not up and running.
This test requires a running server.
Please make sure your server is running and retry.
t/mysql............FAILED tests 1-68
Failed 68/68 tests, 0.00% okay
t/mysql2...........Mysql connect('database=test;host=','',...) failed: Access de
nied for user 'root'@'localhost' (using password: NO) at t/mysql2.t line 29
Can't call method "getserverinfo" on an undefined value at t/mysql2.t line 30.
t/mysql2...........dubious
Test returned status 255 (wstat 65280, 0xff00)
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/10dsnlist.t 10 2560 9 9 100.00% 1-9
t/20createdrop.t 10 2560 5 5 100.00% 1-5
t/30insertfetch.t 10 2560 11 11 100.00% 1-11
t/40bindparam.t 10 2560 28 28 100.00% 1-28
t/40blobs.t 10 2560 11 11 100.00% 1-11
t/40listfields.t 10 2560 18 18 100.00% 1-18
t/40nulls.t 10 2560 11 11 100.00% 1-11
t/40numrows.t 10 2560 25 25 100.00% 1-25
t/50chopblanks.t 10 2560 35 35 100.00% 1-35
t/50commit.t 255 65280 30 30 100.00% 1-30
t/ak-dbd.t 255 65280 90 88 97.78% 1 4-90
t/akmisc.t 10 2560 351 351 100.00% 1-351
t/dbdadmin.t 10 2560 21 21 100.00% 1-21
t/insertid.t 255 65280 12 12 100.00% 1-12
t/mysql.t 68 68 100.00% 1-68
t/mysql2.t 255 65280 ?? ?? % ??
1 test skipped.
Failed 16/18 test scripts, 11.11% okay. 723/730 subtests failed, 0.96% okay.
make: *** [test_dynamic] 错误 2
/usr/bin/make test -- NOT OK
Running make install
make test had returned bad status, won't install without force
cpan q