0

コマンドラインから(dbにアクセスできるユーザーとして).cgiを実行すると、次のようになります。

install_driver(Pg)が失敗しました:@INCでDBD / Pg.pmが見つかりません(@INCに含まれるもの:/Library/Perl/5.12/darwin-thread-multi-2level /Library/Perl/5.12 / Network / Library / Perl / 5.12 / darwin-thread-multi-2level /Network/Library/Perl/5.12 /Library/Perl/Updates/5.12.4 /System/Library/Perl/5.12/darwin-thread-multi-2level / System / Library / Perl / 5.12 /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level /System/Library/Perl/Extras/5.12。)(eval 4)3行目。おそらくDBD ::Pgperlモジュールはそうではありません。完全にインストールされているか、「Pg」の大文字化が正しくない可能性があります。

cpan -D DBD::Pgが表示されます

DBD :: Pg

DBI用PostgresドライバーT/TU / TURNSTEP /DBD-Pg-2.19.2.tar.gz/opt/local/lib/perl5/site_perl/5.12.4/darwin-thread-multi-2level/DBD/Pg.pmインストール済み:2.19.2 CPAN:2.19.2最新のDBD :: Pg Developers(DBDPG)dbd-pg@perl.org

上記のパスをPERL5LIBまたはPERLLIBでエクスポートしようとしても、結果に違いはありません。

.cgiは/usr/ bin/perlを参照します。

これは、darwin-thread-multi-2level用に構築されたperl 5、バージョン12、subversion 4(v5.12.4)です(2つの登録済みパッチがあります。詳細については、perl -Vを参照してください)。

モジュールパスをDBD::Pgがインストールされているパス(/ opt / ...)に永続的に設定したいと思います。エラー出力ディレクトリのリストにそれが記載されていないのはなぜだろうか。

cpanm経由でDBD::Pgをインストールしました。

私はMacOSXMountainLionを使用しています。

4

2 に答える 2

7

2つの異なるビルドのPerlがインストールされているようです。スクリプトを実行しているものは、実行に使用したものとは異なりますcpan。正しいPerlでDBD::Pgをインストールするには、次を使用します。

perl -MCPAN -e'install DBD::Pg'

perl必要に応じて、スクリプトの実行に使用されるPerlへのパスに置き換えます。

于 2012-08-02T21:21:51.757 に答える
2

/ opt/...は「サードパーティ」のPerlを示します。「whichperl」、「which cpan」は、サードパーティのPerlがcapnを実行することによって使用されていることを示しています。それがMacPortです。cpanとcpanmをインストールすると、サードパーティのPerlが更新されました。別のユーザーとして実行すると、/ usr / bin / perl shebangが、Mac OSXperlを使用するように指示します。shebangと別のユーザーを使用する必要があるため、Mac OSXperlを使用する必要があります。/ usr / bin / cpan DBD :: Pgによってモジュールを明示的に追加すると、モジュールがMac OSXPerlにインストールされます。これで、.cgiが実行されます。サードパーティのPerlに切り替える別の方法は、シバンを「... / env perl」に変更するか、ファイルシステムでエイリアスを使用することです。

于 2012-08-02T20:13:03.027 に答える