1
  1. solaris servier の perl スクリプトから oracle データベースに接続したいと考えています。現在の perl バージョン 5.8.4 では、DBI はインストールされていますが、DBD::Oracle はインストールされていません。ルートアクセス権がなく、ホームユーザー ID で作業しています。DBD-Oracle-1.50 をダウンロードし、perl スクリプトが存在するローカル ディレクトリに解凍します。root アクセス権がないため、DBD Oracle ライブラリ ファイルをカスタム ディレクトリにコピーし、スクリプトを実行したいと考えています。DBD-Oracle-1.50 のインストール スクリプトを読むと、手動インストールの場合は以下のスクリプトを実行する必要があると書かれています。root アクセス権がないため、ライブラリ モジュールをローカル ディレクトリにコピーします。これらのスクリプトに、perl スクリプトが存在するローカル ディレクトリにインストールするように指示する方法がわかりません。

  2. DBI と DBD を自分のユーザー ID の下のカスタム ディレクトリにインストールすると、正常に動作しますか。これらのモジュールが正しく機能するには、ルート アクセスが必要ですか? 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
4

2 に答える 2

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 に含めます (またはプログラムに「use lib」を含めます)。

コマンドラインで PREFIX= を指定する必要がないように、PERL_MM_OPT や PERL_MB_OPT などの特定の環境変数を設定することもできます (ExtUtils::MakeMaker および Module::Build のドキュメントを参照してください)。また、 cpanmと PERL_CPANM_HOME をホーム ディレクトリの下に設定することもお勧めします。

于 2012-10-04T20:02:40.920 に答える
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. スクリプトにライブラリ パスを追加します。

スクリプトにパスを含めるコマンドは、use lib "path" です。このステートメントは @INC 配列の先頭に「パス」を追加することに注意してください。したがって、基本的には unshift @INC, "path" と同じです。

Example:

#!/usr/bin/perl
use lib "/home/path/lib";
use lib "/usr/another/lib";
于 2012-10-05T19:16:17.033 に答える