[pod] [xml]

名前

INSTALL - DBD::mysqlのインストールと構成設定の方法

概要

  perl Makefile.PL [options]
  make
  make test
  make install

説明

このドキュメントは、MySQLデータベースのためPerl DBIドラバである DBD::mysqlのインストールと構成設定について説明します。 読み進めるまえに必要なものが利用可能になっているかどうかを 確認してください:Perl、MySQLそしてDBI。詳細については別のセクション /必要条件をご覧ください。

あなたのPerlのバージョンによりますが、DBD::mysqlの バイナリ・ディストリビューションを利用することができかもしれません。 もし可能であれば、これをお勧めします。そうでなければソースから インストールする必要があります。そうだとすれば、間違いなく Cコンパイラが必要になります。バイナリとソースからのインストールは どちらもバイナリ・インストールソース・インストールの 別のセクションで説明されています。

最後に、何か問題にぶつかったら既知の問題についてのセクション 既知の問題を読むのを忘れないでください。それが助けにならなければ、 メーリング・リストmsql-mysql-modules@lists.mysql.comの アーカイブをご覧になってください。アーカイブの位置については http://www.mysql.com をご覧ください。 それも助けにならなければ、このメーリング・リストに質問を投げてください。

必要条件

バイナリ・インストール

あなたのシステムによりますが、ほとんどの場合、 バイナリ・インストールが可能です。いくつか例を示しましょう:

Windows

ActivePerl は DBD::mysqlのPPMアーカイブを提供しています。 あなたに必要なことは以下のように打ち込むだけです

  ppm
  install DBI
  install DBD-mysql

HTTP経由でモジュールを取り出し、それらをインストールします。 WWWプロキシー・サーバーを使う必要があれば、環境変数HTTP_proxyを 設定しなければなりません:

  set HTTP_proxy=http://my.proxy.server:8000/
  ppm
  install DBI
  install DBD-mysql

もちろん、ホスト名my.proxy.serverとポート番号8000を あなたのローカルな値で置き換えなければいけません。

もし上記の手順がうまくいかなければ、ActivePerlを最新バージョンに アップグレードしてください。build623より前のものには問題があることが わかっています。

PPM 3にはDBD::mysqlがリポジトリにないと言われています。そのため PPM2と比べるとPPM 3 はお勧めできません。PPM3を使う必要があれば、 以下のようにしてください。

  ppm
  rep add PPM2 http://ppm.activestate.com/PPMPackages/5.6plus/
  rep 2
  install DBI
  install DBD-mysql

Red Hat Linux

バージョン7.1ではRed Hat LinuxはMySQLとDBD::mysqlがついてきます。 以下のRPMがインストールされているかを確認する必要があります:

  mysql
  perl-DBI
  perl-DBD-MySQL

ソースからインストールするためには、以下のRPMが必要です

  mysql-devel
  libz-devel

オプションとしては以下のものがあります

  mysql-server

その他のシステム

LinuxやFreeBSDディストリビューションの場合、Red Hat Linuxがそうである ように、あなたが必要としているものが全てディストリビューションに ついてくることがよくあります。私はこれらのシステムを使ってはいないので、 その名前を挙げることができないだけなのです。

私が上記のリストに追加できるように、SuSE Linux、Debian LinuxやFreeBSD ディストリビューションに、それらのファイルを見つけることができたかを 教えてください。

ソース・ディストリビューション

ここではソースからインストール必要があるとします。ついていれば、 PerlモジュールCPANが、あなたの代わりに全てをやってくれるでしょう。 Andreas Koenigの素晴らしい作品に感謝。そうでなければ、 あなたは手動インストールを行う必要があります。人によっては、 特に複数のサイトのシステム管理者は、自動インストールを選ぶでしょう。 これらのインストールのタイプの全てについて、それぞれセクションが あります。/CPANインストール/手動インストール/構成設定

CPANインストール

DBD::mysqlのインストールは驚くほど簡単です:

  cpan
  install DBD::mysql

はじめてCPANモジュールを使うのであれば、ほとんどの場合、正しいデフォルトを 受け入れると回答するだけです。古いバージョンのPerlを使っているならば、 代わりに以下のようにする必要があるかもしれません

  perl -MCPAN -e shell
  install DBD::mysql

CPANモジュールを動かすことが出来なければ、手動マニュアルを試して みてください。あなたが間違ってしまったために、CPANでのインストールが 失敗するのであれば、試しにmysql_configというスクリプトを作って みることができます。これについては後の/Configurationで説明 されています。

手動インストール

手動インストールのためにはDBD::mysqlソース・ディストリビューションを 取得する必要があります。最新バージョンは常に以下のサイトから取得する ことが出来ます

  http://www.cpan.org/modules/by-module/DBD/

典型的にはその名前は以下のようなものです

  DBD-mysql-1.2216.tar.gz

アーカイブを解凍する必要があります。WindowsではWinZipのような ツールを使えるかもしれません。Unixでは以下のようにタイプしてください

  gzip -cd DBD-mysql-1.2216.tar.gz | tar xf -

これはサブディレクトリDBD-mysql-1.2216を作成します。このサブディレクトリに 入り、以下のようにタイプしてください

  perl Makefile.PL
  make
  make test

(Windowsでは"make"を"nmake"あるいは"dmake"で置き換える必要があるかも しれません。)もしテストがうまくいったように見えたならば、以下のように 続けることが出来ます

  make install

テストが失敗したら、いくつか設定する必要があります。 例えば違うデータベースを選ぶかもしれません、Cコンパイラあるいはリンカーが 何かフラグを必要とするかもしれません。/構成設定/Cコンパイラー・フラグ. /リンカー・フラグ

Windows/CygWinについては、以下に特別なセクションがあります。Windows/CygWin

構成設定

インストール・スクリプト"Makefile.PL"は、数多くのスイッチを通して 設定することができます。全てのスイッチはコマンド行で利用することができます。 例えば、テストデータベースは:

  perl Makefile.PL --testdb=<db>

これらのスイッチをコマンド行で設定したくなければ、代わりに mysql_configというスクリプトを作ることが出来ます。 これは後で説明します。

利用できるスイッチは以下の通りです:

スイッチがコマンド行になければ、スクリプトmysql_configが 実行されます。このスクリプトはMySQLディストリビューションの一部 として入っています。例えばCコンパイラ・フラグを判定するためには 以下のように実行します

  mysql_config --cflags
  mysql_config --libs

データベース名、データベース・ユーザなどを独自の設定にしたければ、 同じ名前を持ち、応答するようなスクリプトを作成する必要があります。

Cコンパイラ・フラグ

典型的にはCコンパイラのための適切なフラグを判定することは難しい ことではありません。次のセクションにあるリンカー・フラグは また別の話になります。

Cコンパイラ・フラグの判定は通常はmysql_configという 構成設定スクリプトに任されます。そしてそれは以下のようにして 呼び出されます

  mysql_config --cflags

こうすると、以下のように提案されるCコンパイラ・フラグが入った行を 吐き出します:

  -L/usr/include/mysql

Cコンパイラはいくつかのヘッダ・ファイルを見つけなければなりません。 ヘッダ・ファイルは拡張子.hを持ちます。例えばMySQLヘッダ・ファイルは mysql.h と mysql_version.hです。ほとんどの場合、デフォルトでは ヘッダ・ファイルはインストールされません。例えばWindowsでは MySQLセットアップ・プログラムでのヘッダ・ファイルをインストールするか どうかはインストールのオプションです(Custom Installation)。 Red Hat Linuxでは、RPMアーカイブmysql-devel あるいは MySQL-develを インストールする必要があります。

ヘッダ・ファイルの位置が判れば、オプションをCコンパイラ・フラグに 追加する必要があります

  -L<ヘッダ・ファイルのディレクトリ>

例えば-L/usr/include/mysql

リンカー・フラグ

適切なリンカー・フラグは、DBD::mysqlをインストールするさい、 最もよくある問題です。わたしはラフな概要を与えるだけです。 トラブルシューティング・セクション既知の問題点に、さらなる 詳細があります。

Cコンパイラ・フラグの判定は通常はmysql_configと呼ばれる 構成設定スクリプトに任されます、これは以下のように 呼び出されます

  mysql_config --libs

そうすると、例えば以下のように提案されるCコンパイラ・フラグが 入った行を吐き出します:

   -L'/usr/lib/mysql' -lmysqlclient -lnsl -lm   -lz -lcrypt

通常、以下の要素が典型的にはリンカーを構成設定するために 必要とされます:

特殊なシステム

特定のシステムについての情報を以下に示します:

Windows/CygWin

Cygwin(Redhatディストリビューション)をお使いであれば、既にご存知のように うまく走るperl 5.6.1が入っています。追加モジュールのインストールは 通常は以下の標準の手順によりうまくいきます

    perl makefile.PL
    make
    make test
    make install

MySQLのWindowsバイナリ・ディストリビューションはCygwinの下でも スムーズに動きます。全てのWindowsクライアントを使って問題なく、 サーバーを起動/停止することができます。 しかしDBD::mysqlをインストールするためには少し特別なアクションをとらなければ いけません。

MySQL WindowsやLinux/Unixのバイナリ・ディストリビューションに対しては DBD::mysqlを構築しようとはしないでください:どちらも動きません!

Cygwinの下でコンパイルされた'libmysqlclient.a'を得るためには、 Cygwinの下でMySQLクライアントを、あなた自身がコンパイルしなければいけません。 本当です!このライブラリとヘッダ・ファイルだけが必要になります。 クライアントの、その他の部分は必要ではありません。 Windowsバイナリを使い続けてください。そして(現時点では)MySQLサーバー部分を 構築しようとはしないでください。MySQL ABは主流となっているオペレーティング・ システムのために最適化されたバイナリを配布するという素晴らしい仕事を おこなっているので、それは必要ありません。そしてCygwinの下で コンパイルされたサーバーは不安定であるといわれています。

(まだ行っていなければ)MySQLのインストール

Cygwinの下でのMySQLクライアントの構築:

私の環境では'mysql'クライアントは単なるRETURNを受け取らないという ことに注意してください。私はコマンドを送信するためにCTRL-RETURNを 使う必要があります ... 妙ですね。 しかし私はライブラリとヘッダを構築することだけに興味があるので、 これを治そうとはしていません。

'mysql>' プロンプトで簡単にチェックしてください:

  mysql> use mysql
  mysql> show tables;
  mysql> select * from db;
  mysql> exit

これでDBD::mysqlを構築する準備ができました!

DBD::mysqlの構築:

注意:

これはMySQLバージョン3.23.54aとDBD::mysqlバージョン2.1022でテストしました。 私は上記で示したテスト・スクリプトにパッチをあて、そのパッチをDBD::mysqlの 作者Jochen Wiedmanに送付しました。

Georg Rehfeld 15. Jan. 2003

既知の問題

  1. )

    いくつかのLinuxディストリビューションはデフォルトではgzipライブラリが ついてきます。"make"の実行は以下のようなエラーメッセージで終わります

      LD_RUN_PATH="/usr/lib/mysql:/lib:/usr/lib" gcc
        -o blib/arch/auto/DBD/mysql/mysql.so  -shared
        -L/usr/local/lib dbdimp.o mysql.o -L/usr/lib/mysql
        -lmysqlclient -lm -L/usr/lib/gcc-lib/i386-redhat-linux/2.96
        -lgcc -lz 
      /usr/bin/ld: cannot find -lz
      collect2: ld returned 1 exit status
      make: *** [blib/arch/auto/DBD/mysql/mysql.so] Error 1

    もしこうなるのであれば、libz-devel, libgz-devel, zlib-devel あるいはgzlib-develのようなRPMアーカイブをインストールしてください。

  2. )

    もしPerlがgccやegcsでコンパイルされていて、MySQLが他のコンパイラ あるいは他のシステムでコンパイルされていれば、"Make test"を実行したときの エラー・メッセージは以下のものに非常に良く似ていることでしょう:

      t/00base............install_driver(mysql) failed: Can't load
      '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql:
      ../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol: _umoddi3
      at /usr/local/perl-5.005/lib/5.005/i586-linux-thread/DynaLoader.pm
      line 168.

    これは、あなたのリンカーにはlibgcc.aが入っていないことを意味します。 以下の選択が可能です:

    解決方法はlibgccを使うようにリンカーに伝えることです。 libgcc.aの正確な場所を判定するために以下のように実行してください

      gcc --print-libgcc-file

    あるいはgccの古いバージョンでは、ディレクトリを判定するために

      gcc -v

    もしディレクトリを知っていれば、以下のフラグを

      -L<directory> -lgcc

    Cコンパイラ・フラグに追加して下さい。/構成設定. /リンカー・フラグ.

  3. )

    Linuxマシンのなかにはlibmysqlclientのシェアード・バージョンでは 問題があることがわかっています。以下のようなエラーメッセージを 受け取ったならば

      install_driver(mysql) failed: Can't load
      '/usr/lib/perl5/site_perl/i586-linux/auto/DBD/mysql/mysql.so'
      for module DBD::mysql: File not found at
      /usr/lib/perl5/i586-linux/5.00404/DynaLoader.pm line 166

    このエラーメッセージは誤解を招くかもしれません:これはmysql.soの ロードが失敗しているのではなく、libmysqlclient.soなのです! 通常、このファイルが以下のようなリンカーが探さないディレクトリに あることが問題になります

      /usr/lib/mysql

    もっともよい解決は静的にリンクされたmysqlclientを使うことです。 例えば

      /usr/lib/mysql/libmysqlclient.a

    このファイルに対してリンクするよう

      -L/usr/lib/mysql -lmysqlclient

      /usr/lib/mysql/libmysqlclient.a

    にリンカー・フラグの並びで置き換えることによって強制することができます。 /構成設定. /リンカー・フラグ.

サポート

最終的に他の全てが失敗したならば、あなた一人ではありません。 まず最初に、即時の回答はメーリングリストmsql-mysql-modules@lists.mysql.com のアーカイブを見ることです。アーカイブの場所はhttp://www.mysql.comを ご覧ください。

メーリングリストに適切な投稿や回答が見つからなければ、 質問を投稿してください。典型的には1あるいは2日で回答が あるでしょう。