Почему Perl DBD :: DB2 не может найти dbivport.h во время установки? - PullRequest
2 голосов
/ 28 апреля 2010

Мы используем утилиту Perl для вывода данных из базы данных DB2. Мы установили пакет DBI, и он также запрашивает пакет DBD.

У нас нет root-доступа, и когда мы пытаемся установить пакет DBD, мы получаем следующую ошибку:

    ERROR BUILDING DB2.pm
    [lijumathew@intblade03 DBD-DB2-1.78]$ make
    make[1]: Entering directory '/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"   Constants.c
    Running Mkbootstrap for DBD::DB2::Constants ()
    chmod 644 Constants.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 Constants.bs ../blib/arch/auto/DBD/DB2/Constants/Constants.bs
    chmod 644 ../blib/arch/auto/DBD/DB2/Constants/Constants.bs
    make[1]: Leaving directory `/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
    In file included from DB2.h:22,
                     from DB2.xs:7:
    dbdimp.h:10:22: dbivport.h: No such file or directory
    make: *** [DB2.o] Error 1

Как мы можем это исправить? Нужен ли нам root-доступ для решения этой проблемы?

Ответы [ 2 ]

2 голосов
/ 28 апреля 2010

У вас проблема, потому что большинство модулей perl, включая DBD-DB2, не написаны для установки в другие места, чем модуль DBI, что и происходит, если вы пытаетесь установить вещи без полномочий root. Чтобы это заработало, вам нужно добавить такую ​​строку в Makefile:

DEFINE =  -DDB2_CACHE_FIX  -I${DBI_INCL}

и задайте DBI_INCL для каталога, в котором есть файлы заголовков DBI.

1 голос
/ 28 апреля 2010

Пожалуйста, загляните на форум CPAN для DBD :: Ошибка DB2 make

Кроме того, если вы делаете ниже, может помочь вам:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...