PC UNIX の種類に応じて各種 PostgreSGL パッケージが用意されています.本章では,それぞ れのパッケージの特徴とその入手/導入の方法を個別に解説します. Linux RPM 編 ●渋谷寿夫 SHIBUYA Hisao E-mail : shibuya@alpha.or.jp 筆時点では7.0 beta5のパッケージが出ています. はじめに 特徴 RPM とは Red Hat Package Manager のことです. Red Hat という言葉が入っていますが,GPL のもと RPM 版 PostgreSQL は現在 Lamar Owen 氏によっ で公開されているパッケージを管理するためのソ てメンテナンスされており注1,本家FTPサイトより フトウェアです.RPM を利用することができる 取得可能です.筆者がメンテナンスしている日本語 Linux のディストリビューションには Red Hat 対応版の主な特徴は- - with-mb=EUC_JP(7.0 では- - Linux,LASER5 Linux,Vine Linux,Kondara enable-multibyte=EUC_JP)オプションを付けて MNU/Linux などがあります.RPM で提供される configureすることによりデータベース中に日本語を パッケージには,ソースコードから簡単に再構築 利用することが可能になっています.それ以外には できるソースコード形式と簡単にインストール/ ㈱ SRA の石井氏のサイト注 2 にある jumbopatch の適 アップグレードできるバイナリ形式があります. 応,pgaccessのkinput2対応,psqlの日本語版(psqlj) ここでは RPM を利用して,PostgreSQL を実際にイ の導入が元のパッケージから変更している,といっ ンストールし利用するまでの方法を説明します. た特徴があります.現在公開されている RPM 版で 筆者が PostgreSQL のパッケージを VinePlus など はインストール後のデータベースの初期化が自動で に提供し始めたきっかけは,Cobalt などの Red Hat 行われるようになっており,すぐにデータベースを LinuxベースのサーバでPostgreSQLを使う必要があ 使うことが可能となっています.また,PostgreSQL ったことです.本誌'99年 5月号の特別企画「Cobalt 標準のインストールとディレクトリ構成が大きく異 をもっと使いこなす」でも RPM を使ったカスタマ なるため,通称「シーラカンス本注 3」などの PATH イズ方法を執筆しましたが,どうせなら RPM 化し は読み替える必要があります. て公開しようということで作成しました.当時は 6.4 をベースに作成していましたが,早いもので執 RPM でインストールされるファイルのディレク トリ構成を表 1に示します. 注 1)http://www.ramifordistat.net/postgres/ 注 2)ftp://ftp.sra.co.jp/pub/cmd/postgres/6.5.3/patches/ 注 3) 『改訂版 PU UNIX ユーザのための PostgreSQL 完全ガイド』/石井達夫/技術評論社/ ISBN4-7741-0890-1 58 - Software Design c h a p t e r 6 ●表 1 インストールされるファイルのディレクトリ構成 /usr/bin 実行ファイル(postmaster,psql,postgres など) /usr/lib ライブラリ(ibpq.so,libpgtcl.so など) /usr/lib/pgsql PGLIB に設定するディレクトリ /var/lib/pgsql PGDATA に設定するディレクトリ(データベースが格納されています) /usr/doc/postgresql-{version} ドキュメント ●表 2 glibc のバイナリパッケージ入手先 ●図 1 glibc のバージョンチェック glibc 2.0 http://alpha.or.jp/Vine/VinePlus/ glibc 2.1 http://alpha.or.jp/Vine/VineSeed/ $ rpm -q glibc glibc-2.1.2-17vl2 glibc-2.0.7-29 [glibc 2.1]Vine 2.0beta2 [glibc 2.0]Vine 1.1 もしすでに postgresql が存在した場合は rpm -e 入手/導入 を実行して,インストール済みのパッケージをア ンインストールします注 6. インストールはパッケージの中から必要なもの 現在巷で使われているLinuxはglibcのバージョン 注4 によって大きく 2 つに分けることができます . を選択することができます.postgresql-6.5.3_ jp-2 Red Hat Linux 5.xベースのものと6.xベースのものが .i386.rpm をインストールする場合は, あり,5.xで作成したバイナリパッケージは 6.xでは 利用できない場合があります.今お使いの glibc の # rpm -ivh postgresql-6.5.3_jp-2.i386.rpm バージョンによって適切なバイナリをダウンロード とするとインストールできます.PostgreSQL を利 してください.glibcのバージョンを調べるには図1 用するには, のように実行します.バイナリパッケージは表2の URL から入手してください.他には ftp://ftp. ¡postgresql-6.5.3_jp-2.i386.rpm ¡postgresql-server-6.5.3_jp-2.i386.rpm vinelinux.org/の VinePlus,VineSeed 内にもあり ますので近くのミラーサイトから入手可能です. の 2つのパッケージが必要です. 入手可能な PostgreSQL のファ イル群とパッケージの中身は表 3 ●表 3 PostgreSQL のファイル群とパッケージの中身 postgresql-6.5.3_jp-2.i386.rpm クライアントプログラムやライブラリ postgresql-server-6.5.3_jp-2.i386.rpm データベースの作成や実行に必要なサーバなど postgresql-devel-6.5.3_jp-2.i386.rpm ヘッダファイルやライブラリ postgresql-tcl-6.5.3_jp-2.i386.rpm pgaccess などの Tcl ベースのプログラム すでにお使いのシステムに postgresql-odbc-6.5.3_jp-2.i386.rpm ODBC ドライバとサンプルファイル PostgreSQL がインストールされ postgresql-jdbc-6.5.3_jp-2.i386.rpm JDBC 用 jar ファイル postgresql-perl-6.5.3_jp-2.i386.rpm Perl ベースのプログラムとライブラリ $ rpm -qa | grep postgresql postgresql-python-6.5.3_jp-2.i386.rpm Python ベースのプログラムとライブラリ $ ls /var/lib/pgsql postgresql-test-6.5.3_jp-2.i386.rpm regression test用パッケージ 注5 の通りです . 新規インストール まず,インストールする前に, ているかチェックします. 注 4)libc ベースの Red Hat Linux 4.x をお使いの人もいると思いますが,現状では 5.x ベースか 6.x ベースが大半だと思います. 注 5)Vine Linux 2.0CR Official 製品版には残念ながら筆者が作成したパッケージは含まれていません. 注 6)詳細は http://www.ramifordistat.net/postgres/rpm_install.html を参照. Jun. 2000 - 59 データベースの初期化は, で削除します.このあと, # /etc/rc.d/init.d/postgresql start $ rpm -ivh[パッケージ名] とすることで initdb を自動で行い,postmaster を起 で新しいパッケージをインストールします. 動します.後は psql template1 で動作確認をしてく ださい. バージョンアップ [6.4.2 の場合] ディレクトリを移動します. $ cd /var/lib; cp pgsql pgsql.orig すでに Red Hat 5.2 や 6.x に付いている RPM 版の PostgreSQL からアップグレードするには,インス トールされているバージョンによって2 つの方法に つづいて, $ rpm -Uvh 分かれます. Red Hat 6.1などに含まれるメジャーバージョンが 同じ場合(たとえば6.5から6.5.3)は rpm -Uvh でア ップグレードするだけで終了です.Red Hat 5.2など のメジャーバージョンが違う場合は pg_dumpall/ initdb/psql -e template1 < db.bak の手順でバックアッ で新しいパッケージにアップグレードしたあと, データベースフォーマットの変換を行います. $ initdb --pglib=/usr/lib/pgsql --pgdata= /var/lib/pgsql) (実際は 1 行です) プしたデータを新しいデータベースに戻す必要があ ります.実際の手順は以下の通りです注7. 最後に,どちらのバージョンも, “postgres”ユー ザで まず,“postgres”ユーザで下記のコマンドを実 行します. $ psql -e template1 <db.bak $ pg_dumpall > db.bak でバックアップしてあるデータを戻します(マイ $ /etc/rc.d/init.d/postgresql stop ナーバージョンアップの場合は必要ありません) . 以下の作業は,バージョンによって違うので, おわりに 注意してください. [6.3.2 の場合] ディレクトリを移動します. $ cd /var/lib/; mv pgsql pgsql.orig つづいて,postgresql rpms をアンインストール します. $ rpm -qa|grep postgres を実行して見つかったものをすべて $ rpm -e[該当ファイル名] 駆け足で RPM 版 PostgreSQL について説明しま した.これから利用されるかたにはインストール の手間を軽減する良い手段だと思います.すでに 別のバージョンの PostgrSQL が動作しているかた は,アップグレードの際にはしっかりバックアッ プを取って作業を開始するようお願いします. 筆者はこの原稿を書き上げてから 7.0 のパッケー ジ化に本格的に取りかかりますので,ご意見ご希 望をお聞かせいただければと思います.きっと, 本誌が書店に並ぶころには,6.5.3 と 7.0 のパッケー ジが提供できていることでしょう. 注 7)詳細は http://www.ramifordistat.net/postgres/rpm_upgrade.html を参照. 60 - Software Design c h a p t e r 6 Plamo Linux 編 ●くわむらじゅん KUWAMURA Jun E-mail : juk@yokohama.email.ne.jp make して install し,それから使いはじめるという はじめに のは,ごくあたりまえのことですが,筆者のよう にあちこち(会社と自宅の端末)に何度も make, Plamo Linux への PostgreSQL + PHP + Apache の パッケージのコントリビュートも,早いもので 3 年 注8 目となりました . install するのはとても退屈なことです. 相互関係を持つ複数のプログラムだったり,設 定を必要とするサーバプログラムだとなおさらう その間に PostgreSQL のリリースも 6.2 から 6.5 へ んざりします.DBMS はまさにそういう類のプロ と変わり,この記事を皆さまが読まれるころには, グラムで,初心者にとっては利用に至るまでのハ 7.0 が公式リリースとなっているはずです.この間, ードルが高過ぎるような気がしていました. SQL92 への準拠も充実してきていますし,当初パ 同じようなことを,さらに何人もの人がするこ ッチであった日本語の検索のための正規表現やマ とを考えると,パッケージにすることによりその ルチバイト拡張が本体に採り入れられるなど国際 無駄がずいぶん減ると思いついたのは当然のなり 化も着実に進んできています(Appendix1 を参照) . ゆきだったのでしょう.逆の立場になれば,ちょ また,国内での PostgreSQL を取り巻く環境も, っと使ってみたくなったプログラムがコマンド1 つ Linux に代表されるオープンソースの人気の高まり でインストールできるのでとても助かります.自 とともに,日本 PostgreSQL ユーザ会が設立された 分で普段よく使うプログラムは自分でパッケージ り,企業による商用のサポートが始まったりと大 にして,その他はだれかがパッケージしてくれた きく変化してきました. ものを使うといったことが気軽にできるのが, Plamo Linux は Slackware 3.x をベースにこじまみ Plamo Linux の良さです注 10. つひろ氏の個人的な趣味と研究の材料として, 1FD ブートやノート用のインストールセット,初 入手/導入 心者向けお勧めパッケージ選択などさまざまな実 験に使われてきました.その中でとくに日本での PostgreSQL パッケージを含む Plamo Linux(以下 Linux ディストリビューションに影響を与えたのが Plamo)の入手は,ftp://ftp.linet.gr.jp/ 地域化(L10N) ,すなわち日本語化でした. pub/Plamo/もしくは,ftp://plamo.linet.gr. 現在は,glibc2 国際化(I18N)ライブラリの試験 jp/pub/からどうぞ.あるいは,石井達夫氏著の 実装のプラットフォームともなっていて,その 『改訂版 PC UNIX ユーザのための PostgreSQL 完全 Plamo Linux 2.0 のリリースもそろそろです注9. 攻略ガイド』や雑誌の付録などから入手可能です. 筆者が PostgreSQL とその関連パッケージで また,http://www.linux4u.net/では有償で各種 Plamo Linux に貢献をはじめたのも個人的な趣味で Linux キットの CD-ROM 配布サービスを行ってい した.フリーソフトウェアをソースコードから て,ここでも Plamo の入手が可能です. 注 8)「PostgreSQL + PHP + Apache」の組み合わせによる利用法については 3 章を参照してください.また Plamo へのコントリビュー トは石井達夫氏による紹介をきっかけに,本誌'98 年 12 月号と'99 年 1 月号の特集記事でも取り上げられ,本誌別冊『すみからすみ まで Linux』にも収録されています.石井達夫氏著『PC UNIX ユーザのための PostgreSQL 完全攻略ガイド』(ISBN4-7741-0890-1) には Plamo Linux の CD-ROM が付録となっています. 注 9) glibc-2.1 の 2 バ イ ト NLS( Native Language Support) に 日 本 語 locale を 実 装 す る た め の Linux 研 究 会 NLS 分 科 会 (http://sv.linuxjp.org/Project/index.html)をはじめ,li18nux という Linux 国際化ワーキンググループ(http://www.li18nux.org/)も'99 年 9 月に立ち上がっています. 注 10)Plamo Linux については,http://www.linet.gr.jp/~kojima/Plamo/にその情報があります.Plamo Linux 版 PostgreSQL パッケージの 情報は,http://www.linet.gr.jp/~juk/plamo/を参照してください. Jun. 2000 - 61 ●表 4 Plamo Linux の PostgreSQL 関連パッケージ PostgreSQL パッケージ類(contrib/Database/) ② contrib/Database/*.tgz ③ contrib/Database/Perl5/*.tgz 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 モジュール をマウントし,installpkg コマンドで個々のパッケ pgsql653-python.tgz Python-1.5 PyGreSQL-2.4 モジュール ージをインストールします.あるいは,pkgtool を 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(DataBaseDriver) モジュール <以下は 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/) ④ contrib/Database/Sample/*.tgz のようにしてください注 11. Plamoをインストールして注 12 再起動後,CD-ROM トールを選択することも可能です. たとえば,pgsql653+.tgz を installpkg を使ってイ ンストールする場合は, # mount /cdrom # cd /cdrom/contrib/Database # installpkg pgsql653+.tgz のようにコマンドを入力します(cd しなくてもパ ッケージファイルの正しいパス名を指定すれば大 丈夫です).pkgtool を使ってインストールする場 合は, # mount /cdrom # cd /cdrom/contrib/Database # pkgtool apach1312.tgz Apache Web サーバ 1.3.12 とすると,文字端末上で全画面のインターフェー 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 Web 掲示版システム してインストールをします.pkgtool の場合,指定 インストールするかどうかの確認をしてきます. 特徴 Plamo の PostgreSQL 関係パッケージには表 4 の ようなものがあります. そして,インストールの順番は, ① contrib/WWW/*.tgz Plamo の PostgreSQL パッケージの特徴の 1 つは, 初期のころより Web との連携を意識した構成にし て,連携に使う PHP サーバサイドスクリプトと ApacheWeb サーバとを PostgreSQL 用のパッケージ 注 11)PHP,GD は TTF,ZLIB,PNG,JPEG,Xpm などのライブラリを使っていますが,すべて Plamo のお勧めインストールで組み 込まれているはずです(plamo/xap1/freetype.tgz や plamo/xap1/libgr.tgz などです). 注 12)たいていの場合,Plamo Linux のインストールは CD-ROM からブートしたあと root でログインして setup コマンドを実行すると, 文字端末上の全画面メニューによるインストーラからインタラクティブに行えます.お勧めセットを選択すると基本的なインスト ールは 30 分程度で完了するでしょう.誌面に収まらなかったインストール直後のローカルサイトのインデクスページが http:// www.linet.gr.jp/~juk/plamo/sample/にあります. 62 - Software Design c h a p t e r 6 として用意したことです.PostgreSQL 6.2 + PHP/ のできる pgimage は本当はサンプルではなく,実 FI2.0 + Apache 1.2 で始めたころのパッケージでは, 際に役立つアプリケーションなので,これらがす Apache のモジュールとして PHP/FI をリンクして ぐに利用可能な状態にあるということは新たな価 いたため,Apache は単体では動かせませんでした 値を加えることにもなると思いました. (3 章を参照).PHP や PostgreSQL のライブラリを あえて付け加えるとすれば,月並ではありますが, 必要とする,まさに実験的なパッケージで、汎用 アプリケーション開発用の利用を前提としていろい の Linux 配布キットにバンドルすることは考えにく ろなプログラミング言語のインターフェースを用意 いことでしたが,Plamo のおかげでそれが実現し してあることです.C,C++ のライブラリはもちろ ました. ん,Perl,Python,Tcl/Tk,Ruby のモジュール, Apache が DSO(Dynamic Shared Object)をサポ ODBC/JDBCドライバ,ecpg埋め込みSQLプリプ ートするようになってからは,Apache を単体でイ ロセッサ,pl/pgsql,pl/tclストアドプロシージャな ンストールしておき,あとから PHP3 モジュールを どが用意されています.Webとの連携のために,す インストールすることが可能となりましたので, でに述べたサーバサイドスクリプトの書ける PHP3 Apache の独立性は確保できるようになりました. ハイパーテキストプリプロセッサと Apache Web サ 最新のパッケージでは,PHP 国際化チームによる ーバもパッケージとして用意してます.Perl に関し 日本語化パッチの当てられた PHP-3.0.15j-i18n-ja に ては PostgreSQL 標準の Pg モジュールのほかに, PostgreSQL,GDBM,GD-1.8.1 などのライブラリ Perl DBI とともに DBD-Pg ドライバも用意してあり をリンクした構成となってますが,そのほかの外 ます.ユーザインターフェースのフロントエンドプ 部ライブラリを利用したい場合は再インストール ログラムは,PostgreSQL 標準 GUI の psql およびそ が必要となります. の日本語版 psqlj,GUI の pgacess のほか,最新のパ 2 つ目の特徴は,できるだけ日本語化された内容 ッケージには bash コマンドラインから直接 を盛り込んだことです.PostgreSQL 日本語ドキュ PostgreSQL に問い合わせができる pgbash シェルも メントプロジェクトで日本語化されたマニュアル 用意してあります(2章を参照)注13. のほか,かつては共有ライブラリ化された gawk の 日本語正規表現をリンクしたりして,できるだけ おわりに 日本語の情報を盛り込むようにしました.日本語 化は,ちょうど Plamo が指向していたところでも てみじかに Plamo Linux 版 PostgreSQL とそれに関 ありました.現在,日本語の文書として,FAQ 和 するパッケージについてご紹介しました.すでに 訳, 和訳チュートリアル,PostgreSQL 日本語ドキ 7.0 もリリースとなっていることでしょう(1 章を参 ュメントプロジェクトによる和訳文書などを収め 照).PostgreSQL 単体でのバイナリアーカイブはす ています(Appendix 2 を参照) . でに作ってありますので,試してみたいかたはそち もう 1 つの特徴は,インストールコマンド らもどうぞ.デフォルトの設定で,インストール済 (installpkg)1 発で始められるようにインストーラ みのパッケージと共存できるように,デフォルトポ を記述したことです.インストールしてすぐに利 ート番号を 7654 に変えてあります.これから,7.0 用可能になっているため,サンプルアプリケーシ ベースで新たにパッケージセットを作り始めること ョンをすぐに試すことができます.石井達夫氏に になりますが,皆さまのご意見ご要望をお聞かせい よる郵便番号検索の pgpost やイメージデータ記録 ただければと思います. 注 13)最新版では,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 です(4 章を参照).これらのパッチ類は,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/で見つかります. Jun. 2000 - 63 Debian GNU/Linux 編 ● Debian Project 武藤健志 Kenshi MUTO E-mail : kmuto@debian.org APT または Debian オフィシャル CD-ROM からイン はじめに ストールします.dselect から選択すると,libjpeg g6a,libreadlineg2 などのいくつかの依存,推奨パ ッケージも表示されます.必要に応じてインスト Debian にはじめて PostgreSQL のパッケージが収 ールしましょう. 録されたのは,コードネーム slink(Debian バージ postgresql パッケージをインストールすると,日 ョン 2.1)からです.このときの PostgreSQL は日本 語 EUC にも対応しているバージョン 6.3.2 で, 付の形式を European スタイルにするか American ス PHP3 などの PostgreSQL と連携可能なパッケージ タイルにするか尋ねられます. “e” (European)か も同時に収録されました.筆者も,PostgreSQL と “a” (American)のどちらかを入力して • を PHP の連携には非常に興味を持っていたこともあ 押すと設定が終了します. り,さっそくインストールして自著のサポートペ potato / woody の場合 ージなどに活用しています. 執筆時点でまだリリース準備段階のコードネー まず,/etc/apt/sources.list ファイルにパッケー ム potato(Debian バージョン 2.2)には,Postgre ジのダウンロード先を設定します.たとえば次の SQL バージョン 6.5.3 が収録されています.Debian ように指定します. Project は,リリース準備期間はバグ修正に専念し, deb ftp://ftp.jp.debian.org/debianwoody テストの未成熟な新しいバージョンは極力収録し main contrib non-free ない方針を取っていますので,potatoにはこのまま (実際は 1 行です) 6.5.3 を収録することになりそうです. ただ,リリース準備期間中でも,新たに作成さ ftp://ftp.jp.debian.org/debian/の代わり れた開発版ブランチ woody(Debian バージョン に表 5 に挙げたようなミラーサイト URL からも取 3.0 ?)には新しいバージョンの登録は許可されて 得できます.最も近いと思われるサイトを設定し いるので,こちらには PostgreSQL バージョン 7.0 ておくとよいでしょう. も正式に登場しだいパッケージとして収録される 設定が終わったら/etc/apt/sources.list ファイル でしょう. を保存し,次のコマンドを実行して,APT の情報 を更新します. 入手/導入 # apt-get update Debian のパッケージ管理能力については定評が ありますが,とくにパッケージ管理ツール APT は PostgreSQL のパッケージ名は,postgresql です. ●表 5 主な Debian アーカイブミラーサイト注 14 強力です.これさえ使えば,PostgreSQL の最新パ http://ring.asahi-net.or.jp/archives/linux/debian/debian ッケージのダウンロード,インストール,設定す http://sunsite.sut.ac.jp/pub/archives/linux/debian べてを半自動的に行えます. slink の場合 postgresql パッケージ(バージョン 6.3.2-15)を http://mirror.nucba.ac.jp/mirror/debian ftp://debian.softagency.co.jp/debian ftp://dennou-h.ees.hokudai.ac.jp/library/Linux/debian 注 14)http://www.debian.or.jp/Link.html により詳しい一覧があります. 64 - Software Design c h a p t e r 6 ライブラリは libpgsql2 パッケージとして別パ ●図 2 postgresql パッケージアップグレード時の警告 ッケージになっています.potato 以降では機 能ごとにパッケージが分割されており,psql コマンドや createdb コマンドなどのクライア ント系のファイルを集めたpostgresql-clientパ ッケージ,PostgreSQLに関するドキュメント の postgresql-doc パッケージ,プロシージャ Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: ecpg libpgsql2 libpgtcl pgaccess postgresql postgresql-client postgresql-contrib postgresql-doc postgresql-pl tcl8.0 tk8.0 The following NEW packages will be installed: ecpg libpgsql2 libpgtcl pgaccess postgresql postgresql-client postgresql-contrib postgresql-doc postgresql-pl task-database-pg tcl8.0 tk8.0 0 packages upgraded, 12 newly installed, 0 to remove and 15 not upgraded. Need to get 0B/4432kB of archives. After unpacking 13.1MB will be used. Do you want to continue? [Y/n] 言語 PL/pgSQL を追加する postgresql-pl パッ ケージ,いろいろな拡張を施すpostgresql-contribパ potato への変更点として,データベースを配置する ッケージといったものが用意されています. ディレクトリが/var/postgres/data/から/var/lib/ また,これらのいくつかのパッケージをまとめ postgres/data/に移動しています. てインストールする task-database-pg パッケージも このため,postgresql パッケージのアップグレー 用意されています.ここではこのパッケージをイ ドの時点で図2 のような警告が表示されます.とり ンストールする注 15 ことにしましょう.次のコマン あえずここは • を押して先に進みます.設 ドを実行します. 定のところでは,次のように/etc/postgresql/ # apt-get install task-database-pg 実行すると,このまま継続するか尋ねられます ので,• を押して継続しましょう. つづいて,postgresql パッケージの設定として, postmaster.init を置き換えるか尋ねられます.新し い形式になっているので, “y”と入力して • を押します. つづいて,古いバージョンのデータベースを新 しいバージョンに移行する作業を手作業で行いま 利用するエンコーディングを尋ねられます.日本 すが,パッケージのバグのため,/usr/share/doc/ 語を利用するのであれば,EUC_JP あるいは UNI postgresql/README.Debian.migration.gz のとおり CODE を指定します. にはきちんと動かないようです. 最後に利用する日付の形式を尋ねられます.こ そこで,次のような手順で移行作業を行います. こで指定するのはどれでもかまいません. これで設定は終わりです注 16. slink から potato / woody へ slink から potato および woody へのアップグレー ドは,かなり大幅な変更を要します.具体的には APT に potato あるいは woody へのダウンロード設 定を記述し,次のコマンドでアップグレードを実 行します. # apt-get update; apt-get dist-upgrade PostgreSQL は,バージョンが変わるとデータベ ースの互換性が失われます.また,slink から 手順 1 root 権限で,失われているシンボリックリンク を復旧します. # cd /usr/lib/postgresql/dumpall/6.3 # ln -s postgres postmaster 手順 2 postgres ユーザ権限になって,次のコマンドを実 行します. $ postgresql-dump -t db.out -dcilp $PGDATA/ ../data.save (実際は 1 行です) 注 15)ここでのインストール設定は,PostgreSQL 6.5.3 での手順ですが,7.0 の場合も大きな違いはないでしょう.APT のダウンロー ド先に「woody」を選択しているので,7.0 が登録されるとそれがインストール対象になります. 注 16)/etc/apt/sources.list の設定をそのままにしておくと,PostgreSQL 以外のパッケージもすべて woody からダウンロードします.こ れを避けたいときには,/etc/apt/sources.list から woody のダウンロード設定をコメントアウト(行頭に # を付ける)して,apt-get update を実行してから,ほかのパッケージのダウンロードを行ってください. Jun. 2000 - 65 ここで,データベースの移行を行ってよいか尋 ねられますので“y”と答えておきます. たとえばデフォルトではUNIX ソケット形式のみ の接続を許可する設定になっていますが,TCP/IP 形式での接続を許可するには,/etc/postgresql/ 手順 3 postmaster.init に「PGALLOWTCPIP=yes」を追加 カレントディレクトリにある db.out ファイルに はエンコーディングの設定がされていないので, します. PostgreSQL は,ユーザ名 postgres で操作します. 登録中にエラーが発生するかもしれません.ファ このユーザはパスワードロックされているので, イルの中で「データベース名 with encoding=' ';」に 一度 root になったあと,su postgres で成り替わっ なっている箇所を「データベース名 with encoding て利用します.不便なので,postgres ユーザの状態 ='EUC_JP';」 あ る い は 「 デ ー タ ベ ー ス 名 with で createuser コマンドを使って適当なユーザを作成 encoding='UNICODE';」のように変更します.もう したほうがよいでしょう. 1 度手順 2 を実行すると,正しくデータベースが登 録されます. また,デフォルトの設定ではローカルホストか らのアクセスを認証せずに許可しています.この ため,ローカルホストに悪意を持つユーザがいた 手順 4 場合,簡単な手口でデータベースを破壊,改ざん 正常にできたようなら,バックアップされてい る/var/postgresql/data.save/ディレクトリは消去し てかまいません. される可能性があります./etc/postgresql/ pg_hba.conf を適切に設定したほうがよいでしょう (認証を trust から crypt にするなど) . PostgreSQL の設定 特徴 インストールが終わると,サーバプログラム postmaster が起動します.もし,設定をあとから変更 圧倒的なパッケージ数を誇る Debian には, したくなったときには,/etc/postgresql/postmaster. PostgreSQL を取りまくさまざまなツール群もパッ initを編集し,次のコマンドを実行します. ケージ化されて収録されていますので,いろいろ # /etc/init.d/postgresql restart ●表 6 使ってみるとよいでしょう(表6) . PostgreSQL 関連ツール PHP3 PostgreSQL とは何かと縁のあるスクリプト言語 PHP3 ですが,PostgreSQL を扱うために php3-pgsql (Apache サーバサイドページモジュール用)と php3-cgi-pgsql(CGI 用)の 2 つのパッケージが用意されて います.また,PHP4 も収録しているので,これに対応した php4-pgsql パッケージも用意されています. Perl CGI プログラムなどでもよく使われるプログラミング言語 Perl ですが,PostgreSQL とのインターフェースも もちろん用意されています.libpgperl パッケージをインストールすると,Pg モジュールがインストールされ ます. C 言語 postgresql-dev パッケージをインストールすると,C 言語のプログラムから PostgreSQL を呼び出すためのヘ ッダファイルやリンクするライブラリファイルが用意されます.これらでもプログラムの開発は可能なのです が,ecpg パッケージもインストールすると,さらに簡単に PostgreSQL を操作できます. Tcl/Tk スクリプト言語 Tcl と GUI ツールコンポーネント Tk は通常セットで使われますが,この言語セットから PostgreSQL を呼び出すインターフェースが,libpgtcl パッケージとして用意されています.インストールする と,pgtclsh と pgtksh の 2 つのコマンドが/usr/lib/postgresql/bin/ディレクトリに入ります. Java Java インターフェースは,libpgjava パッケージとして用意されています. 66 - Software Design c h a p t e r 6 FreeBSD Ports / NetBSD Pkgsrc 編 ●ふくはらいちろう FUKUHARA Ichiro Email : ichiro@jp.postgresql.org ウェアをインストールするように試みます. はじめに 実際に Ports / Pkgsrc から構築するには,Ports / Pkgsrcの中の該当するディレクトリに移動し「make NetBSDの/etc/groupを眺めるとingresというエン 一発」だけでできてしまうのですが,あらかじめイ トリを見つけることができます.近ごろは Post ンストール直前までの状態を作り,このコンパイル greSQLというデータベースがFreeBSDやNetBSDな 作業さえ省略できる packageというのも存在します. どのUNIXライクなOSの上で問題なく動き業務にも この package を使うと,ユーザはコンパイル済みの 活用されるようになってきましたが,その昔 バイナリファイルと設定ファイルやドキュメントな PostgreSQL の元になったリレーショナルデータベー どをいきなりインストールできてしまうので大変便 スマネージメントシステム(RDBMS)がINGRES 注17 利です. さて,現在のところ FreeBSD Ports と NetBSD という名前だったのです. それでは,FreeBSD/NetBSDのPostgreSQLのイ PkgsrcともにPostgreSQL 6.5.3ベースで作成されてい ますが,内容が若干異なります. ンストール手順を解説します. FreeBSD Portsのほうは,${PORTSDIR}/database/ Ports / Pkgsrc について postgresqlと${PORTSDIR}/japanese/postgresqlの2種 類が存在します注 19.前者は日本語非対応注 20 ですが, FreeBSD や NetBSD などの UNIX ライクな OS で使 われる膨大な量のフリーソフトウェアは,そのほと 後者は日本語化されており,さらにODBCドライバ, Tcl/Tk,Perlモジュールを組み込むことができます. んどがソース形式で配布されています.それらを NetBSD Pkgsrcのほうは${PKGSRCDIR}/database/ FreeBSD や NetBSD で動かすためには,自分のシス postgresqlしかありませんが,これをそのまま使用す テムに合わせてソースを改変してコンパイルする作 ると ODBC ドライバ,Tcl/Tk,Perl モジュールが入 業が必要です.たとえば,複数の計算機に同じソフ っていない上にマルチバイト拡張もなされない素の トウェアをインストールするとしたら,従来はこれ PostgreSQL ができあがると思われます.これについ ら煩雑な作業を繰り返し行う必要がありました. ては対応版をsend-prしようと考えています. この手順をまとめて自動化したものが FreeBSDで 注18 のPortsであり,NetBSDでのPkgsrcです . 次にFreeBSDの packageについてですが,Postgre SQL は起動時に専用のユーザ ID /グループ ID で起 この Ports / Pkgsrc の中にはインターネット上に 動するので,あらかじめそのIDを作成しておく必要 存在する配布ファイルやそのパッチ,さらにインス があります.しかしそのIDがFreeBSDのインストー トールスクリプトやソフトウェアの簡単な説明など ル直後には作られていないため,結局手動もしくは も入っています.さらに目的のソフトウェアをイン PostgreSQL の Ports の構築途中で作らなければなり ストールする前に,システムにあらかじめ入ってい ません.この ID の作成を前提とした package を作る なければいけないようなプログラムがあったとする ことはできないので,FreeBSD の package には と,Ports/Pkgsrcはまずその関連付けられたソフト PostgreSQL はありません.一方,NetBSD のバイナ 注 17)INGRES のマスコットキャラクターとして亀が使われていたことより,'99 年設立した日本 PostgreSQL ユーザ会のマスコットにも亀が使われて います.INGRES 自体は現在でも商用版が発売されています. 注 18)実はソースコードから構築することは当然なことであり,逆に Ports / package ばかり使うのはあまり感心できません.しかし同じ作業ばかり 繰り返すことは効率性の面からも必ずしもよいことではないのも確かです.Ports システムにはシステムに合わせたパッチやツールが含まれてい て,中身を見るだけでも勉強になります.ぜひこういう面からも活用していただきたいと思います. 注 19)${PORTSDIR}とは,Ports システムのインストールされたディレクトリです.通常は/usr/ports を使用します. 注 20)正確にいえばマルチバイト拡張のオプションを指定するように書かれていない Ports であるということです. Jun. 2000 - 67 ●表 7 PostgreSQL 関連 Ports の一例 pgaccess pgaccess フロントエンド リ package には存在します.これは必要なグループ py-PyGreSQL Python-PyGreSQL モジュール IDなどが最初からあるからです. ruby-postgres Ruby モジュール p5-DBI Perl5 DBI モジュール p5-DBD-Pg Perl5 PostgreSQL DB ドライバモジュール インストール スクリプトは/usr/local/etc/rc.d/pgsql.sh にインス トールされます.次回再起動時から PostgreSQL が FreeBSD におけるインストール 自動で立ち上がります. このほかに PostgreSQL 関連 Ports も存在します 前述の通りFreeBSDに関してはpackageが存在し ないため,Ports によってソースから作成しなけれ (表7) . ばなりません.FreeBSDをインストールしたときに Ports システムをインストールしていない場合は, Portsシステムもインストールしてください. NetBSD におけるインストール NetBSD の場合もインストール方法は,Pkgsrc と FreeBSD の Ports システムをインストールする方 Binary Package の 2 つがあります.まずバイナリ 法はいくつかありますが,そのうち代表的なものを package を ftp://ftp.jp.netbsd.org/pub/Net あげてみます. BSD/packages/1.4.2/i386/databases/postgres ql-6.5.3.tgzから取得します. ● sysinstall これは FreeBSD をインストールするときのイン ターフェースと同じものを使って必要なソフトをイ # /usr/sbin/pkg_add postgresql-6.5.3.tgz を実行することによりインストールが完了します. ンストールするものです./stand/sysinstall を起動 次に Pkgsrc による方法ですが,最初に Pkgsrc を して,/usr/ports以下にPortsシステムをインストー インストールしなければなりません.配布ファイル ルできます. を表8のサイトから取得することをお勧めします. ● FTP して取得してもよいでしょう.更新された最新のツ とくに NetBSD-current の場合は,anoncvs を利用 まず,ftp://ftp.jp.freebsd.org/pub/FreeBSD/ リーを取得することができます.詳細は http:// branches/-current/ports.tar.gzを取得し,任意の www.jp.netbsd.org/ja/JP/Documentation/ 場所に展開します.ただし/usr/ports 以下に展開し anoncvs.htmlを参照してください.なお,取得した たほうが,のちにPATHを変更する手間がなくなり pkgsrc.tgz を展開すると,/usr/pkgsrc 以下に ます. NetBSD のPkgsrc システムが展開されます. 最後に/usr/pkgsrc/databases/postgresql に移動し 以上により FreeBSDの Portsシステムをインスト て,make→make installでインストールは完了です. ールできます. さいごに FreeBSDにおけるPostgresqlのインストール自体 は図3 のように実行すれば完了します.また,起動 ●図 3 FreeBSD システムによる PostgreSQL のインストール # cd /usr/ports/japanese/postgresql # make MULTIBYTE=EUC_JP, USE_TCL=yes, USE_PERL=yes, USE_ODBC=yes # make install 駆け足でFreeBSDとNetBSDにおけるインストー ル方法をまとめてみました.PostgreSQL 7.0 もリリ ースされたので,対応した Ports / Pkgsrc 作成の作 業を始めます.使いやすく高機能な ●表 8 NetBSD 用の Pkgsrc 入手先 1.4.2-RELEASE用 ftp://ftp.jp.netbsd.org/pub/NetBSD-1.4.2/source/sets/pkgsrc.tgz current用 ftp://ftp.jp.netbsd.org/pub/NetBSD/NetBSD-current/tar_files/pkgsrc.tar.gz 68 - Software Design PostgreSQLの普及のためにご意見をいた だきたいと思います. c h a p t e r 6 Windows NT バイナリ編 ゆたか ●谷田豊盛 TANIDA Yutaka E-mail : yutaka@hi-net.zaq.ne.jp にインストールしたものとして話を進めます.構 はじめに 成は図 4 のようになります. 次に,メニューに追加された cygwin B20 を実行 し,UNIX 環境として設定するためのディレクトリ PostgreSQL は 6.4 までは UNIX のみの対応となっ やファイルを用意します. ていましたが,6.5 からは Cygnus Solutions より提 供されている cygwin を利用した Windows NT Ports $ mkdir /etc が Daniel Horak をはじめとした方々の尽力により $ mkdir /tmp 正式にサポートされるようになりました。ここで また,/bin は sh.exe が入っているディレクトリ は Cygwin の簡単なインストールを含めて,筆者が をマウントすると良いでしょう. 提供している PostgreSQL の Windows NT 用のバイ ナリの利用法について述べたいと思います. $ mount c:/cygnus/cygwin-b20/H-i586cygwin32/bin /bin 入手/導入 (実際は 1 行です) 作成するファイルは,/etc/passwd,/etc/groups Cygwin の入手法 などですが,これは以下のようなコマンドで作成 Cygwin は先日 Red Hat, Inc.に買収された Cygnus Solutions が主宰しているオープンソースプロジェ クトで,Windows NT 上に UNIX 環境を実現するこ とを目標として活動しています.Cygwin について してくれます. $ mkpasswd -l > /etc/passwd $ mkgroups -l > /etc/groups は http://sourceware.cygnus.com/cygwin/を このようなことを単純に行ってくれるツールを ご覧ください.Cygwin には CD-ROM のみで提供さ Andy Piper 氏が http://www.xemacs.freeserve. れている v1.00 や,本稿執筆時にはまだテスト中の co.uk/で配布していますので,これを利用するこ v1.1 もありますが,ここでは少し古いバージョン ともできます. 最後に PostgreSQL が必要とする SysV IPC のイン である Beta 20 を扱います. Cygwin および必要なソフト のインストール まず,Cygwin の環境をインストール します.Beta 20 のインストーラには開 ●図 4 Cygwin 環境のディレクトリおよびファイルの構成図 C:¥ cygnus cygwin-b20 発環境を含まない usertools.exe と開発 マウント 環境を含む full.exe がありますが,個人 の好みでどちらを使っていただいても H-i586-cygwin32 / bin かまいません.これらのファイルは自 tmp 己解凍方式のインストーラとなってい etc るので,ファイルを実行してインスト /bin マウント passwd groups ールしてください.ここでは C:¥cygnus Jun. 2000 - 69 ストールを行います.これも筆者が提供するバイ 最後に,環境変数の設定をしましょう.環境変 ナリがありますので,それをそのまま解凍して bin 数 $PGDATA と $PGLIB を指定してください. 以下を/bin に入れてしまえば問題ありません. $ bzip2 -d cygwin32_ipc-1.03-bin-patched.tar.bz2 $ tar -xf cygwin32_ipc-1.03-bin-patched.tar $ cp bin/* /bin Windows では *.dll の検索先は PATH なので, pgsql/bin や pgsql/lib にあたるディレクトリもパス を通してください.また,$USER や $HOME は必 須ではないのですが,Cygwin としてはあると便利 です. インストールした ipc-daemon.exe は PostgreSQL を実行するのに必要ですので,Postmaster を実行 する前には必ず実行しておいてください. $ ipc-daemon & このとき“ipc-daemon is now running...”という ダイアログが出てくればインストールは成功して います. 図 6 のように[コントロールパネル]─[シス テム]─[環境]で以下のように設定します. USER :ユーザ名 HOME :ホームディレクトリ(ex. /home) PGDATA :データディレクトリ(ex. /usr/local/ pgsql/data) PGLIB :/usr/local/pgsql/lib PATH :既存のパス+"c:¥usr¥local¥pgsql¥bin; PostgreSQL のインストールおよび設定 さて,ここまできてようやく PostgreSQL のイン ストールに移ることができます.ディレクトリを c:¥usr¥local¥pgsql¥lib" 他のパッケージに比べるとややこしいですが, 以上で最低限のインストールは終わりました. 用意して tarball を解凍し,ファイルを一括コピー インストールが完了したら initdb を実行して,デ して終わります.ここでは/usr/local/pgsql にイン ータベースを立ち上げ,正常に動作することを確 ストールします(図5) . 認しましょう (図7,図8) . ●図 5 7.0(本稿執筆時は Beta)の場合もほぼ同様にイン 以上で完了です. 以上は 6.5.3 についてですが, $ $ $ $ $ インストール手順 mkdir /usr mkdir /usr/local bzip2 -d postgresql-cygwinb20.1-6.5.3-EUC_JP.tar.bz2 tar -xf postgresql-cygwinb20.1-6.5.3-EUC_JP.tar cp -r pgsql /usr/local/ ストールできます. ●図 7 initdb の実行 ●図 6 環境変数の設定 $ ipc-daemon & ... $ initdb ... $ postmaster -i ... ●図 8 PostgreSQL の動作確認画面 $ psql -h 127.0.0.1 template1 Welcome to the POSTGRESQL interactive sql monitor: Please read the file COPYRIGHT for copyright terms of POSTGRESQL [PostgreSQL 6.5.3 on i686-pc-cygwin, compiled by gcc 2.95] type \? for help on slash commands type \q to quit type \g or terminate with semicolon to execute query You are currently connected to the database: template1 template1=> 70 - Software Design c h a p t e r ●図 10 6 ユーザ変更画面 特徴 Cygwin 版の欠点 WindowsNT/Cygwin上で動く PostgreSQL は,ほ かの UNIX 版とは違う問題点がいくつかあります. 代表的なものとしては, ¡UNIX Domain のソケットが使えない 注 21 ため, postmaster は必ず-i オプションを利用する必要が あります.したがって psql などでは-h オプショ ンを使ってすべてのアクセスにホスト名を指定 しなければなりません. ¡TIMEZONE の名前がきちんと表示できないバグ が残っています. ¡postmaster の-S オプション(デーモン動作)が 正しく動作しません. ¡表題でも Windows NT と銘打っているとおり, Windows 95 系では動作しません. PostgreSQL を NT のサービスとし て登録する サービスを開き,図 10 のようにユーザを cygwin の セットアップをしてあるユーザに変更してくださ い.そのままでは,せっかく設定した mount table がすべて失われてしまいますので注意してくださ い. 以上でサービス登録作業は終わりです.ただし 安定性に欠けるので,動作がおかしいなと思った ら,タスクマネージャからプロセスを殺して再起 動するなどしてみてください. おわりに しかしながら,一方ではうまく NT の機能に便乗 することもできます.ここでは Cygwin 上とはいえ, せっかく Windows に PostgreSQL をインストールし cygwin 版の PostgreSQL は本家に取り込まれてか たわけですから,サービスとして postmaster を動 ら日も浅く,また初期段階ではひんぱんにハング 作させてみましょう. アップする代物でしたが,現状ではようやくそれ ここではサービスとして登録するために invoker なりに動くようになりました.多くはないですが を利用します. invoker は http://innovation. 業務用のアプリケーションの開発に利用している idetix.com/invoker/から入手できます. ような人もいらっしゃると聞きます.手軽にデス ここで,ipc-daemon と postmaster の両方をサー ビスとして登録してください(図9) . クトップの NT マシンで利用できるのは大きな魅力 です. postmaster は symbolic link なので cygwin アプリ ケーションからしか起動できません.次に両方の ●図 9 ipc-daemon と postmaster の登録 C:\>invoker install cygipc cygipc "ipc-daemon.exe -q" manual true C:\>invoker install pgsql pgsql "sh -c 'postmaster -i'" manual true 注 21)最新の Cygwin はサポートしていますが,PostgreSQL はこれを利用できるようにはなっていません. Jun. 2000 - 71
© Copyright 2024 Paperzz