我想从solaris servier中的perl脚本连接oracle数据库。能够看到DBI已安装但当前的perl版本5.8.4中没有安装DBD :: Oracle。我没有根访问并且正在处理我的家庭用户ID。下载DBD-Oracle-1.50并在我的perl脚本所在的本地目录中解压缩。我想将DBD Oracle库文件复制到自定义目录并运行脚本,因为我没有root访问权限。当我在DBD-Oracle-1.50中读取安装脚本时,它表示对于manuall install我需要运行以下脚本。由于我没有root访问权限,我想将库模块复制到本地目录中。不知道如何告诉这些脚本将其安装在我的perl脚本所在的本地目录中。
在我的用户ID下的自定义目录中安装DBI和DBD是否可以正常工作。这些模块是否需要root访问才能正常工作?要使用DBD :: Oracle,需要在服务器中安装oracle。我的理解Oracle驱动程序DBD :: Oracle应该处理它。
perl Makefile.PL make && make test make install > ls -tlr /usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int total 956 > -rwxr-xr-x 1 root bin 15161 Mar 26 2005 Roadmap.pod > -rwxr-xr-x 1 root bin 1048 Sep 5 2006 TASKS.pod > -rwxr-xr-x 1 root bin 289343 Jun 26 2007 DBI.pm > -rwxr-xr-x 1 root bin 4608 Jun 12 2008 goferperf.pl > -rwxr-xr-x 1 root bin 1356 Jun 12 2008 dbixs_rev.pl > -rwxr-xr-x 1 root bin 58386 Apr 3 2010 SNMP.pm drwxr-xr-x 3 root bin 7 Oct 13 2010 NetSNMP > drwxr-xr-x 2 root bin 3 Oct 13 2010 Win32 drwxr-xr-x > 8 root bin 19 Oct 13 2010 DBI drwxr-xr-x 2 root > bin 4 Oct 13 2010 Bundle drwxr-xr-x 6 root other > 6 Oct 13 2010 auto drwxr-xr-x 3 root bin 11 Oct 13 > 2010 DBD > > ls -ltr /usr/perl5/vendor_perl/5.8.4/sun4-solaris-64int/DBD total 543 > -rwxr-xr-x 1 root bin 111586 May 6 2006 Pg.pm > -rwxr-xr-x 1 root bin 28785 Sep 27 2006 Proxy.pm > -rwxr-xr-x 1 root bin 7937 Jan 25 2007 Sponge.pm > -rwxr-xr-x 1 root bin 42836 Feb 6 2007 DBM.pm > -rwxr-xr-x 1 root bin 19882 Mar 28 2007 File.pm > -rwxr-xr-x 1 root bin 12051 May 10 2007 ExampleP.pm > -rwxr-xr-x 1 root bin 43586 May 14 2007 Gofer.pm > -rwxr-xr-x 1 root bin 3761 Jun 15 2007 NullP.pm drwxr-xr-x 4 root bin 4 Oct 13 2010 Gofer
答案 0 :(得分:3)
如果已安装DBI,您只需要安装DBD :: Oracle,但您可能需要安装更高版本的DBI。您可以在主目录下安装DBD :: Oracle,然后将PERL5LIB环境变量设置为该目录(或包含该目录)。安装的方法很长:
perl Makefile.PL PREFIX=~/perl #Or whatever sub-directory you like
make
make test
make install
然后在运行程序之前在PERL5LIB中包含至少“〜/ perl / lib;〜/ perl / lib / site_perl”(或在程序中包含“use lib”)。
您还可以设置某些环境变量,如PERL_MM_OPT和PERL_MB_OPT,这样您就不必在命令行中指定PREFIX =(请参阅ExtUtils :: MakeMaker和Module :: Build的文档)。我还建议cpanm并将PERL_CPANM_HOME设置为您主目录下的内容。
答案 1 :(得分:1)
Perl模块可以很好地安装在自定义目录中。当您没有root
访问权限来安装PM
时,通常会出现这种情况。在自定义文件夹中安装DBI
和DBD
后,有几种不同的方法可以确保perl
了解此安装。
<强> 1。设置环境变量PERL5LIB
在查看标准库和当前目录之前,Perl将在PERL5LIB环境变量中指定的目录中查找模块,因此您可以设置此变量来定位模块。
语法与您用于PATH环境变量的语法相同,因此您在unix上使用冒号分隔目录,在Windows上使用分号分隔。
示例:
# unix, bourne shell
PERL5LIB=/home/path/lib:/usr/another/path/lib; export PERL5LIB
请注意,使用-T
选项(污点检查)运行的脚本不使用该变量,因此在这种情况下,此选项将不起作用。
<强> 2。使用'-I'命令行参数
语法应该是这样的:
perl -I /home/path/lib -I /usr/another/lib script.pl
第3。在脚本中添加库路径
在脚本中包含路径的命令是:使用lib“path”。 请注意,此语句在@INC数组前面添加了“path”,因此它基本上与unshift @INC相同,“path”
Example:
#!/usr/bin/perl
use lib "/home/path/lib";
use lib "/usr/another/lib";