質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.23%

【PostgreSQL】DBD :: Pg のインストール

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 914

icya

score 11

前提・実現したいこと

既存データベースと同じ環境を構築したいので
・postgreSQL (7.2.6)
・DBD-Pg-1.32
を使用してデータベースに接続したいです。
そのためにDBD-Pgそのためにをインストールしたいのですが、うまくいきません。

試したこと

postgreSQL (7.2.6)のインストール済
>wget https://ftp.postgresql.org/pub/source/v7.2.6/postgresql-7.2.6.tar.gz
DBIインストール済
>perl -MCPAN -e shell
>install DBI

DBD :: Pg 1.32のインストールか、その後がうまくいきません。
CPANやyumでインストール出来るDBD::PgのバージョンはPostgreSQL8以上を必要とするため直接バージョン指定してみました。
>① cpan https://cpan.metacpan.org/authors/id/R/RU/RUDY/DBD-Pg-1.32.tar.gz 
>② wget https://cpan.metacpan.org/authors/id/R/RU/RUDY/DBD-Pg-1.32.tar.gz 

①の結果
Resolving cpan.pesat.net.id (cpan.pesat.net.id)... xxx.xxx.xxx.xxx
Connecting to cpan.pesat.net.id (cpan.pesat.net.id)|xxx.xxx.xxx.xxx|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2020-02-04 14:57:15 ERROR 404: Not Found.


    Function system("/bin/wget -O "/root/.cpan/sources/authors/id/https:/cpan.metacpan.org/authors/id/R/RU/RUDY/DBD-Pg-1.32.tar.gz.tmp3831" "http://cpan.pesat.net.id/authors/id/https://cpan.metacpan.org/authors/id/R/RU/RUDY/DBD-Pg-1.32.tar.gz" ")
    returned status 8 (wstat 2048), left
/root/.cpan/sources/authors/id/https:/cpan.metacpan.org/authors/id/R/RU/RUDY/DBD-Pg-1.32.tar.gz.tmp3831 with size 0
    Warning: no success downloading '/root/.cpan/sources/authors/id/https:/cpan.metacpan.org/authors/id/R/RU/RUDY/DBD-Pg-1.32.tar.gz.tmp3831'. Giving up on it.
No external ftp command available

Please check, if the URLs I found in your configuration file
(http://mirror.pregi.net/CPAN/, http://mirror.biznetgio.com/cpan/,
http://cpan.pesat.net.id/) are valid. The urllist can be edited. E.g. with
'o conf urllist push ftp://myurl/'

Could not fetch authors/id/https://cpan.metacpan.org/authors/id/R/RU/RUDY/DBD-Pg-1.32.tar.gz

②結果の結果
--2020-02-04 15:08:16--  https://cpan.metacpan.org/authors/id/R/RU/RUDY/DBD-Pg-1.32.tar.gz
Resolving cpan.metacpan.org (cpan.metacpan.org)... xxx.xxx.xxx.xxx, 2a04:4e42:15::729
Connecting to cpan.metacpan.org (cpan.metacpan.org)|xxx.xxx.xxx.xxx|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 96233 (94K) [application/x-gzip]
Saving to: ‘DBD-Pg-1.32.tar.gz.1100%[======================================================================================================================================================================================================>] 96,233      --.-K/s   in 0.03s   

2020-02-04 15:08:16 (3.24 MB/s) - ‘DBD-Pg-1.32.tar.gz.1’ saved [96233/96233]

②はうまくいったかのよにみえますが、
>perl -MDBD::Pg -e'print $DBD::Pg::VERSION' ; echo

Can't locate DBD/Pg.pm in @INC (@INC contains: /root/perl5/lib/perl5/5.16.3/x86_64-linux-thread-multi /root/perl5/lib/perl5/5.16.3 /root/perl5/lib/perl5/x86_64-linux-thread-multi /root/perl5/lib/perl5 /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .).
BEGIN failed--compilation aborted.

>tar zxvf DBD-Pg-1.32.tar.gz
>cd DBD-Pg-1.32
>perl Makefile.PL

Configuring Pg
Remember to actually read the README file!
OS: linux
PostgreSQL version: 7.2.6
Multiple copies of Driver.xst found in: /root/perl5/lib/perl5/x86_64-linux-thread-multi/auto/DBI/ /usr/lib64/perl5/vendor_perl/auto/DBI/ at Makefile.PL line 66.
Using DBI 1.634 (for perl 5.016003 on x86_64-linux-thread-multi) installed in /root/perl5/lib/perl5/x86_64-linux-thread-multi/auto/DBI/
Multiple copies of Driver.xst found in: /root/perl5/lib/perl5/x86_64-linux-thread-multi/auto/DBI/ /usr/lib64/perl5/vendor_perl/auto/DBI/ at Makefile.PL line 113.
Using DBI 1.634 (for perl 5.016003 on x86_64-linux-thread-multi) installed in /root/perl5/lib/perl5/x86_64-linux-thread-multi/auto/DBI/
Generating a Unix-style Makefile
Writing Makefile for DBD::Pg
Writing MYMETA.yml and MYMETA.json


>make

Skip blib/lib/DBD/pg_connect.pl (unchanged)
Skip blib/lib/DBD/Pg.pm (unchanged)
Running Mkbootstrap for Pg ()
chmod 644 "Pg.bs"
"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Pg.bs blib/arch/auto/DBD/Pg/Pg.bs 644
gcc -c  -I/usr/local/pgsql/include -I/root/perl5/lib/perl5/x86_64-linux-thread-multi/auto/DBI -D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_PQescapeString -DHAVE_PQescapeBytea -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic  -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc -DVERSION=\"1.32\" -DXS_VERSION=\"1.32\" -fPIC "-I/usr/lib64/perl5/CORE"   Pg.c
Pg.c: In function ‘XS_DBD__Pg__db__login’:
Pg.c:326:7: warning: variable ‘attribs’ set but not used [-Wunused-but-set-variable]
  SV * attribs;
       ^
Pg.xs: In function ‘XS_DBD__Pg__db_quote’:
Pg.xs:95:8: warning: format ‘%i’ expects argument of type ‘int’, but argument 2 has type ‘IV’ [-Wformat=]
        "defaulting to VARCHAR",SvIV(type_sv));
        ^
〜省略
         ^
Pg.xs:294:47: error: ‘sv_yes’ undeclared (first use in this function)
         ST(0) = (-1 != pg_db_endcopy(dbh)) ? &sv_yes : &sv_no;
                                               ^
Pg.xs:294:57: error: ‘sv_no’ undeclared (first use in this function)
         ST(0) = (-1 != pg_db_endcopy(dbh)) ? &sv_yes : &sv_no;
                                                         ^
In file included from /root/perl5/lib/perl5/x86_64-linux-thread-multi/auto/DBI/DBIXS.h:24:0,
                 from Pg.h:39,
                 from Pg.xs:13:
Pg.c: In function ‘XS_DBD__Pg__db__pg_type_info’:
/usr/lib64/perl5/CORE/XSUB.h:175:28: warning: unused variable ‘targ’ [-Wunused-variable]
 #define dXSTARG SV * const targ = ((PL_op->op_private & OPpENTERSUB_HASTARG) \
                            ^
Pg.c:1843:2: note: in expansion of macro ‘dXSTARG’
  dXSTARG;
  ^
make: *** [Pg.o] Error 1

とエラーになりうまくいきません。
検索で調べたのですが、よくわからず質問させてもらいました。
DBD-Pg-1.32のインストール自体がうまくいってないので、その後のエラーが出ているということなのでしょうか?
どのようにしたら解決するかご教授頂けると幸いです。

補足情報(FW/ツールのバージョンなど)

Mac Vagrant PostgreSQL CentOS7

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

DBD-Pg-1.32のインストール自体がうまくいってないので、その後のエラーが出ているということなのでしょうか?

コンパイルに失敗しています。

おそらくインストーラがデフォルトで期待しているライブラリやコンパイラの仕様がCentOS7のそれとあっていないのでしょう。いかんせんDBD-Pg-1.32とは15年も前の代物みたいですし。

まず、落としてきたDBD-Pg-1.32の中に存在するはずのINSTALLとかREADMEとかのファイルの中に何かヒントがないか確認してください。makeの際に何らかのオプションパラメータを追加することで問題を解決する算段が用意されているかもしれません。またエラーメッセージをそのまま検索窓に突っ込んでググってみるのも有効な手段です。

しかし、私があなたなら、あきらめて新しいバージョン(yumで普通にインストールできるバージョン)を導入し、古いデータはダンプして新しいDBに取り込みますね。かりにこの古いバージョンのインストールになんとか成功したとしても、実作業を始めたあとで様々な不便に見舞われる可能性が強く懸念されるからです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/02/26 10:38 編集

    ご回答ありがとうございます!

    ご指摘のとおり新しいバージョンを導入できるのが望ましいのですが、古いデータがEUCと他の文字コード(旧字体漢字など)が混在していてEUC→EUCでも、他の文字コードの場所で止まってしまいデータの移行ができませんでした。手作業で変換すると進むのですが他の文字コードの場所が膨大なため手作業で変換は諦めました。
    ①古いバージョン->古いバージョン
    ②古いバージョン->新しいバージョン(自動エンコード機能をoffにする)
    ③古いバージョン->新しいバージョン(なんとか変換して移行できるデータにする)
    の3つの選択肢から②③の方法がわからず今回は①を試しうまくいかず質問させてもらったという経緯でした。

    もし、良い方法を知っておられたらよろしくお願いします。また②③に関しては調べた後別スレッドにしたいと思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.23%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る