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.