2

我们正在使用 Perl 实用程序从 DB2 数据库中转储数据。我们安装了 DBI 包,它也要求 DBD 包。

我们没有 root 访问权限,当我们尝试安装 DBD 包时,我们收到以下错误:

    错误构建 DB2.pm
    [lijumathew@intblade03 DBD-DB2-1.78]$ 制作
    make[1]: 进入目录'/home/lijumathew/lperl/perlsrc/DBD-DB2-1.78/Constants'
    gcc -c -I"/db2/db2tf1/sqllib/include" -D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/ gdbm -O2 -g -pipe -m32 -march=i386 -mtune=pentium4 -DVERSION=\"1.78\" -DXS_VERSION=\"1.78\" -fPIC "-I/usr/lib/perl5/5.8.5/i386 -linux-thread-multi/CORE" 常量.c
    为 DBD::DB2::Constants () 运行 Mkbootstrap
    chmod 644 常量.bs
    rm -f ../blib/arch/auto/DBD/DB2/Constants/Constants.so
    gcc -shared -L/usr/local/lib Constants.o -o ../blib/arch/auto/DBD/DB2/Constants/Constants.so
    chmod 755 ../blib/arch/auto/DBD/DB2/Constants/Constants.so
    cp 常量.bs ../blib/arch/auto/DBD/DB2/Constants/Constants.bs
    chmod 644 ../blib/arch/auto/DBD/DB2/Constants/Constants.bs
    make[1]: 离开目录`/home/lijumathew/lperl/perlsrc/DBD-DB2-1.78/Constants'
    gcc -c -I"/db2/db2tf1/sqllib/include"-I"/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBI"-I"/usr/lib /perl5/5.8.5/i386-linux-thread-multi/auto/DBI"-I"/usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/auto/DBI"-I" /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi/auto/DBI" -D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE - D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm -O2 -g -pipe -m32 -march=i386 -mtune=pentium4 -DVERSION=\"1.78\" -DXS_VERSION=\"1.78\" -fPIC "-I/usr /lib/perl5/5.8.5/i386-linux-thread-multi/CORE" DB2.c
    在 DB2.h:22 包含的文件中,
                     从 DB2.xs:7:
    dbdimp.h:10:22: dbivport.h: 没有这样的文件或目录
    make: *** [DB2.o] 错误 1

我们如何解决这个问题?我们需要root访问权限来解决这个问题吗?

4

2 回答 2

2

您遇到了问题,因为大多数 perl 模块,包括 DBD-DB2,都不是为了安装到与 DBI 模块不同的位置而编写的,如果您尝试以非 root 用户身份安装,就会发生这种情况。为了让它工作,你需要在 Makefile 中添加这样的一行:

DEFINE =  -DDB2_CACHE_FIX  -I${DBI_INCL}

并将 DBI_INCL 设置为具有 DBI 头文件的目录。

于 2010-04-28T18:02:36.600 回答
1

请查看DBD::DB2 make failed的 CPAN 论坛

此外,如果您执行以下操作可以帮助您:

Set the DB2 environment variable

   1. In C Shell setenv DB2_HOME $HOME/sqllib
   2. In Bash Shell export DB2_HOME=$HOME/sqllib

安装模块:

# perl Makefile.PL PREFIX=path
# make
# make test
# make install

但是,如果您可以向我们提供 perl -V 输出、您所在的平台和 DBI 版本,这将有助于回答问题。

于 2010-04-28T06:30:30.130 回答