2011年1月28日星期五

安装sql-bench 所需模块

安装DBI
开始想是采用 cpan方式安装,但是一直提示找不到源,利用o conf init重新配置cpan 源后,还是失败,决。定还是采用源代码安装。参照源代码中的README 如下步骤:
[bash]
BUILDING

perl Makefile.PL
make
make test
make test TEST_VERBOSE=1 (if any of the t/* tests fail)
make install (if the tests look okay)
[/bash]

试过很多次,但每次都是以出现如下错误而失败而告之:
[text]
30 tests and 225 subtests skipped.
Failed 56/178 test scripts, 68.54% okay. 1428/5109 subtests failed, 72.05% okay.
make: *** [test_dynamic] Error 255
[/text]

再看README,里面提到
[text]
2. The output of perl -V

3. If you get a core dump, try to include a stack trace from it.
(Try installing the Devel::CoreStack module to get a stack trace.)
If the stack trace mentions XS_DynaLoader_dl_load_file then rerun
make test after setting the environment variable PERL_DL_DEBUG to 2.
[/text]

依照上面提示,从中得知,perl 5以上版本可以安装 Devel::CoreStack这个模块跟踪,因为之前 cpan 安装都失败,所以直接到 perl module 这下载源代码。 Devel::CoreStack 编译很顺利,之后,设置好环境变量 PERL_DL_DEBUG。重新执行安装 DBI 的命令, 失败,跟踪错误——某个文件里变量有重复定义。

不得以,问一同事,才得知我此时使用的测试服务器的 DNS 设置有问题。修改 DNS, 再次使用 cpan 方式安装,失败。后来,想到有可能是 cpan 配置的 source 有问题,于是,将另外一台机器上 cpan 的 source 完全 copy 过来,再使用
[bash]
cpan>reload index
[/bash]
重新加载源的索引。这之后
[bash]
cpan>install DBI
[/bash]
执行成功。


安装DBD::mysql
[bash]
cpan>install DBD::mysql
[/bash]
失败,错误提示是关于sql-bench 执行时测试的参数没有设置有关。因为不太了解这里要怎么设置,所以转而采用源代码编译安装。执行 perl MakeFile.PL,还是报跟采用 cpan 方式时的错误。求助于README后,试着加上如下参数编译
[bash]
perl Makefile.PL --testhost='127.0.0.1' --testuser='test' --testpassword='123456' testdb='test'
[/bash]
这次编译算是提示半成功,还是有提示
[text]
libs -rdynamic -L/usr/local/mysql/lib -lmysqlclient -lz -lcrypt -lnsl -lm -lmygcc
[/text]
libs 中的 -rdynamic 标识无法识别,为了避免这个对于之后的编译有影响。于是,重新用如下参数设置
[bash]
perl Makefile.PL --libs='-L/usr/local/mysql/lib -lmysqlclient -lz -lcrypt -lnsl -lm -lmygcc' --testhost='127.0.0.1' --testuser='test' --testpassword='123456' testdb='test'
[/bash]
这次终于没报任何错误,顺利编译。
这里有点疑问,不知道是我理解错误还是参数设置的问题,为什么一定要设置好测试的主机,用户及其库才能编译成功呢?源代码正确安装步骤如下:
[bash]
tar xvzf DBD-mysql-4.018.tar.gz
cd DBD-mysql-4.018
perl Makefile.PL --libs='-L/usr/local/mysql/lib -lmysqlclient -lz -lcrypt -lnsl -lm -lmygcc' --testhost='127.0.0.1' --testuser='test' --testpassword='123456' testdb='test'
make
make install
[/bash]

安装Data::ShowTable
这个我采用的还是源代码安装,一路下来,很顺利。
[bash]
tar xvzf Data-ShowTable-3.3.tar.gz
cd Data-ShowTable-3.3
perl Makefile.PL
make
make install
[/bash]


这番准备后,应该可以正常运行sql-bench。

这里测试时有点小问题,bench-init.pl 是在 sql-bench 目录下,同各测试程序是在同一目录,但是,好像加载这个配置文件时使用的目录却是当前命令行所在的目录,所以,开始时一度总是报找不到测试配置文件的错误。等把当前目录转到 sql-bench 所在的目录时,再执行,OK。

1 条评论:

  1. 应该说是昨天,在另外一台机器上安装同样的套件。突然明了,如果不是自己手动编译的mysql,在用CPAN方式安装DBD::mysql时,即只要找到了mysql_config,是可以执行成功的

    手动编译DBD::mysql时,也是同样的原理,另外,使用如下命令也是可以通过的,假设mysql 安装在 /usr/local/mysql
    [bash]
    perl Makefile.PL \
    --mysql_config='/user/local/mysql/bin/mysql_config'
    [/bash]

    回复删除