2012-10-02 70 views
1
  1. 我想从solaris servier中的perl脚本连接oracle数据库。能够在当前的perl版本5.8.4中看到安装了DBI,但没有安装DBD :: Oracle。我没有根访问和我的家庭用户ID工作。下载DBD-Oracle-1.50并解压到我的perl脚本所在的本地目录中。我想将DBD Oracle库文件复制到自定义目录并运行脚本,因为我没有root访问权限。当我在DBD-Oracle-1.50中读取安装脚本时,说到manuall安装,我需要运行下面的脚本。由于我没有root权限,我想将库模块复制到本地目录中。不知道如何告诉这些脚本将其安装在我的perl脚本所在的本地目录中。关于本地目录中的Perl DBD :: Oracle安装

  2. 是否将DBI和DBD安装在我的用户ID下的自定义目录中会使其正常工作。这些模块是否需要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

任何一个可以帮助我对此 – Arav

+0

类似的问题已经asnwered [点击这里](http://stackoverflow.com/questions/3735836/how-can-i-install-perl-modules-without-root-privileges)。 – Bohdan

+0

非常感谢您的信息。将DBI和DBD安装在我的用户ID下的自定义目录中会使其正常工作。这些模块是否需要root权限才能正常工作?要使用DBD :: Oracle,需要在服务器中安装oracle。我了解Oracle驱动程序DBD :: Oracle应该照顾它。 – Arav

回答

3

如果已经安装DBI,你只需要安装DBD :: Oracle中,虽然你可能需要安装DBI更高版本。您可以在主目录下安装DBD :: Oracle,然后将PERL5LIB环境变量设置为该目录(或包含该目录)。安装很长的路要走是:

perl Makefile.PL PREFIX=~/perl #Or whatever sub-directory you like 
make 
make test 
make install 

然后至少包括 “〜/ perl的/ lib目录;〜/ perl的/ lib目录/ SITE_PERL” 在PERL5LIB运行您的程序(或包括“在你的程序中使用的lib”之前)

您也可以设置某些环境变量,如PERL_MM_OPT和PERL_MB_OPT,这样就不必在命令行中指定PREFIX =(请参阅ExtUtils :: MakeMaker和Module :: Build的文档)。推荐cpanm并将PERL_CPANM_HOME设置为您的主目录下的某些东西。

+0

非常感谢您的信息。将测试它并回复给你 – Arav

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“路径”。 注意,此声明的预规划“路径”到@INC数组,所以它基本上是一样的unshift @INC,“路径”

Example: 

#!/usr/bin/perl 
use lib "/home/path/lib"; 
use lib "/usr/another/lib";