关于Perl DBD :: Oracle安装在本地目录中

时间:2012-10-02 00:02:53

标签: perl mod-perl

  1. 我想从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脚本所在的本地目录中。

  2. 在我的用户ID下的自定义目录中安装DBI和DBD是否可以正常工作。这些模块是否需要root访问才能正常工作?要使用DBD :: Oracle,需要在服务器中安装oracle。我的理解Oracle驱动程序DBD :: Oracle应该处理它。

  3.  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
    

2 个答案:

答案 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时,通常会出现这种情况。在自定义文件夹中安装DBIDBD后,有几种不同的方法可以确保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";