初出:SoftwareDesign 2000/6月号 「特集 フリーDBMSの決定版 PostgreSQL大全」 『Plamo Linux の PostgreSQLパッケージ』 くわむらじゅん juk@yokohama.email.ne.jp 【はじめに】 Plamo LinuxへのPostgreSQL+PHP+Apacheの パッケージのコントリビュートも、早いもの で3年目となりました。その間にPostgreSQL のリリースも6.2から6.5へと変わり、この記 事を皆様が読まれるころには、7.0 が公式リ リースとなっているはずです。この間、 SQL92への準拠も充実してきてますし、当初 パッチであった日本語の検索のための正規表 現やマルチバイト拡張が本体に採り入れられ るなど国際化も着実に進んできています。ま た、国内でのPostgreSQLを取り巻く環境も、 Linux に代表される OpenSource の人気の高 まりとともに、日本ポストグレスユーザ会が 設立されたり、企業による商用のサポートが 始まったりと大きく変化してきました。 [脚注] SD誌でも石井達夫氏による紹介をきっかけ に、1998年12月号と1999年1月号の特集記事 で取り上げられ、ムックの「すみからすみま でLinux」にも収載されています。また、石 井達夫氏著「PC UNIXユーザのための PostgreSQL完全後略ガイド」には Plamo Linux の CDROM が付録となっています。 Plamo LinuxはSlackware3.xをベースにこじ まみつひろさんの個人的な趣味と研究の材料 として、1FDブートやノート用のインストー ルセット、初心者向けお奨めパッケージ選択 など様々な実験に使われてきました。その中 でも特に日本におけるLinuxディストリビュー ションに影響を与えたのが地域化(L10N)、す なわち、日本語化でした。現在は、glibc2 国際化(I18N)ライブラリの試験実装のプラッ トホームともなっていて、そのPlamo Linux 2.0のリリースも間近です。 [脚注] glibc-2.1 の2バイトNLS(Native Language Support)に日本語localeを実装するための Linux 研究会 NLS 分科会 http://sv.linuxjp.org/Project/index.html をはじめ、 LI18NUX という Linux 国際化ワー キンググループ http://www.li18nux.org/も 1999年9月に立ち上がっています。 筆者が PostgreSQLとその関連パッケージ で Plamo Linux に貢献をはじめたのも個人 的な趣味でした。フリーソフトウェアをソー スコードから make して install し、それ から使いはじめるというのは、ごくあたりま えのことですが、筆者のようにあちこち(会 社と自宅の端末)に何度も make install す るのはとても退屈なことです。複数の相互関 係を持つプログラムだったり、設定を必要と するサーバプログラムだとなおさらうんざり します。DBMSはまさにそういう類のプログラ ムで、初心者にとっては利用に至るまでのハー ドルが高過ぎるような気がしていました。同 じようなことを、さらに、何人もの人がする ことを考えると、パッケージにすることによ りその無駄がずいぶん減ると思いついたのは 当然のなりゆきだったのでしょう。逆の立場 になれば、ちょっと使ってみたくなったプロ グラムがコマンド一つでインストールできる のでとても助かります。自分で普段よく使う プログラムは自分でパッケージにして、その 他はだれかがパッケージしてくれたのを使う ことが気軽にできるのが Plamo Linux の良 さです。 [脚注] Plamo Linux については、 http://www.linet.gr.jp/~kojima/Plamo/ にその情報があります。Plamo Linux版 PostgreSQLパッケージの情報は、 http://www.linet.gr.jp/~juk/plamo/ です。 【特徴】 Plamo Linux (以下 Plamo)の PostgreSQL パッケージの特徴の一つは、初期のころより Webとの連携を意識した構成にして、連係に 使うPHP サーバサイドスクリプトと Apache Webサーバとを PostgreSQL 用のパッケージ として用意したことです。 PostgreSQL6.2+PHP/FI2.0+Apache1.2で始め たころのパッケージでは、Apacheのモジュー ルとして PHP/FI をリンクしていたため、 Apache は単体では動かず、PHPやPostgreSQL のライブラリを必要とし、まさに実験的なパッ ケージで汎用のLinux配布キットにバンドル することは考え難いことでしたが、Plamoの おかげでそれが実現しました。 Apache がDSO(Dynamic Shared Object)を サポートするようになってからは、Apacheを 単体でインストールしておき、あとからPHP3 モジュールをインストールすることが可能と なりましたので、Apache の独立性は確保で きるようになりました。最新のパッケージで は、PHP国際化チームによる日本語化パッチ の当てられた PHP-3.0.15j-i18n-ja に PostgreSQL, GDBM, GD-1.8.1 等のライブラリ をリンクした構成となってますが、その他の 外部ライブラリを利用したい場合は再インス トールが必要となります。 二つ目の特徴は、できるだけ日本語化され た内容を盛り込んだことでした。Postgres和 訳プロジェクトで日本語化されたマニュアル の他、かつては、共有ライブラリ化された gawkの日本語正規表現をリンクしたりして、 できるだけ日本語の情報を盛り込むようにし ました。日本語化は、ちょうど Plamo が指 向していたところでもありました。現在、日 本語の文書として、FAQ和訳, 和訳チュート リアル、PostgreSQL和訳プロジェクトによる の和訳文書などを収めてます。 もう一つの特徴は、インストール・コマン ド(installpkg)一発で始められるようにイン ストーラを記述したことです。インストール してすぐに利用可能になっているため、サン プル・アプリケーションをすぐに試すことが できます。石井達夫氏による郵便番号検索の pgpost やイメージデータ記録のできる pgimage は本当はサンプルではなく、実際に 役立つアプリケーションなので、これらがす ぐに利用可能な状態にあることは新たな価値 を加えることにもなると思いました。 もう一つ付け加えるとすれば、月並ではあ りますが、アプリケーション開発用の利用を 前提として色々なプログラミング言語のイン ターフェースを用意してあることです。C, C++ のライブラリはもちろん、Perl, Python, Tcl/Tk, Ruby のモジュールODBC, JDBC ドライバ、ecpg 埋め込みSQLプリプロ セッサ、pl/sql, pl/tcl ストアド・プロシ ジャなどが用意されています。Webとの連係 のために、既に述べた、サーバサイドスクリ プトの書けるPHP3ハイパーテキスト・プリプ ロセッサとApacheウェブサーバもパッケージ として用意してます。Perl に関してはは PostgreSQL 標準の Pg モジュールの他に、 Perl DBI とともに DBD-Pg ドライバも用意 してあります。ユーザインターフェスのフロ ントエンドプログラムは、PostgreSQL標準 CUI の psql およびその日本語版(psqlj)、 GUI の pgacess の他、最新のパッケージに はbashコマンドラインから直接PostgreSQLに 問い合わせができる pgbash シェルも用意し てあります。 [脚注] 最新版では、PostgreSQL-6.5.3に有用と思 われるパッチを当て、--with-mb=EUC_JP オ プションにて構成してあります。パッチは、 石井氏の保守する(株)SRAのFTPサイトにある: rtree.patch, lock.patch, xid.patch, ecpg.patch, vacuum.patch, date.patch (remove_prosrc_idx_6.5.2.diff は DBの互換を維持するために当ててません) と、 psql, pgaccess, odbc の日本語パッチ、ならびに、インターウィズ の片岡氏による rtree 拡張を含むパッケージ geometric です。 これらのパッチ類は、 ftp://ftp.sra.co.jp/pub/cmd/postgres/6.5.3/patches/ http://www.interwiz.koganei.tokyo.jp/software/geometric/ http://www.linet.gr.jp/~juk/plamo/parts/srcs/dbms/pgsql/653/ で見つかります。 【入手/導入】 PostgreSQL パッケージを含む Plamo の入 手は、 ftp://ftp.linet.gr.jp/pub/Plamo/ もしくは、 ftp://plamo.linet.gr.jp/pub/ からダウンロードできます。あるいは、石井 達夫氏著の『PostgreSQL完全ガイド』や雑誌 の付録になったものを入手可能です。また、 http://www.linux4u.net/では有償 で各種LinuxキットのCDROM配布サービスを行 なっていて、ここでも Plamo の入手が可能 です。 Plamo の PostgreSQL 関係パッケージには 以下のようなものがあります。 PostgreSQLパッケージ類: contrib/Database/ + pgsql653+.tgz -- 本体パッケージ + pgsql653-contrib.tgz -- contrib パッケージ(+geometory) + pgsql653-pgaccess.tgz -- PgAccess フロントエンドGUI + pgsql653-odbc.tgz -- Linux ODBC ドライバ + pgsql653-perl5.tgz -- Perl5 Pg-1.8.1 モジュール + pgsql653-python.tgz -- Python-1.5 PyGreSQL-2.4 モジュール + pgsql653-pgbash2.tgz -- pgbash-2.0.1 組み込み Bash-2.0.3 + pgsql653-jdbcce.tgz -- 文字エンコードJDBCドライバ Perl5 DBI モジュールパッケージ類: contrib/Database/Perl5/ + DBI113.tgz -- Perl5 DBI(DataBase Interface)モジュール + DBDPg093.tgz -- Perl5 PostgreSQL DBD(DataBase Driver)モジュール 以下はDBI:Proxy関係 + PlRPC02012.tgz -- Perl RPC (Remote Procedure Call) + NetDaemon028.tgz -- ポータブル・サーバー用のクラス + Storable065.tgz -- データ整合性のための拡張 + CompressZlib106.tgz -- zlib 圧縮ライブラリのインターフェース アプリケーションパッケージ類: contrib/Database/Sample/ + pgbench11.tgz -- PostgreSQLトランザクションベンチマーク + pgimage12.tgz -- PHP連係画像管理システム Web UI + pgpost132+.tgz -- 郵便番号検索(大口事業所付き)Web UI Web との連携用パッケージ類: contrib/WWW/ + apach1312.tgz -- Apacheウェブサーバー + php3015j.tgz -- PHP3ハイパーテキスト・プリプロセッサ3.0.15-i18n-ja + gd181j.tgz -- PNG作製高速グラフィクス・ライブラリ GD-1.8.1 + gdbm180.tgz -- Gnu DBM ライブラリglibc2版 + w-agora301.tgz -- W-AGORA ウェブ掲示版システム そうして、インストールの順番は: 0. contrib/WWW/*.tgz 1. contrib/Database/*.tgz 2. contrib/Database/Perl5/*.tgz 3. contrib/Database/Sample/*.tgz のようにしてください。 Plamo Linux をインストールして再起動後、 CDROM をマウントし、installpkg コマンド で個々のパッケージをインストールするか、 あるいは、pkgtool を各ディレクトリ毎に起 動して、ユーザインターフェースからインター ラクティブにパッケージのインストールを選 択するかが可能です。 たとえば、pgsql653+.tgz を installpkg を使ってインストールする場合は、 # mount /cdrom # cd /cdrom/contrib/Database # installpkg pgsql653+.tgz のようにコマンドを入力します(cd しなくて もパッケージファイルの正しいパス名を指定 すれば大丈夫です)。pkgtool を使ってイン ストールする場合は、 # mount /cdrom # cd /cdrom/contrib/Database # pkgtool とすると、文字端末上で全画面のインターフェー スが立ち上がりますので、表示に従ってキー を押してインストールをします。pkgtoolの 場合、指定したディレクトリのすべてのパッ ケージについてインストールするかどうかの 確認をしてきます。 [脚注] たいていの場合、Plamo Linux のインストー ルは CDROM からブートした後 root でログ インして setup コマンドを実行すると、文 字端末上の全画面メニューによるインストー ラからインターラクティブに行なえます。お 奨めセットを選択すると基本的なインストー ルは30分程度で完了するでしょう。 【終わりに】 手身近に Plamo Linux 版 PostgreSQLとそ れに関するパッケージについてご説明しまし た。既に7.0もリリースとなりました。 PostgreSQL単体でのバイナリアーカイブは既 につくってありますので、試してみたい方は そちらもどうぞ。デフォルトの設定で、イン ストール済みのパッケージと共存できるよう に、デフォルトポート番号を 7654 に変えて あります。これから、7.0 ベースで新たにパッ ケージセットをつくり始めることになります が、皆様のご意見ご要望をお聞かせいただけ ればと思います。