簡體   English   中英

由於在 Strawberry Perl 上使用 cpan 進行測試,DBD::DB2 安裝失敗

[英]DBD::DB2 installation failing because of test using cpan on Strawberry Perl

我是 perl 的新手,我正在嘗試使用 cpan 在 Windows PC 上為 perl 安裝 DBD::DB2 模塊,但我不斷收到此錯誤:

CPAN: CPAN::SQLite loaded ok (v0.212)
Database was generated on Thu, 06 Dec 2018 20:55:19 GMT

Running install for module 'DBD::DB2'
CPAN: Digest::SHA loaded ok (v6.02)
CPAN: Compress::Zlib loaded ok (v2.081)
Checksum for D:\STRAWB~1\cpan\sources\authors\id\I\IB\IBMTORDB2\DBD-DB2-1.85.tar.gz ok
CPAN: Archive::Tar loaded ok (v2.32)
CPAN: YAML::XS loaded ok (v0.75)
CPAN: CPAN::Meta::Requirements loaded ok (v2.140)
CPAN: Parse::CPAN::Meta loaded ok (v2.150010)
CPAN: CPAN::Meta loaded ok (v2.150010)
Configuring I/IB/IBMTORDB2/DBD-DB2-1.85.tar.gz with Makefile.PL

Configuring DBD::DB2...
Remember to actually read the README and CAVEATS files!

Using DB2 in "D:/SQLLIB"
System: perl5.028001 DBI1.642 Win32 strawberry-perl 5.28.1.1 #1 Sun Dec  2 14:24:00 2018 x64 MSWin32-x64-multi-thread dl_win32.xs
Compiler: gcc -s -O2  -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE -D__USE_MINGW_ANSI_STDIO -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -fwrapv -fno-strict-aliasing -mms-bitfields
Includes:  -I"D:/SQLLIB/include" -I"D:\STRAWB~1\perl\site\lib/auto/DBI" -I"D:\STRAWB~1\perl\lib/auto/DBI" -I"D:\STRAWB~1\perl\vendor\lib/auto/DBI" -I"D:\STRAWB~1\perl\site\lib/auto/DBI" 
Libraries: -L"D:/SQLLIB/lib" db2cli.lib db2api.lib

Checking if your kit is complete...
Looks good
Checking if your kit is complete...
Looks good
Writing MYMETA.yml and MYMETA.json
Generating a gmake-style Makefile
Writing Makefile for DBD::DB2
Writing MYMETA.yml and MYMETA.json
IBMTORDB2/DBD-DB2-1.85.tar.gz
D:\Strawberry\perl\bin\perl.exe Makefile.PL -- OK
Running make for I/IB/IBMTORDB2/DBD-DB2-1.85.tar.gz
CPAN: Module::CoreList loaded ok (v5.20181130)
cp DB2.pm blib\lib\DBD\DB2.pm
cp DB2.pod blib\lib\DBD\DB2.pod
cp lib/Bundle/DBD/DB2.pm blib\lib\Bundle\DBD\DB2.pm
gmake[1]: Entering directory 'D:/STRAWB~1/cpan/build/DBD-DB2-1.85-10/Constants'
AutoSplitting ..\blib\lib\DBD\DB2\Constants.pm     (..\blib\lib\auto\DBD\DB2\Constants)
Running Mkbootstrap for Constants ()
"D:\Strawberry\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 644     "Constants.bs"
"D:\Strawberry\perl\bin\perl.exe" -MExtUtils::Command::MM -e cp_nonempty -- Constants.bs    ..\blib\arch\auto\DBD\DB2\Constants\Constants.bs 644
"D:\Strawberry\perl\bin\perl.exe"    "D:\Strawberry\perl\lib\ExtUtils/xsubpp"  -typemap   D:\STRAWB~1\perl\lib\ExtUtils\typemap  Constants.xs > Constants.xsc
"D:\Strawberry\perl\bin\perl.exe" -MExtUtils::Command -e mv -- Constants.xsc Constants.c
gcc -c -I"D:/SQLLIB/include" -I"D:\STRAWB~1\perl\site\lib/auto/DBI" -I"D:\STRAWB~1\perl\lib/auto/DBI" -I"D:\STRAWB~1\perl\vendor\lib/auto/DBI" -I"D:\STRAWB~1\perl\site\lib/auto/DBI"   -I"D:/SQLLIB/include" -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE -D__USE_MINGW_ANSI_STDIO -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -fwrapv -fno-strict-aliasing -mms-bitfields -s -O2   -DVERSION=\"1.85\" -DXS_VERSION=\"1.85\"  "-ID:\STRAWB~1\perl\lib\CORE" -   DDB2_CACHE_FIX    Constants.c
gmake[1]: Leaving directory 'D:/STRAWB~1/cpan/build/DBD-DB2-1.85-10/Constants'
IBMTORDB2/DBD-DB2-1.85.tar.gz
D:\STRAWB~1\c\bin\gmake.exe -- NOT OK
Stopping: 'install' failed for 'DBD::DB2'.

我試圖從另一台計算機復制 DBD::DB2 模塊,但沒有成功,並給了我錯誤 Can't locate loadable object for module DBD::DB2::Constants in @INC 感謝任何幫助。

根據此技術說明,IBM India(可能是 DBD:DB2 的維護者)支持 DBD:DB2 for Windows with ActiveState Perl。 該技術說明還展示了如何使用 ppm 獲取預構建模塊。

如果您不關心哪個 Perl 供應商,請考慮使用 Activestate Perl for Windows。 如果您必須堅持使用 Strawberry Perl,請繼續閱讀。

當前的 V11.1 Db2-LUW 文檔還表示,除了 ActiveState Perl 之外,該聲明還支持 32 位 Strawberry-Perl:

與 Db2 配合使用的 Perl 工作版本是 Activestate Perl 和 32 位 Strawberry Perl。 具體對於 32 位 Strawberry Perl,您必須發送電子郵件至 opendev@us.ibm.com 或聯系 IBM 支持以獲得所需的二進制文件。

如果您有 Db2 的支持合同,您可能想與他們核實 Db2 文檔是否准確(通常是非核心內容,它不准確、過時、具有誤導性等),以及他們是否可以發布 64 位DBD::DB2 的二進制文件。

查看CPAN頁面以了解對 DBD:DB2 的更改,最近的更改似乎是在 2012 年。因此目前尚不清楚該模塊是否得到維護。

在同一站點上,還有一個已報告的問題在 2013 年打開,即 DBD:DB2 無法使用 Strawberry perl 構建。

我確信堅定的 C 程序員能夠解決這個問題......問題是是否有足夠的用戶來打擾......

我找到了解決這個問題的方法,只需將其插入以下文件:

  • 常量/Constants.xs
  • DB2.h
 #ifndef __DBD_DBI_FIX__
 #define __DBD_DBI_FIX__
     #include <specstrings.h>
     #ifndef __out_ecount_opt
         #define __out_ecount_opt    SAL__out_ecount_opt
     #endif
     #ifndef __in_ecount_opt
         #define __in_ecount_opt  SAL__in_ecount_opt
     #endif
     #ifndef __out_bcount_opt
         #define __out_bcount_opt    SAL__out_bcount_opt
     #endif
 #endif

完整修復在這里: https ://github.com/ro-ag/DBD-DB2-1.86/commit/1ad9d4163656d9830fd567caf6d57603045ee392

您也可以從我為 Windows 10 創建的 PPM 包直接安裝它: https://github.com/ro-ag/Perl-64-PPM/raw/master/PPM-64/DBD-DB2.tar。廣州

忘記了 cpan 模塊 我已經向 IBM 發送了幾封電子郵件以包含此修復程序,但沒有成功。

不是答案而是問題。 您的 DBD-DB2-tar.gz 缺少安裝 strawberry perl 所需的 PPD 文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM