使用 Solaris 11 64 位安装 CGI、DBI 和 DBD::Oracle

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/10745271/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-19 00:50:58  来源:igfitidea点击:

Installing CGI, DBI and DBD::Oracle with Solaris 11 64-bit

perloraclesolarisdbidbd

提问by This 0ne Pr0grammer

I tried to install CGI, DBIand DBD::Oracleand drivers in a 64-bit Solaris environment, but to little avail. The number of errors I have encountered is mind-boggling and the number of workaround solutions I have tried - from changing environment variables, changing directory references, moving and copying files, changing compilers, etc. - is even worse. And the worst part is that there is very little documentation for installing said modules in the newest version of Solaris.

我尝试在 64 位 Solaris 环境中安装CGIDBIDBD::Oracle和驱动程序,但收效甚微。我遇到的错误数量令人难以置信,而我尝试的变通解决方案的数量——从更改环境变量、更改目录引用、移动和复制文件、更改编译器等——甚至更糟。最糟糕的是,在最新版本的 Solaris 中安装上述模块的文档很少。

Here are the initial steps we have been going through.

以下是我们正在经历的初始步骤。

  1. First we go to http://search.cpan.org/. Then we download:

  2. Next we open up a terminal window, switch to root, then navigate to our "Downloads" folder.

  3. From here we decompress the previously downloaded files (no problems here):

    gunzip -c CGI.pm-3.59.tar.gz |tar xvf -
    gunzip -c DBI-1.621.tar.gz |tar xvf -
    gunzip -c DBD-Oracle-1.44.tar.gz |tar xvf -
    
  4. Then we archive the tar files in case we might need them later on.

    mkdir archive_tar
    mv *.gz $HOME/Downloads/archive_tar
    
  5. Here is where it gets slightly confusing, as we are not sure if these steps are completely necessary. Basically, we believewe need to set up the correct Perl (64-bit required for the newest Oracle, default Perl used is 32-bit).

    1. Type which perlin order to determine which current version of Perl you are using. It should indicate you are using the default version (or 32-bit).
    2. Verify that you have a 64-bit Perl installation available by doing the following: type file /opt/oracle/rdbms/perl/bin/perl
    3. You should see ELF 64-bit LSB executable AMD64 Version 1 [SSE2 SSE FXSR CMOV FPU], dynamically linked, not stripped<.
    4. Switch to using this version of Perl by adding it to the PATHvariable: export PATH=/opt/oracle/rdbms/perl/bin:$PATH
    5. Type which perl. Verify that this now shows the Perl located at opt/oracle/rdbms/perl/bin/perl.
    6. Type perl -V, if it shows errors, set the variables below:

      export PERL5LIB=/opt/oracle/rdbms/perl/lib/5.10.0
      export PERLLIB=/opt/oracle/rdbms/perl/lib/5.10.0
      
  6. Now we set up cc(the compiler) to work so that we can install CGI/DBI/DBD-Oracle.

    1. Type cc --versionto verify that it says ccis not found.
    2. Open up a browser and navigate to Solaris Studio. Here you will find a package which contains Sun's compiler.
    3. Download "Tarfile on Solaris SPARC" for the Solaris 11 OS Platform.
    4. In your terminal window, decompress the above file by typing: bzcat SolarisStudio12.3-solaris-sparc-bin.tar.bz2 | tar xf -
    5. Move the .bz2file to our previously created archive folder: mv SolarisStudio12.3-solaris-sparc-bin.tar.bz2 $HOME/Downloads/archive_tar
    6. Now we want to add the new compiler to our path, we do this through: export PATH=$PATH:/home/oracle/Downloads/SolarisStudio12.3-solaris-sparc-bin/solarisstudio12.3/bin
    7. Type cc --version, this command shouldn't do anything (possibly throw a few warnings), but it won't say cc not foundanymore.
  7. Here we begin to install the modules and the driver, starting with the CGI module:

    1. Navigate to $HOME/Downloads/CGI.pm-3.59
    2. Type perl Makefile.PL
    3. We need to change the make file to point to the correct location.

      1. Type vi Makefile
      2. :%s,../lib/site_perl/5.10.0,/opt/oracle/rdbms/perl/lib/site_perl/5.10.0,g
      3. :%s,../lib/5.10.0,/opt/oracle/rdbms/perl/lib/5.10.0,g
    4. Now type make

    5. Then type make install
    6. Next we move onto the DBI module. Navigate to $HOME/Downloads/DBI-1.621.
    7. Type perl Makefile.PL
    8. Again, we need to change this make file to point to the correct location.

      1. Type vi Makefile
      2. :%s,../lib/site_perl/5.10.0,/opt/oracle/rdbms/perl/lib/site_perl/5.10.0,g
      3. :%s,../lib/5.10.0,/opt/oracle/rdbms/perl/lib/5.10.0,g
    9. However, these change two lines that we don't want to change. So do a find for MAKEMAKERand XSUBPPDIRand set them back to the below values.

      MAKEMAKER = /opt/oracle/rdbms/perl/lib/5.10.0/ExtUtils/MakeMaker.pm
      XSUBPPDIR = /opt/oracle/rdbms/perl/lib/5.10.0/ExtUtils
      
    10. Now type make

    11. Then type make install
    12. Now navigate to $HOME/Downloads/DBD-Oracle-1.44
    13. Type perl Makefile.PL
  1. 首先我们去http://search.cpan.org/。然后我们下载:

  2. 接下来我们打开一个终端窗口,切换到 root,然后导航到我们的“下载”文件夹。

  3. 从这里我们解压缩之前下载的文件(这里没有问题):

    gunzip -c CGI.pm-3.59.tar.gz |tar xvf -
    gunzip -c DBI-1.621.tar.gz |tar xvf -
    gunzip -c DBD-Oracle-1.44.tar.gz |tar xvf -
    
  4. 然后我们将 tar 文件存档,以防我们以后可能需要它们。

    mkdir archive_tar
    mv *.gz $HOME/Downloads/archive_tar
    
  5. 这是有点令人困惑的地方,因为我们不确定这些步骤是否完全必要。基本上,我们认为我们需要设置正确的 Perl(最新的 Oracle 需要 64 位,默认使用的 Perl 是 32 位)。

    1. 键入which perl以确定您正在使用的 Perl 的当前版本。它应该表明您使用的是默认版本(或 32 位)。
    2. 通过执行以下操作验证您是否有可用的 64 位 Perl 安装: file /opt/oracle/rdbms/perl/bin/perl
    3. 你应该看到ELF 64-bit LSB executable AMD64 Version 1 [SSE2 SSE FXSR CMOV FPU], dynamically linked, not stripped<
    4. 通过将它添加到PATH变量来切换到使用这个版本的 Perl :export PATH=/opt/oracle/rdbms/perl/bin:$PATH
    5. 键入which perl。验证这现在显示位于 的 Perl opt/oracle/rdbms/perl/bin/perl
    6. 键入perl -V,如果显示错误,请设置以下变量:

      export PERL5LIB=/opt/oracle/rdbms/perl/lib/5.10.0
      export PERLLIB=/opt/oracle/rdbms/perl/lib/5.10.0
      
  6. 现在我们设置cc(编译器)工作,以便我们可以安装 CGI/DBI/DBD-Oracle。

    1. 键入cc --version以确认它说cc未找到。
    2. 打开浏览器并导航到Solaris Studio。在这里您将找到一个包含 Sun 编译器的包。
    3. 下载适用于 Solaris 11 OS 平台的“Solaris SPARC 上的 Tarfile”。
    4. 在您的终端窗口中,输入以下命令解压缩上述文件: bzcat SolarisStudio12.3-solaris-sparc-bin.tar.bz2 | tar xf -
    5. .bz2文件移动到我们之前创建的存档文件夹中:mv SolarisStudio12.3-solaris-sparc-bin.tar.bz2 $HOME/Downloads/archive_tar
    6. 现在我们想将新的编译器添加到我们的路径中,我们通过: export PATH=$PATH:/home/oracle/Downloads/SolarisStudio12.3-solaris-sparc-bin/solarisstudio12.3/bin
    7. Type cc --version,这个命令不应该做任何事情(可能会抛出一些警告),但它不会再说cc not found了。
  7. 在这里我们开始安装模块和驱动程序,从 CGI 模块开始:

    1. 导航 $HOME/Downloads/CGI.pm-3.59
    2. 类型 perl Makefile.PL
    3. 我们需要更改 make 文件以指向正确的位置。

      1. 类型 vi Makefile
      2. :%s,../lib/site_perl/5.10.0,/opt/oracle/rdbms/perl/lib/site_perl/5.10.0,g
      3. :%s,../lib/5.10.0,/opt/oracle/rdbms/perl/lib/5.10.0,g
    4. 现在输入 make

    5. 然后输入 make install
    6. 接下来我们进入 DBI 模块。导航到$HOME/Downloads/DBI-1.621
    7. 类型 perl Makefile.PL
    8. 同样,我们需要更改此 make 文件以指向正确的位置。

      1. 类型 vi Makefile
      2. :%s,../lib/site_perl/5.10.0,/opt/oracle/rdbms/perl/lib/site_perl/5.10.0,g
      3. :%s,../lib/5.10.0,/opt/oracle/rdbms/perl/lib/5.10.0,g
    9. 但是,这些更改了我们不想更改的两行。所以做一个 find for MAKEMAKERandXSUBPPDIR并将它们设置回下面的值。

      MAKEMAKER = /opt/oracle/rdbms/perl/lib/5.10.0/ExtUtils/MakeMaker.pm
      XSUBPPDIR = /opt/oracle/rdbms/perl/lib/5.10.0/ExtUtils
      
    10. 现在输入 make

    11. 然后输入 make install
    12. 现在导航到 $HOME/Downloads/DBD-Oracle-1.44
    13. 类型 perl Makefile.PL

And that is basically where we get a fatal error at line 21, use DBI 1.51;in the Makefile, and tracing up the stack indicates that @INCcannot locate DBI.pm. That is why I tried to move the binary library file. I can't access the Solaris box at this moment so I can't re-post the exact error code, I should be able to include that probably Tuesday (the earliest I can get back to the machine). Does anyone have any ideas to this point though?

这基本上就是我们use DBI 1.51;在 Makefile 中的第 21 行遇到致命错误的地方,并且跟踪堆栈表明@INC无法定位DBI.pm. 这就是我尝试移动二进制库文件的原因。我现在无法访问 Solaris 框,因此我无法重新发布确切的错误代码,我应该可以将那个可能的星期二包括在内(我最早可以回到机器上)。有没有人对这一点有任何想法?

alternative route using CPAN shell

使用 CPAN shell 的替代路由

  1. Open up a terminal window and install the following packages as the rootuser:

    pkg install system/header
    pkg install gcc-45
    pkg install developer/build/gnu-make
    pkg install archiver/gnu-tar
    
  2. Navigate to $oracle_home cd $oracle_homeand:

    mkdir /apps
    mkdir /apps/twiki-root
    mkdir /apps/twiki-root/perlmodules
    
  3. Modify the PERL5LIBenvironment variable:

    • export PERL5LIB=/apps/twiki-root/perlmodules
    • Verify by typing: echo $PERL5LIB
  4. Open up the CPAN shell and update it:

    /usr/perl5/bin/perlgcc -MCPAN -e shell
    

    If this is the first time, press returnto accept auto-configuration. And now enter the following commands to modify the mirror location for CPAN:

    o conf urllist shift
    o conf urllist
    o conf urllist unshift http://mirror.ox.ac.uk/sites/www.cpan.org/
    o conf urllist
    o conf commit
    install Bundle::CPAN
    reload cpan
    
  5. Open up the Config.pmfile and modify it as described below:

    cd /usr/perl5/5.12/lib/CPAN/
    vi Config.pm
    

    Modify these values:

    'make' => q[/usr/sfw/bin/gmake],
    'make_install_make_command' => q[/usr/sfw/bin/gmake],
    'makepl_arg' => q[LIB=/apps/twiki-root/perlmodules PREFIX=/apps/twiki-root/perlmodules INSTALLMAN3DIR=/apps/twiki-root/perlmodules/man/man3],
    'mbuild_arg' => q[--install_base /apps/twiki-root/perlmodules],
    'mbuild_install_arg' => q[--install_base /apps/twiki-root/perlmodules],
    'mbuildpl_arg' => q[--install_base /apps/twiki-root/perlmodules],
    'prefs_dir' => q[~/.cpan/prefs],
    'tar' => q[/usr/sfw/bin/gtar],
    

    Write/save to the file and quit → :wq

  6. Make sure that your gccis set:

    Verify by: which gcc

  7. Now once again open up the CPAN shell and begin to install the DBI module.

    /usr/perl5/bin/perlgcc -MCPAN -e shell
    install DBI
    
  1. 打开终端窗口并以root用户身份安装以下软件包:

    pkg install system/header
    pkg install gcc-45
    pkg install developer/build/gnu-make
    pkg install archiver/gnu-tar
    
  2. 导航到 $oracle_homecd $oracle_home并:

    mkdir /apps
    mkdir /apps/twiki-root
    mkdir /apps/twiki-root/perlmodules
    
  3. 修改PERL5LIB环境变量:

    • export PERL5LIB=/apps/twiki-root/perlmodules
    • 键入以下内容进行验证: echo $PERL5LIB
  4. 打开 CPAN shell 并更新它:

    /usr/perl5/bin/perlgcc -MCPAN -e shell
    

    如果这是第一次,按return接受自动配置。现在输入以下命令来修改 CPAN 的镜像位置:

    o conf urllist shift
    o conf urllist
    o conf urllist unshift http://mirror.ox.ac.uk/sites/www.cpan.org/
    o conf urllist
    o conf commit
    install Bundle::CPAN
    reload cpan
    
  5. 打开Config.pm文件并按如下所述进行修改:

    cd /usr/perl5/5.12/lib/CPAN/
    vi Config.pm
    

    修改这些值:

    'make' => q[/usr/sfw/bin/gmake],
    'make_install_make_command' => q[/usr/sfw/bin/gmake],
    'makepl_arg' => q[LIB=/apps/twiki-root/perlmodules PREFIX=/apps/twiki-root/perlmodules INSTALLMAN3DIR=/apps/twiki-root/perlmodules/man/man3],
    'mbuild_arg' => q[--install_base /apps/twiki-root/perlmodules],
    'mbuild_install_arg' => q[--install_base /apps/twiki-root/perlmodules],
    'mbuildpl_arg' => q[--install_base /apps/twiki-root/perlmodules],
    'prefs_dir' => q[~/.cpan/prefs],
    'tar' => q[/usr/sfw/bin/gtar],
    

    写入/保存到文件并退出 → :wq

  6. 确保您gcc已设置:

    验证方式: which gcc

  7. 现在再次打开 CPAN shell 并开始安装 DBI 模块。

    /usr/perl5/bin/perlgcc -MCPAN -e shell
    install DBI
    

And this is where everything just goes to crap. Error:

这就是一切都变得糟糕的地方。错误:

Reading '/home/oracle/.cpan/Metadata'
Database was generated on Sun, 03 Jun 2012 22:27:03 GMT
Running install for module 'DBI'
Running make for T/TI/TIMB/DBI-1.621.tar.gz
Subroutine config redefined at /usr/perl5/5.12/lib/CPAN/LWP/UserAgent.pm line 12.
Subroutine get_basic_credentials redefined at /usr/perl5/5.12/lib/CPAN/LWP/UserAgent.pm line 23.
Subroutine no_proxy redefined at /usr/perl5/5.12/lib/CPAN/LWP/UserAgent.pm line 32.
Subroutine mirror redefined at /usr/perl5/5.12/lib/CPAN/LWP/UserAgent.pm line 67.
Fetching with HTTP::Tiny:
http://mirror.ox.ac.uk/sites/www.cpan.org/authors/id/T/TI/TIMB/DBI-1.621.tar.gz
Fetching with HTTP::Tiny:
http://mirror.ox.ac.uk/sites/www.cpan.org/authors/id/T/TI/TIMB/CHECKSUMS
Checksum for /home/oracle/.cpan/sources/authors/id/T/TI/TIMB/DBI-1.621.tar.gz ok
Scanning cache /home/oracle/.cpan/build for sizes
............................................................................DONE

CPAN.pm: Building T/TI/TIMB/DBI-1.621.tar.gz


*** Your LANG environment variable is set to 'en_US.UTF-8'
*** This may cause problems for some perl installations.
*** If you get test failures, please try again with LANG unset.
*** If that then works, please email [email protected] with details
*** including the output of 'perl -V'

Creating test wrappers for DBD::Gofer:
t/zvg_01basics.t
t/zvg_02dbidrv.t
t/zvg_03handle.t
t/zvg_04mods.t
t/zvg_05concathash.t
t/zvg_06attrs.t
t/zvg_07kids.t
t/zvg_08keeperr.t
t/zvg_09trace.t
t/zvg_10examp.t
t/zvg_11fetch.t
t/zvg_12quote.t
t/zvg_13taint.t
t/zvg_14utf8.t
t/zvg_15array.t
t/zvg_16destroy.t
t/zvg_19fhtrace.t
t/zvg_20meta.t
t/zvg_30subclass.t
t/zvg_31methcache.t
t/zvg_35thrclone.t
t/zvg_40profile.t
t/zvg_41prof_dump.t
t/zvg_42prof_data.t
t/zvg_43prof_env.t
t/zvg_48dbi_dbd_sqlengine.t
t/zvg_49dbd_file.t
t/zvg_50dbm_simple.t
t/zvg_51dbm_file.t
t/zvg_52dbm_complex.t
t/zvg_60preparse.t
t/zvg_65transact.t
t/zvg_70callbacks.t
t/zvg_72childhandles.t
t/zvg_80proxy.t
t/zvg_85gofer.t
t/zvg_86gofer_fail.t
t/zvg_87gofer_cache.t
t/zvg_90sql_type_cast.t
Creating test wrappers for DBI::SQL::Nano:
t/zvn_48dbi_dbd_sqlengine.t
t/zvn_49dbd_file.t
t/zvn_50dbm_simple.t
t/zvn_51dbm_file.t
t/zvn_52dbm_complex.t
t/zvn_85gofer.t
Creating test wrappers for DBI::PurePerl:
t/zvp_01basics.t
t/zvp_02dbidrv.t
t/zvp_03handle.t
t/zvp_04mods.t
t/zvp_05concathash.t
t/zvp_06attrs.t
t/zvp_07kids.t
t/zvp_08keeperr.t
t/zvp_09trace.t
t/zvp_10examp.t
t/zvp_11fetch.t
t/zvp_12quote.t
t/zvp_13taint.t
t/zvp_14utf8.t
t/zvp_15array.t
t/zvp_16destroy.t
t/zvp_19fhtrace.t
t/zvp_20meta.t
t/zvp_30subclass.t
t/zvp_31methcache.t
t/zvp_35thrclone.t
t/zvp_40profile.t
t/zvp_41prof_dump.t
t/zvp_42prof_data.t
t/zvp_43prof_env.t
t/zvp_48dbi_dbd_sqlengine.t
t/zvp_49dbd_file.t
t/zvp_50dbm_simple.t
t/zvp_51dbm_file.t
t/zvp_52dbm_complex.t
t/zvp_60preparse.t
t/zvp_65transact.t
t/zvp_70callbacks.t
t/zvp_72childhandles.t
t/zvp_80proxy.t
t/zvp_85gofer.t
t/zvp_86gofer_fail.t
t/zvp_87gofer_cache.t
t/zvp_90sql_type_cast.t
Creating test wrappers for DBD::Gofer + DBI::SQL::Nano:
t/zvxgn_48dbi_dbd_sqlengine.t
t/zvxgn_49dbd_file.t
t/zvxgn_50dbm_simple.t
t/zvxgn_51dbm_file.t
t/zvxgn_52dbm_complex.t
t/zvxgn_85gofer.t
Creating test wrappers for DBD::Gofer + DBI::PurePerl:
t/zvxgp_01basics.t
t/zvxgp_02dbidrv.t
t/zvxgp_03handle.t
t/zvxgp_04mods.t
t/zvxgp_05concathash.t
t/zvxgp_06attrs.t
t/zvxgp_07kids.t
t/zvxgp_08keeperr.t
t/zvxgp_09trace.t
t/zvxgp_10examp.t
t/zvxgp_11fetch.t
t/zvxgp_12quote.t
t/zvxgp_13taint.t
t/zvxgp_14utf8.t
t/zvxgp_15array.t
t/zvxgp_16destroy.t
t/zvxgp_19fhtrace.t
t/zvxgp_20meta.t
t/zvxgp_30subclass.t
t/zvxgp_31methcache.t
t/zvxgp_35thrclone.t
t/zvxgp_40profile.t
t/zvxgp_41prof_dump.t
t/zvxgp_42prof_data.t
t/zvxgp_43prof_env.t
t/zvxgp_48dbi_dbd_sqlengine.t
t/zvxgp_49dbd_file.t
t/zvxgp_50dbm_simple.t
t/zvxgp_51dbm_file.t
t/zvxgp_52dbm_complex.t
t/zvxgp_60preparse.t
t/zvxgp_65transact.t
t/zvxgp_70callbacks.t
t/zvxgp_72childhandles.t
t/zvxgp_80proxy.t
t/zvxgp_85gofer.t
t/zvxgp_86gofer_fail.t
t/zvxgp_87gofer_cache.t
t/zvxgp_90sql_type_cast.t
Creating test wrappers for DBI::SQL::Nano + DBI::PurePerl:
t/zvxnp_48dbi_dbd_sqlengine.t
t/zvxnp_49dbd_file.t
t/zvxnp_50dbm_simple.t
t/zvxnp_51dbm_file.t
t/zvxnp_52dbm_complex.t
t/zvxnp_85gofer.t
Creating test wrappers for DBD::Gofer + DBI::SQL::Nano + DBI::PurePerl:
t/zvxgnp_48dbi_dbd_sqlengine.t
t/zvxgnp_49dbd_file.t
t/zvxgnp_50dbm_simple.t
t/zvxgnp_51dbm_file.t
t/zvxgnp_52dbm_complex.t
t/zvxgnp_85gofer.t
Checking if your kit is complete...
Looks good
Have /usr/perl5/5.12/lib/Sun/Solaris/PerlGcc
Want /usr/perl5/5.12/lib/i86pc-solaris-64int
Your perl and your Config.pm seem to have different ideas about the
architecture they are running on.
Perl thinks: [PerlGcc]
Config says: [i86pc-solaris-64int]
This may or may not cause problems. Please check your installation of perl
if you have problems building this extension.

    I see you're using perl 5.012003 on i86pc-solaris-64int, okay.
    Remember to actually *read* the README file!
    Use  'make' to build the software (dmake or nmake on Windows).
    Then 'make test' to execute self tests.
    Then 'make install' to install the DBI and then delete this working
    directory before unpacking and building any DBD::* drivers.

Writing Makefile for DBI
Writing MYMETA.yml and MYMETA.json
/usr/perl5/5.12/bin/perl -MExtUtils::Command -e 'mkpath' -- blib/lib/DBI
rm -f blib/lib/DBI/Changes.pm
cp Changes blib/lib/DBI/Changes.pm
cp Driver_xst.h blib/arch/auto/DBI/Driver_xst.h
cp lib/DBI/Gofer/Response.pm blib/lib/DBI/Gofer/Response.pm
cp lib/DBD/Proxy.pm blib/lib/DBD/Proxy.pm
cp lib/DBI/Util/_accessor.pm blib/lib/DBI/Util/_accessor.pm
cp lib/DBI/Gofer/Transport/Base.pm blib/lib/DBI/Gofer/Transport/Base.pm
cp lib/DBD/DBM.pm blib/lib/DBD/DBM.pm
cp DBIXS.h blib/arch/auto/DBI/DBIXS.h
cp dbixs_rev.pl blib/lib/dbixs_rev.pl
cp lib/DBI/Const/GetInfoType.pm blib/lib/DBI/Const/GetInfoType.pm
cp lib/DBI/Gofer/Serializer/DataDumper.pm blib/lib/DBI/Gofer/Serializer/DataDumper.pm
cp lib/DBI/DBD/Metadata.pm blib/lib/DBI/DBD/Metadata.pm
cp lib/DBI/Const/GetInfo/ODBC.pm blib/lib/DBI/Const/GetInfo/ODBC.pm
cp lib/DBD/Gofer/Transport/pipeone.pm blib/lib/DBD/Gofer/Transport/pipeone.pm
cp lib/DBI/ProfileDumper/Apache.pm blib/lib/DBI/ProfileDumper/Apache.pm
cp lib/DBD/File.pm blib/lib/DBD/File.pm
cp Driver.xst blib/arch/auto/DBI/Driver.xst
cp lib/DBD/File/Roadmap.pod blib/lib/DBD/File/Roadmap.pod
cp lib/DBI/Util/CacheMemory.pm blib/lib/DBI/Util/CacheMemory.pm
cp lib/DBI/ProfileSubs.pm blib/lib/DBI/ProfileSubs.pm
cp lib/DBD/NullP.pm blib/lib/DBD/NullP.pm
cp dbi_sql.h blib/arch/auto/DBI/dbi_sql.h
cp lib/DBD/Gofer.pm blib/lib/DBD/Gofer.pm
cp lib/DBD/File/HowTo.pod blib/lib/DBD/File/HowTo.pod
cp dbd_xsh.h blib/arch/auto/DBI/dbd_xsh.h
cp dbivport.h blib/arch/auto/DBI/dbivport.h
cp lib/DBI/DBD/SqlEngine/HowTo.pod blib/lib/DBI/DBD/SqlEngine/HowTo.pod
cp dbixs_rev.h blib/arch/auto/DBI/dbixs_rev.h
cp lib/DBD/Gofer/Transport/corostream.pm blib/lib/DBD/Gofer/Transport/corostream.pm
cp lib/DBD/Gofer/Transport/Base.pm blib/lib/DBD/Gofer/Transport/Base.pm
cp lib/DBI/FAQ.pm blib/lib/DBI/FAQ.pm
cp lib/DBD/Gofer/Policy/rush.pm blib/lib/DBD/Gofer/Policy/rush.pm
cp lib/DBI/SQL/Nano.pm blib/lib/DBI/SQL/Nano.pm
cp lib/DBI/Gofer/Request.pm blib/lib/DBI/Gofer/Request.pm
cp lib/DBI/Const/GetInfo/ANSI.pm blib/lib/DBI/Const/GetInfo/ANSI.pm
cp lib/DBD/Gofer/Transport/stream.pm blib/lib/DBD/Gofer/Transport/stream.pm
cp lib/DBD/Gofer/Policy/classic.pm blib/lib/DBD/Gofer/Policy/classic.pm
cp lib/DBI/Gofer/Transport/stream.pm blib/lib/DBI/Gofer/Transport/stream.pm
cp lib/DBI/Const/GetInfoReturn.pm blib/lib/DBI/Const/GetInfoReturn.pm
cp DBI.pm blib/lib/DBI.pm
cp lib/DBI/Gofer/Serializer/Storable.pm blib/lib/DBI/Gofer/Serializer/Storable.pm
cp lib/DBD/Gofer/Policy/Base.pm blib/lib/DBD/Gofer/Policy/Base.pm
cp lib/DBD/Sponge.pm blib/lib/DBD/Sponge.pm
cp lib/DBD/Gofer/Policy/pedantic.pm blib/lib/DBD/Gofer/Policy/pedantic.pm
cp lib/DBI/Gofer/Transport/pipeone.pm blib/lib/DBI/Gofer/Transport/pipeone.pm
cp lib/DBI/DBD/SqlEngine/Developers.pod blib/lib/DBI/DBD/SqlEngine/Developers.pod
cp lib/DBI/W32ODBC.pm blib/lib/DBI/W32ODBC.pm
cp lib/DBD/Gofer/Transport/null.pm blib/lib/DBD/Gofer/Transport/null.pm
cp lib/Bundle/DBI.pm blib/lib/Bundle/DBI.pm
cp lib/DBD/File/Developers.pod blib/lib/DBD/File/Developers.pod
cp lib/DBI/Profile.pm blib/lib/DBI/Profile.pm
cp lib/DBI/ProfileDumper.pm blib/lib/DBI/ProfileDumper.pm
cp lib/DBI/Gofer/Serializer/Base.pm blib/lib/DBI/Gofer/Serializer/Base.pm
cp lib/DBI/ProxyServer.pm blib/lib/DBI/ProxyServer.pm
cp dbipport.h blib/arch/auto/DBI/dbipport.h
cp lib/DBI/Gofer/Execute.pm blib/lib/DBI/Gofer/Execute.pm
cp lib/DBI/DBD.pm blib/lib/DBI/DBD.pm
cp lib/Win32/DBIODBC.pm blib/lib/Win32/DBIODBC.pm
cp lib/DBI/DBD/SqlEngine.pm blib/lib/DBI/DBD/SqlEngine.pm
cp lib/DBI/PurePerl.pm blib/lib/DBI/PurePerl.pm
cp lib/DBD/ExampleP.pm blib/lib/DBD/ExampleP.pm
cp lib/DBI/ProfileData.pm blib/lib/DBI/ProfileData.pm
/usr/perl5/5.12/bin/perl -p -e "s/~DRIVER~/Perl/g" ./Driver.xst > Perl.xsi
/usr/perl5/5.12/bin/perl /usr/perl5/5.12/lib/ExtUtils/xsubpp  -typemap /usr/perl5/5.12/lib/ExtUtils/typemap -typemap typemap  Perl.xs > Perl.xsc && mv Perl.xsc Perl.c
gcc -c   -DPTR_IS_LONG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -xO4   -DVERSION=\"1.621\" -DXS_VERSION=\"1.621\" -KPIC "-I/usr/perl5/5.12/lib/i86pc-solaris-64int/CORE"  -DDBI_NO_THREADS Perl.c
gcc: unrecognized option '-KPIC'
gcc: language O4 not recognized
gcc: language O4 not recognized
gcc: Perl.c: linker input file unused because linking not done
/usr/perl5/5.12/bin/perl /usr/perl5/5.12/lib/ExtUtils/xsubpp  -typemap /usr/perl5/5.12/lib/ExtUtils/typemap -typemap typemap  DBI.xs > DBI.xsc && mv DBI.xsc DBI.c
gcc -c   -DPTR_IS_LONG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -xO4   -DVERSION=\"1.621\" -DXS_VERSION=\"1.621\" -KPIC "-I/usr/perl5/5.12/lib/i86pc-solaris-64int/CORE"  -DDBI_NO_THREADS DBI.c
gcc: unrecognized option '-KPIC'
gcc: language O4 not recognized
gcc: language O4 not recognized
gcc: DBI.c: linker input file unused because linking not done
Running Mkbootstrap for DBI ()
chmod 644 DBI.bs
rm -f blib/arch/auto/DBI/DBI.so
cc  -G -L/usr/lib -L/usr/ccs/lib  -L/lib -L/usr/gnu/lib DBI.o  -o blib/arch/auto/DBI/DBI.so     \
            \

gmake: cc: Command not found
gmake: *** [blib/arch/auto/DBI/DBI.so] Error 127
TIMB/DBI-1.621.tar.gz
/usr/sfw/bin/gmake -- NOT OK
Running make test
Can't test without successful make
Running make install
Make had returned bad status, install seems impossible
Failed during this command:
TIMB/DBI-1.621.tar.gz                        : make NO

Sorry I took so long to edit this and put up the error, got a little busy along the way. Anyone have any ideas what this gigantic error means? I figure it's something related to the compiler, just not sure what.

对不起,我花了这么长时间来编辑这个并提出错误,一路上有点忙。任何人都知道这个巨大的错误意味着什么?我认为这与编译器有关,只是不确定是什么。

NEW EDIT

新编辑

So after I found the workaround, it went through the installation process (which took surprisingly long) and finally came out with this...

所以在我找到解决方法后,它经历了安装过程(花费了惊人的时间),最后得出了这个......

Test Summary Report
-------------------
../cpan/CGI/t/tmpdir.t                                          (Wstat: 0 Tests: 9 Failed: 0)
  TODO passed:   3, 6, 8
../cpan/Socket/t/getnameinfo.t                                  (Wstat: 256 Tests: 14 Failed: 1)
  Failed test:  10
  Non-zero exit status: 1
Files=2334, Tests=522101, 1212 wallclock secs (90.50 usr 58.34 sys + 533.70 cusr 288.26 csys = 970.80 CPU)
Result: FAIL
*** Error code 1
make: Fatal error: Command failed for target `test_harness'
Installed /home/oracle/perl5/perlbrew/build/perl-5.16.0 as perl-5.16.0 successfully. Run the following command to switch to it.

  perlbrew switch perl-5.16.0

Just based on that, I went ahead and did /home/oracle/perl5/perlbrew/bin/perlbrew switch perl-5.16.0but it returned, perl-5.16.0 is not installed

仅仅基于这一点,我继续前进,/home/oracle/perl5/perlbrew/bin/perlbrew switch perl-5.16.0但它又回来了,perl-5.16.0 is not installed


:/


:/

I just went ahead and tried to look for an instance of perl-5.16.0 and did...

我只是继续尝试寻找 perl-5.16.0 的实例,然后...

root@dr-solaris11:~/perl5/perlbrew/build# cd /home/oracle/perl5/perlbrew/build/perl-5.16.0
root@dr-solaris11:~/perl5/perlbrew/build/perl-5.16.0# ls
Artistic                 MANIFEST                 README.cn
AUTHORS                  mathoms.c                README.cygwin
autodoc.pl               mathoms.o                README.dgux
av.c                     META.yml                 README.dos
av.h                     metaconfig.h             README.epoc
av.o                     metaconfig.SH            README.freebsd
beos                     mg_data.h                README.haiku
bitcount.h               mg_names.c               README.hpux
cflags                   mg_raw.h                 README.hurd
cflags.SH                mg_vtable.h              README.irix
Changes                  mg.c                     README.jp
charclass_invlists.h     mg.h                     README.ko
config_h.SH              mg.o                     README.linux
config.h                 minimod.pl               README.macos
config.over              miniperl                 README.macosx
config.sh                miniperlmain.c           README.micro
configpm                 miniperlmain.o           README.mpeix
Configure                mkppport                 README.netware
configure.com            mkppport.lst             README.openbsd
configure.gnu            mpeix                    README.os2
cop.h                    mro.c                    README.os390
Copying                  mro.o                    README.os400
cpan                     myconfig                 README.plan9
Cross                    myconfig.SH              README.qnx
cv.h                     mydtrace.h               README.riscos
cygwin                   NetWare                  README.solaris
deb.c                    nostdio.h                README.symbian
deb.o                    numeric.c                README.tru64
dist                     numeric.o                README.tw
djgpp                    op_reg_common.h          README.uts
doio.c                   op.c                     README.vmesa
doio.o                   op.h                     README.vms
doop.c                   op.o                     README.vos
doop.o                   opcode.h                 README.win32
dosish.h                 opmini.c                 realclean.sh
dquote_static.c          opmini.o                 reentr.c
dump.c                   opnames.h                reentr.h
dump.o                   os2                      reentr.o
DynaLoader.o             overload.c               regcharclass.h
embed.fnc                overload.h               regcomp.c
embed.h                  pad.c                    regcomp.h
embedvar.h               pad.h                    regcomp.o
epoc                     pad.o                    regcomp.sym
ext                      parser.h                 regen
ext.libs                 patchlevel.h             regen_perly.pl
EXTERN.h                 perl                     regen.pl
extra.pods               perl.c                   regexec.c
fakesdio.h               perl.h                   regexec.o
fakethr.h                perl.o                   regexp.h
feature.h                perlapi.c                regnodes.h
form.h                   perlapi.h                run.c
generate_uudmap          perlapi.o                run.o
generate_uudmap.c        perldtrace.d             runtests
generate_uudmap.o        perlio.c                 runtests.SH
genpacksizetables.pl     perlio.h                 scope.c
git_version.h            perlio.o                 scope.h
globals.c                perlio.sym               scope.o
globals.o                perliol.h                sv.c
globvar.sym              perlmain.c               sv.h
gv.c                     perlmain.o               sv.o
gv.h                     perlmini.c               symbian
gv.o                     perlmini.o               t
h2pl                     perlsdio.h               taint.c
haiku                    perlsfio.h               taint.o
handy.h                  perlsh                   TestInit.pm
hints                    perlvars.h               thread.h
hv.c                     perly.act                time64_config.h
hv.h                     perly.c                  time64.c
hv.o                     perly.h                  time64.h
INSTALL                  perly.o                  toke.c
install_lib.pl           perly.tab                toke.o
installhtml              perly.y                  uconfig.h
installman               plan9                    uconfig.sh
installperl              pod                      uconfig64.sh
INTERN.h                 Policy_sh.SH             universal.c
intrpvar.h               Policy.sh                universal.o
iperlsys.h               Porting                  unixish.h
keywords.c               pp_ctl.c                 utf8.c
keywords.h               pp_ctl.o                 utf8.h
keywords.o               pp_hot.c                 utf8.o
l1_char_class_tab.h      pp_hot.o                 utfebcdic.h
lib                      pp_pack.c                util.c
libperl.a                pp_pack.o                util.h
locale.c                 pp_proto.h               util.o
locale.o                 pp_sort.c                utils
mad                      pp_sort.o                utils.lst
madly.c                  pp_sys.c                 uts
make_ext.pl              pp_sys.o                 uudmap.h
make_patchnum.pl         pp.c                     veryclean.sh
makedef.pl               pp.h                     vmesa
makedepend               pp.o                     vms
makedepend.SH            proto.h                  vos
makefile                 qnx                      warnings.h
Makefile                 README                   win32
Makefile.micro           README.aix               write_buildcustomize.pl
makefile.old             README.amiga             x2p
Makefile.SH              README.beos              XSUB.h
malloc_ctl.h             README.bs2000
malloc.c                 README.ce

Then I tried, /home/oracle/perl5/perlbrew/bin/perlbrew switch /home/oracle/perl5/perlbrew/build/perl-5.16.0and I still got: /home/oracle/perl5/perlbrew/build/perl-5.16.0 is not installed

然后我尝试了,/home/oracle/perl5/perlbrew/bin/perlbrew switch /home/oracle/perl5/perlbrew/build/perl-5.16.0我仍然得到:/home/oracle/perl5/perlbrew/build/perl-5.16.0 is not installed

:/

:/

回答by daxim

  1. Undo everything, keep the GNU compiler toolchain (gnu-make, gcc-45).
  2. Follow the instructions at http://perlbrew.pl/to install perlbrew. (Mind to set the environment variable PERLBREW_ROOTfirst if you want to store perlbrew's files in a non-default directory.) At the end of its installation, it tells you to add shell commands to your login shell configuration and log in again, don't neglect those steps.
  3. Use perlbrewto install a supported Perl:

    perlbrew -v install perl-5.16.0 -Dcc=gcc
    perlbrew switch perl-5.16.0
    perlbrew install-cpanm
    
  4. cpanmis a replacement for cpan, no further configuration necessary.

    cpanm -v CGI
    cpanm -v DBI
    cpanm -v DBD::Oracle
    
  1. 撤消所有操作,保留 GNU 编译器工具链(gnu-make、gcc-45)。
  2. 按照http://perlbrew.pl/上的说明安装perlbrew. (PERLBREW_ROOT如果要将 perlbrew 的文件存储在非默认目录中,请注意首先设置环境变量。)在安装结束时,它会告诉您将 shell 命令添加到登录 shell 配置并再次登录,不要忽略这些步骤。
  3. 使用perlbrew安装支持的Perl:

    perlbrew -v install perl-5.16.0 -Dcc=gcc
    perlbrew switch perl-5.16.0
    perlbrew install-cpanm
    
  4. cpanm是 的替代品cpan,无需进一步配置。

    cpanm -v CGI
    cpanm -v DBI
    cpanm -v DBD::Oracle
    

回答by ikegami

  1. I'm not sure why you're changing where the distribution is being installed, but to do so use

    perl Makefile.PL PREFIX=/opt/oracle/rdbms
    

    or some such. Don't edit Makefile.

  2. You change where the module is installed, but it's not clear that you tell Perl where it is installed. For the above command, you'd need something of the sort:

    export PERL5LIB=/opt/oracle/rdbms/lib/site_perl
    

    If you still can't get it to work, please provide the full error message -- it should specify where Perl looked -- and the full patch to the directory is DBI.pmlocated after install. (Using the above settings, it might be found in something like /opt/oracle/rdbms/lib/site_perl/5.16.0/x86_64-linux-thread-multi/DBI.pm.)

  1. 我不确定您为什么要更改发行版的安装位置,但要这样做,请使用

    perl Makefile.PL PREFIX=/opt/oracle/rdbms
    

    或一些这样的。不要编辑Makefile

  2. 您更改了模块的安装位置,但不清楚您告诉 Perl 模块的安装位置。对于上面的命令,你需要这样的东西:

    export PERL5LIB=/opt/oracle/rdbms/lib/site_perl
    

    如果您仍然无法让它工作,请提供完整的错误消息——它应该指定 Perl 的位置——以及DBI.pm安装后目录的完整补丁。(使用上述设置,它可能会在类似的东西中找到/opt/oracle/rdbms/lib/site_perl/5.16.0/x86_64-linux-thread-multi/DBI.pm。)

回答by MichaelN

Going back to your installation:

回到你的安装:

Step 1-5 is fine. Don't export the PERL5LIB or PERLLIB not sure what the point of that is.

步骤 1-5 没问题。不要导出 PERL5LIB 或 PERLLIB 不确定这是什么意思。

Step 6) compile DBI

步骤6)编译DBI

cd DBI-1.621

cd DBI-1.621

since you want to use a different perl do the following:

由于您想使用不同的 perl,请执行以下操作:

/opt/oracle/rdbms/perl/bin/perl Makefile.PL

/opt/oracle/rdbms/perl/bin/perl Makefile.PL

This should pickup the compiler option and perl libraries location of that perl (I assume you are trying to use the perl from oracle installation, not sure if that is wise). Run make in the DBI-1.621 and then make install.

这应该选择该 perl 的编译器选项和 perl 库位置(我假设您正在尝试使用 oracle 安装中的 perl,不确定这是否明智)。在 DBI-1.621 中运行 make,然后进行安装。

Step 7) Compile DBD:Oracle and once again use your /opt/oracle/rdbms/perl/bin/perl on the Makefile.PL to create the makefile, don't edit the Makefile.PL. Make sure you have ORACLE_HOME set and ORACLE_USERID if you want to do make test. You may have to also set the LD_LIBRARY_PATH to include $ORACLE_HOME/lib if its not there already. Run make and install as you did with DBI.

步骤 7) 编译 DBD:Oracle 并再次使用 Makefile.PL 上的 /opt/oracle/rdbms/perl/bin/perl 创建 makefile,不要编辑 Makefile.PL。如果要进行测试,请确保设置了 ORACLE_HOME 和 ORACLE_USERID。您可能还必须设置 LD_LIBRARY_PATH 以包含 $ORACLE_HOME/lib(如果它尚未存在)。像使用 DBI 一样运行 make 和 install。

Step 8) Compile CGI, as before use /opt/oracle/rdbms/perl/bin/perl on the Makefile.PL to generate the proper makefile and then run make and install.

Step 8) 编译CGI,和之前一样使用Makefile.PL上的/opt/oracle/rdbms/perl/bin/perl来生成正确的makefile,然后运行make并安装。

Alternate method would be:

替代方法是:

do step1-5
export ORACLE_HOME="enter oracle home"
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/lib

/opt/oracle/rdbms/perl/bin/perl -MCPAN -e 'shell'
cpan>install DBI
cpan>install DBD::Oracle
cpan>install CGI