Solaris10でCPANのエラー
CPANでDBD::Pgをインストールしようとするとこんなエラーが。
cpan> install DBD::Pg (中略) /usr/local/bin/gcc -c -I/usr/include/pgsql -I/usr/perl5/site_perl/5.8.4/i86pc-solaris-64int/auto/DBI -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_TS_ERRNO -DPGLIBVERSION=80111 -DPGDEFPORT=5432 -xO3 -xspace -xildoff -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc -DVERSION=\"undef\" -DXS_VERSION=\"undef\" -KPIC "-I/usr/perl5/5.8.4/lib/i86pc-solaris-64int/CORE" Pg.c gcc: unrecognized option '-KPIC' gcc: 言語 ildoff は認識できません gcc: 言語 ildoff は認識できません gcc: Pg.c: リンクが完了しなかったのでリンカの入力ファイルは使われませんでした 以下同じエラーが続く。
gccのmanpageを参照しても-Kというオプションや、-xに続くべきオプション引数も指定のものはない様子。少々しらべると、perlのディストリ中にperlgccってのがあって、それにはちゃんと上記のようなオプションがある模様。で、cpanって/usr/local/bin/gccってどこから持ってきてるんだろう。PATHをかえてもだめ。これもcpanのマニュアルを読んで解決。こんな風に変更可能。
cpan> o conf CPAN::Config options from /usr/perl5/5.8.4/lib/CPAN/Config.pm: commit Commit changes to disk defaults Reload defaults from disk init Interactive setting of all options build_cache 10 build_dir /.cpan/build cache_metadata 1 cpan_home /.cpan dontload_hash ftp /usr/bin/ftp ftp_proxy getcwd cwd gpg gzip /usr/bin/gzip histfile /.cpan/histfile histsize 100 http_proxy XXX.XXX.XXX.XX:8088 inactivity_timeout 0 index_expire 1 inhibit_startup_message 0 keep_source_where /.cpan/sources lynx make /usr/local/bin/make make_arg CC=/usr/local/bin/gcc make_install_arg CC=/usr/local/bin/gcc makepl_arg ncftpget /usr/sfw/bin/ncftpget no_proxy pager /usr/bin/less prerequisites_policy ask proxy_user scan_cache atstart shell /usr/bin/bash tar /usr/sbin/tar term_is_latin 0 unzip /usr/bin/unzip urllist ftp://ftp.kddilabs.jp/CPAN/ wget /usr/sfw/bin/wget cpan> o conf make_arg CC=/usr/perl5/bin/perlgcc cpan> o conf make_install_arg CC=/usr/perl5/bin/perlgcc
これでCPANの設定を変更したのちにintall DBD::PgでOK。すでにダウンロードしてるよとかなんとか言われたらcpanのプロンプトでmake install。
これって
でもこれ、一回cpanプロンプトをぬけちゃうと設定がリセットされる。どこかに保存されてるのかなーーって、調べて発見。
/usr/perl5/5.8.4/lib/CPAN/Config.pm
5.8.4のところは使ってるバージョン名に置き換える必要があります。それに自分でコンパイルリンクしたperlなんかだとインストールパスが違ってたりするかも。/usr/localとか/optとかね。
で、このファイル中にちゃんと定義があるので、これを書き換えればOK。
でも使えないよ
またか。で使ってみるとこんなエラーが。
install_driver(Pg) failed: DBD::Pg object version undef does not match bootstrap parameter 1.49 at /usr/perl5/5.8.4/lib/i86pc-solaris-64int/DynaLoader.pm line 253. Compilation failed in require at (eval 17) line 3.