![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
現在、Webサーバが古くなったため、新しいWebサーバにアプリケーションを移行しようとしています。PerlもPostgreSQLもインストールし、プログラムを実行するのですが、以下のエラーメッセージが表示されます。
エラーメッセージ表示:
Can't locate Pg.pm in @INC (@INC contains: /usr/lib/perl5/5.8.5/i386-linux-thread-multi
(中略)BEGIN failed--compilation aborted at mgdbrest.pl line 37.
でエラーになってしまいます。
環境:
パッケージのインストール確認をすると問題なく、Pg.pmパッケージもインストール済みです。またPg.pmファイルも存在します。
またperl -Vコマンド実行でも@INCも表示されます。
OS: MiracleLinux4.0
%rpm -qaの結果
perl-DBD-Pg-1.31-6.1AX
postgresql-libs-8.0.8-1.2AX
postgresql-pl-8.0.8-1.2AX
%Pg.pmファイルの登録状況
/usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/DBD/Pg.pm
%perl -Vの結果(一部抜粋)
Characteristics of this binary (from libperl):
Compile-time options: DEBUGGING MULTIPLICITY USE_ITHREADS USE_LARGE_FILES PERL_IMPLICIT_CONTEXT
Built under linux
Compiled at Aug 23 2006 01:53:27
@INC:
/usr/lib/perl5/5.8.5/i386-linux-thread-multi
/usr/lib/perl5/5.8.5
/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi
質問:
対処方法を御存知の方がみえたら教えてください。やはり再インストールしなければならないのでしょうか。
No.3ベストアンサー
- 回答日時:
use Pg; していませんか。
perl と postgresql のインタフェースには、DBI を使う DBD::Pg と PostgreSQL ネイティブインタフェースの Pg とがあります。Pg は、PostgreSQL 7.3? くらいから別配布となり、http://gborg.postgresql.org/ から Pg-2.1.1.tar.gz が入手できたのですが、http://pgfoundry.org/projects/pgperl/ に移動したようです。しかしこのプロジェクトページには何も登録されていません。CPAN には、http://search.cpan.org/~mergl/pgsql_perl5-1.9.0/ が登録されていますが、古そうです。どうしてなくなったのか分かりませんが、DBD::Pg を使って書き直すか、Pg-2.1.1.tar.gz を他の場所から探し出すしかないでしょう。
御礼が遅くなり、申し訳ありません。
Pg-2.1.1.tar.gzを入手しインストールしたところ、無事問題が解決できました。本当にどうもありがとうございました。
助かりました。
No.2
- 回答日時:
確認ですが, perl -V で表示される @INC には
/usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/DBD
は入っていないわけですね?
だとすると, push のタイミングの問題になると思います. use はスクリプトのコンパイル時に処理するのに対し push はそのままでは実行時に処理しますから, 単純に「文面上 push が use より前にあればよい」というものではありません.
Pg.pm を use する前に @INC に push しないといけませんから,
1.use lib を使う
2.push を BEGIN ブロックに入れる (BEGIN { push(@INC, ...); } のように)
のいずれかでしょう.
No.1
- 回答日時:
@INC のどのディレクトリにも Pg.pm がないからじゃないですか?
Pg.pm の絶対パスをよ~く見ると, vendor_perl というディレクトリがはさまってますね.
この回答への補足
早速、回答をいただき、ありがとうございます。
すみません。@INCの内容をすべて記載していませんでした。
@INC:
/usr/lib/perl5/5.8.5/i386-linux-thread-multi
/usr/lib/perl5/5.8.5
/usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi
(中略)
/usr/lib/perl5/site_perl/5.8.5
(中略)
/usr/lib/perl5/site_perl/5.8.0
/usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi
(中略)
/usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi
(中略)
/usr/lib/perl5/vendor_perl/5.8.0
/usr/lib/perl5/vendor_perl
.
になっています。
プログラムの中でもpush (@INC, "/usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi/DBD/");と記載しています。
対処方法はありますか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- Perl Windows10においての『Perl』のプログラムについて 1 2022/05/09 16:04
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- Ruby Ruby / passenger のインストールについて 1 2023/01/30 18:31
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- CGI -T(汚染モード)でメールが送れません 1 2022/06/12 14:11
- PostgreSQL PostgreSQL14.6のSSL対応について 1 2023/01/05 15:42
- その他(プログラミング・Web制作) python 2 2022/12/23 09:06
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python
-
Perlでモジュールを作りましたが、
-
use lib qw(変数名);は無理?
-
@INCにrequireされたファイルが...
-
DBIをCPANからインストール時に...
-
Cからシェルを起動し返り値をハ...
-
例外処理のフローチャートの記...
-
VBAで別モジュールへの変数の受...
-
VBAProjectのモジュ...
-
標準モジュールを削除したい。(...
-
【vba】フォームに書いてあ...
-
Access VBA標準モジュールにつ...
-
「デバイスは PRN を初期化でき...
-
VBでグローバル変数を宣言するには
-
'Range'メソッドは失敗しました
-
ExcelVBA:パブリック オブジェ...
-
Excel VBAで、ユーザーフォーム...
-
ベースモジュールって?
-
モジュールとは何ですか
-
VBAでoutlook365が起動しません。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python
-
Perl+DBD::Oracleのエラーがわ...
-
Python エクセル読み込み xlrd...
-
perl DBD::Pg インストールでエ...
-
Jcode.pmについて
-
use lib qw(変数名);は無理?
-
SOAP::Liteを利用したい!
-
Pg.pmモジュールがロードできない
-
DB_Fileモジュールインストール...
-
XML::Parser::Expat が無い?
-
DBIをCPANからインストール時に...
-
GLIBC_2.4 以上がインストール...
-
Net::SSH::Perlについて
-
CygwinでPerlのCSV_XSを実行する
-
Expat.soが読めない!?
-
DBI Make error
-
perlのモジュールについて
-
python 環境構築について
-
LibXMLのエラーについて
-
cpanからモジュールをインスト...
おすすめ情報