使用 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
Installing CGI, DBI and DBD::Oracle with Solaris 11 64-bit
提问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 环境中安装CGI、DBI和DBD::Oracle和驱动程序,但收效甚微。我遇到的错误数量令人难以置信,而我尝试的变通解决方案的数量——从更改环境变量、更改目录引用、移动和复制文件、更改编译器等——甚至更糟。最糟糕的是,在最新版本的 Solaris 中安装上述模块的文档很少。
Here are the initial steps we have been going through.
以下是我们正在经历的初始步骤。
First we go to http://search.cpan.org/. Then we download:
Next we open up a terminal window, switch to root, then navigate to our "Downloads" folder.
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 -
Then we archive the tar files in case we might need them later on.
mkdir archive_tar mv *.gz $HOME/Downloads/archive_tar
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).
- Type
which perl
in order to determine which current version of Perl you are using. It should indicate you are using the default version (or 32-bit). - Verify that you have a 64-bit Perl installation available by doing the following: type
file /opt/oracle/rdbms/perl/bin/perl
- You should see
ELF 64-bit LSB executable AMD64 Version 1 [SSE2 SSE FXSR CMOV FPU], dynamically linked, not stripped<
. - Switch to using this version of Perl by adding it to the
PATH
variable:export PATH=/opt/oracle/rdbms/perl/bin:$PATH
- Type
which perl
. Verify that this now shows the Perl located atopt/oracle/rdbms/perl/bin/perl
. 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
- Type
Now we set up
cc
(the compiler) to work so that we can install CGI/DBI/DBD-Oracle.- Type
cc --version
to verify that it sayscc
is not found. - Open up a browser and navigate to Solaris Studio. Here you will find a package which contains Sun's compiler.
- Download "Tarfile on Solaris SPARC" for the Solaris 11 OS Platform.
- In your terminal window, decompress the above file by typing:
bzcat SolarisStudio12.3-solaris-sparc-bin.tar.bz2 | tar xf -
- Move the
.bz2
file to our previously created archive folder:mv SolarisStudio12.3-solaris-sparc-bin.tar.bz2 $HOME/Downloads/archive_tar
- 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
- Type
cc --version
, this command shouldn't do anything (possibly throw a few warnings), but it won't saycc not found
anymore.
- Type
Here we begin to install the modules and the driver, starting with the CGI module:
- Navigate to
$HOME/Downloads/CGI.pm-3.59
- Type
perl Makefile.PL
We need to change the make file to point to the correct location.
- Type
vi Makefile
:%s,../lib/site_perl/5.10.0,/opt/oracle/rdbms/perl/lib/site_perl/5.10.0,g
:%s,../lib/5.10.0,/opt/oracle/rdbms/perl/lib/5.10.0,g
- Type
Now type
make
- Then type
make install
- Next we move onto the DBI module. Navigate to
$HOME/Downloads/DBI-1.621
. - Type
perl Makefile.PL
Again, we need to change this make file to point to the correct location.
- Type
vi Makefile
:%s,../lib/site_perl/5.10.0,/opt/oracle/rdbms/perl/lib/site_perl/5.10.0,g
:%s,../lib/5.10.0,/opt/oracle/rdbms/perl/lib/5.10.0,g
- Type
However, these change two lines that we don't want to change. So do a find for
MAKEMAKER
andXSUBPPDIR
and 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
Now type
make
- Then type
make install
- Now navigate to
$HOME/Downloads/DBD-Oracle-1.44
- Type
perl Makefile.PL
- Navigate to
首先我们去http://search.cpan.org/。然后我们下载:
接下来我们打开一个终端窗口,切换到 root,然后导航到我们的“下载”文件夹。
从这里我们解压缩之前下载的文件(这里没有问题):
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 -
然后我们将 tar 文件存档,以防我们以后可能需要它们。
mkdir archive_tar mv *.gz $HOME/Downloads/archive_tar
这是有点令人困惑的地方,因为我们不确定这些步骤是否完全必要。基本上,我们认为我们需要设置正确的 Perl(最新的 Oracle 需要 64 位,默认使用的 Perl 是 32 位)。
- 键入
which perl
以确定您正在使用的 Perl 的当前版本。它应该表明您使用的是默认版本(或 32 位)。 - 通过执行以下操作验证您是否有可用的 64 位 Perl 安装:
file /opt/oracle/rdbms/perl/bin/perl
- 你应该看到
ELF 64-bit LSB executable AMD64 Version 1 [SSE2 SSE FXSR CMOV FPU], dynamically linked, not stripped<
。 - 通过将它添加到
PATH
变量来切换到使用这个版本的 Perl :export PATH=/opt/oracle/rdbms/perl/bin:$PATH
- 键入
which perl
。验证这现在显示位于 的 Perlopt/oracle/rdbms/perl/bin/perl
。 键入
perl -V
,如果显示错误,请设置以下变量:export PERL5LIB=/opt/oracle/rdbms/perl/lib/5.10.0 export PERLLIB=/opt/oracle/rdbms/perl/lib/5.10.0
- 键入
现在我们设置
cc
(编译器)工作,以便我们可以安装 CGI/DBI/DBD-Oracle。- 键入
cc --version
以确认它说cc
未找到。 - 打开浏览器并导航到Solaris Studio。在这里您将找到一个包含 Sun 编译器的包。
- 下载适用于 Solaris 11 OS 平台的“Solaris SPARC 上的 Tarfile”。
- 在您的终端窗口中,输入以下命令解压缩上述文件:
bzcat SolarisStudio12.3-solaris-sparc-bin.tar.bz2 | tar xf -
- 将
.bz2
文件移动到我们之前创建的存档文件夹中:mv SolarisStudio12.3-solaris-sparc-bin.tar.bz2 $HOME/Downloads/archive_tar
- 现在我们想将新的编译器添加到我们的路径中,我们通过:
export PATH=$PATH:/home/oracle/Downloads/SolarisStudio12.3-solaris-sparc-bin/solarisstudio12.3/bin
- Type
cc --version
,这个命令不应该做任何事情(可能会抛出一些警告),但它不会再说cc not found
了。
- 键入
在这里我们开始安装模块和驱动程序,从 CGI 模块开始:
- 导航
$HOME/Downloads/CGI.pm-3.59
- 类型
perl Makefile.PL
我们需要更改 make 文件以指向正确的位置。
- 类型
vi Makefile
:%s,../lib/site_perl/5.10.0,/opt/oracle/rdbms/perl/lib/site_perl/5.10.0,g
:%s,../lib/5.10.0,/opt/oracle/rdbms/perl/lib/5.10.0,g
- 类型
现在输入
make
- 然后输入
make install
- 接下来我们进入 DBI 模块。导航到
$HOME/Downloads/DBI-1.621
。 - 类型
perl Makefile.PL
同样,我们需要更改此 make 文件以指向正确的位置。
- 类型
vi Makefile
:%s,../lib/site_perl/5.10.0,/opt/oracle/rdbms/perl/lib/site_perl/5.10.0,g
:%s,../lib/5.10.0,/opt/oracle/rdbms/perl/lib/5.10.0,g
- 类型
但是,这些更改了我们不想更改的两行。所以做一个 find for
MAKEMAKER
andXSUBPPDIR
并将它们设置回下面的值。MAKEMAKER = /opt/oracle/rdbms/perl/lib/5.10.0/ExtUtils/MakeMaker.pm XSUBPPDIR = /opt/oracle/rdbms/perl/lib/5.10.0/ExtUtils
现在输入
make
- 然后输入
make install
- 现在导航到
$HOME/Downloads/DBD-Oracle-1.44
- 类型
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 @INC
cannot 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 的替代路由
Open up a terminal window and install the following packages as the
root
user:pkg install system/header pkg install gcc-45 pkg install developer/build/gnu-make pkg install archiver/gnu-tar
Navigate to $oracle_home
cd $oracle_home
and:mkdir /apps mkdir /apps/twiki-root mkdir /apps/twiki-root/perlmodules
Modify the
PERL5LIB
environment variable:export PERL5LIB=/apps/twiki-root/perlmodules
- Verify by typing:
echo $PERL5LIB
Open up the CPAN shell and update it:
/usr/perl5/bin/perlgcc -MCPAN -e shell
If this is the first time, press
return
to 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
Open up the
Config.pm
file 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
Make sure that your
gcc
is set:Verify by:
which gcc
Now once again open up the CPAN shell and begin to install the DBI module.
/usr/perl5/bin/perlgcc -MCPAN -e shell install DBI
打开终端窗口并以
root
用户身份安装以下软件包:pkg install system/header pkg install gcc-45 pkg install developer/build/gnu-make pkg install archiver/gnu-tar
导航到 $oracle_home
cd $oracle_home
并:mkdir /apps mkdir /apps/twiki-root mkdir /apps/twiki-root/perlmodules
修改
PERL5LIB
环境变量:export PERL5LIB=/apps/twiki-root/perlmodules
- 键入以下内容进行验证:
echo $PERL5LIB
打开 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
打开
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
确保您
gcc
已设置:验证方式:
which gcc
现在再次打开 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.0
but 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.0
and 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
- Undo everything, keep the GNU compiler toolchain (gnu-make, gcc-45).
- Follow the instructions at http://perlbrew.pl/to install
perlbrew
. (Mind to set the environment variablePERLBREW_ROOT
first 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. Use
perlbrew
to install a supported Perl:perlbrew -v install perl-5.16.0 -Dcc=gcc perlbrew switch perl-5.16.0 perlbrew install-cpanm
cpanm
is a replacement forcpan
, no further configuration necessary.cpanm -v CGI cpanm -v DBI cpanm -v DBD::Oracle
- 撤消所有操作,保留 GNU 编译器工具链(gnu-make、gcc-45)。
- 按照http://perlbrew.pl/上的说明安装
perlbrew
. (PERLBREW_ROOT
如果要将 perlbrew 的文件存储在非默认目录中,请注意首先设置环境变量。)在安装结束时,它会告诉您将 shell 命令添加到登录 shell 配置并再次登录,不要忽略这些步骤。 使用
perlbrew
安装支持的Perl:perlbrew -v install perl-5.16.0 -Dcc=gcc perlbrew switch perl-5.16.0 perlbrew install-cpanm
cpanm
是 的替代品cpan
,无需进一步配置。cpanm -v CGI cpanm -v DBI cpanm -v DBD::Oracle
回答by ikegami
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
.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.pm
located 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
.)
我不确定您为什么要更改发行版的安装位置,但要这样做,请使用
perl Makefile.PL PREFIX=/opt/oracle/rdbms
或一些这样的。不要编辑
Makefile
。您更改了模块的安装位置,但不清楚您告诉 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