## PostgreSQL >=V6.1 のためのよくある質問(FAQ)

Anderw
Martin
C.R.

    martin@biochem.ucl.ac.uk

Jun 19 1998
潤
桑村
日本語訳

    juk@rccm.co.jp

PostgreSQL の FAQ Linux 特定版 - 通常の FAQ と併せてお読み下さい。

## 訳注

この文書の最新版は、 http://www.biochem.ucl.ac.uk/~martin/pgsql/linux.faq にあります。日本語版は、 http://www.rccm.co.jp/~juk/pgsql/faq-linux-j.shtml にあります。

Changes in this version (* = modified, + = new, - = removed):

- +1.23) コンパイルが F_BOOLIN, F_BOOLOUT および F_BYTEAIN が未定義である とのメッセージで失敗するのはなぜですか？

このファイルはおおよそ次のように別れています：

1. PostgreSQL のコンパイル

2. 附属プログラムのコンパイル

3. 実行時の問題

## PostgreSQL のコンパイル

&start; `src/Makefile.global` や `src/Makefile.custom` には何を変更すればよいでしょうか、また、その他に必要な変更は ありますか？ &qa; `makefile` 等への変更は、`Makefile.custom` を書き出す `customize` シェ ルスクリプトを `src` ディレクトリで走らせることにより 最も簡単にできます。 &p; &lsqb;訳注： customize コマンドは 6.1 以降なくなりました。 &rsqb; &p; その他にやらなくてはならない変更は、もし Flex のバージョンがよ く知られているバグのある 2.5.3 の場合は、createuser が失敗する （質問3.4 を参照）ので、それを置き換えることです。 &p; もし、makefile等を手で編集するのであれば、★必ず★次の変数をセッ トしなくてはなりません：

      PORTNAME=       linux

&p; また、次の変数もあなたのインストールを行なう場所に変更する必要 があります：

      POSTGRESDIR

&p; USE_TCL オプションを生かすならば、以下の変数をセットする必要が あります：

      TCL_INCDIR=
      TCL_LIBDIR=
      TCL_LIB=
      TK_INCDIR=
      TK_LIBDIR=
      TK_LIB=
      X11_INCDIR=
      X11_LIBDIR=
      X11_LIB=

&p; 筆者の Slackware3.0 システムでは、それらは：

      TCL_INCDIR=     /usr/include/tcl
      TCL_LIBDIR=     /usr/lib
      TCL_LIB=        -ltcl
      TK_INCDIR=      /usr/include/tcl
      TK_LIBDIR=      /usr/lib
      TK_LIB=         -ltk
      X11_INCDIR=     /usr/include/X11
      X11_LIBDIR=     /usr/X386/lib
      X11_LIB=        -lX11

&p; `INSTALL` ファイルと `Makefile.global` ファイルにあるドキュメントに従ってその他に必要な変更をしても構いません。

&div; `libreadline` が見つからないという問題はなぜ起こりますか？ &qa; Linux システムは一般的にインストール済みの GNU `readline` ライブ ラリを含んでいません。GNU `readline` ライブラリを インストールす るか、または、`src/Makefile.global` あるいは `src/Makefile.custom` で `readline` オプションを活性化しないように しましょう。 &p; Debian Linux では(FreeBSD のように) `readline` が インストールさ れて来ることをここに記しておきます。

&div; &lsqb;REDHAT&rsqb; `libdl` と `dlfcn.h` が見つからないという問題はなぜ起こりますか？ &qa; このこと自身が、コンパイルの最後のフェーズで `dlopen()` や `dlclose()` などのような関数とリンクできないことを 明示しています。 &p; `libdl` ライブラリは ユーザ提供関数として実行時に 動的結合されま す。いくつかの理由のためにこのライブラリは Redhat の配給から洩 れました。最近の RedHat 4.0(Colgate) では直っています。 &p; 今は、新しい `ld.so` の RPM パッケージが RedHat の FTP サイトに あります。簡単に入手するには: &p; &sites; ftp://ftp.redhat.com/pub/redhat/devel/i386/RedHat/RPMS/ld.so-1.7.14-4.i386.rpm &sitee; RPM ファイルを普通にインストールしてやり直してみて下さい。 &p; 注意！ ライブラリのインストールの後に再コンパイルを行なう前に、 `configure` を走らせ直して `make clean` をしなければならないでしょう。 &p; これらのライブラリを更新しているときにアクセスするプログラムの ためにシステムが落ちたと言う報告が一つありました(驚くことでは ありませんが)。したがって、新しいライブラリをインストール する前にシステムを再起動するのは良い考えで、なるべく更新中は走 らせるものを少なくしましょう。シングルユーザ・モードになるのが 良いでしょう。 &p; もし、それを難しい方法でしたいのであれば、次の場所からライブラ リとヘッダを取得することもできます:

&sites; ftp://tsx-11.mit.edu/pub/linux/packages/GCC/ld.so-1.7.14.tar.gz &sitee;

コンパイル済のバイナリを `distributions/debian/buzz/binary-i386/base/ld.so-1.7.14-4.deb` 同じサイトで見つけるか、または、初期のころの Slackware パッケー ジでは 1.2 の質問と同じ問題を直すかのどちらをしても構いま せん。ただし後者方法は、自分でやっていることがおわかりでなけれ ばやらないで下さい。

&div; &lsqb;SLACKWARE 3.1&rsqb; `libdl` と `dlfcn.h` が見つからないという問題はなぜ起こりますか？ &qa; このこと自身が、コンパイルの最後のフェーズで `dlopen()` や `dlclose()` などのような関数とリンクできないことを 明示しています。 &p; 質問 1.3 の回答を御覧下さい。バージョン 3.0 までの Slackware はこのライブラリとインクルードファイルが提供されましたが、初期 の 3.1 のリリース(1996年9月9日より前)では無くなってました。そ して、多くの CD-ROM のバージョンがその最初の 3.1 のリリースを 入れているでしょう。 &p; これらのライブラリを更新しているときにアクセスするプログラムの ためにシステムが落ちたと言う報告が一つありました(驚くことでは ありませんが)。したがって、新しいライブラリをインストール する前にシステムを再起動するのは良い考えで、なるべく更新中は走 らせるものを少なくしましょう。シングルユーザ・モードになるのが 良いでしょう。 &p; 最も簡単な修正は `ldso.tgz` を最新の Slackware 3.1 の配給の a4 disk から取り出してファイルをルート(/)ディレクトリから展開して、 そして、

      sh install/doinst.sh

&p; をしてインストールを完了して下さい。それに続けて、

      ldconfig

&p; 注意！ ライブラリのインストールの後に再コンパイルを行なう前に、 `configure` を走らせ直して `make clean` をしなければならないでしょう。 &p; をします。もし、手でインストールしたければ、まず最初に `dlfcn.h` ファイルを `/usr/include` にインストールします。 &p; 次に、`libdl.so.1.7.14` (あるいは、同様の最新の リリース)を `/lib` にインストールし、そして、

      cd /lib
      ln -sf libdl.so.1.7.14 libdl.so.1
      ln -sf libdl.so.1 libdl.so

&p; を行ないます。あるシステム(GCC の設定によります)では、次のこと を行なう必要があります:

      cd /usr/lib
      ln -sf /lib/libdl.so .

&p; 最後に、

      ldconfig

&p; します。 &p; 注意！ ライブラリのインストールの後に再コンパイルを行なう前に、 `configure` を走らせ直して `make clean` をしなければならないでしょう。

&div; backend のコンパイルがインクルードファイル `dlfcn.h` が 見つからないということで終ります。 &qa; 質問 1.3/1.4 の回答を御覧下さい。もし、a.out のシステムをお使 いでしたら、`dlfcn.h` を持つために、まず始めに dld パッケージ （ほとんどの a.out のシステムに附属してない）をインストールし なくてはならないことをお忘れにならないように。質問 1.11 を御覧 下さい。

&div; GCC がオプション `-fpic` を無視したとぼやきます。 &qa; GCC の初期バージョンは、`-fpic` か `-fPIC` かのどちらかを受け入れ ます。より最近のバージョン (V2.7.2?) では `-fPIC` を要求します。 ELF バージョンの Linux をお使いの場合は、`-fPIC` が 既定値となり ますので、このことは無視しても大丈夫です。

これは、`src/Makefile.global` を編集し、 `CFLAGS_SL` を変更する ことで訂正できます。

&div; 次のような警告を受け取ります： `warning: cast from pointer to integer of different size` &qa; これらは Postgres95 の初期バージョンで見受けられましたが、無視 しても大丈夫です。PostgreSQL V6.0 では、システムヘッダーファイ ルに関する警告（これらも安全に無視できます）以外は、警告無しに コンパイルできるはずです。

&div; &lsqb;SuSE-Linux 4.2-4.4&rsqb; `curses` と `termcap` はどこにありますか？ &qa; SuSE-Linux 4.2 に `ncurses` はありますが `curses` はありません。 4.4 には両方あります。SuSE-Linux の `termcap` ライブラリもまた `/usr/lib` の中ではなく `/usr/lib/termcap` の中にあります。

- PostgreSQL (up to V6.0) &p; `src/Makefile.custom` の中で `CURSES_LIB` の値に `-lncurses` を設定 します（あるいはカスタマイズスクリプトを通して行ないます）。 次の行を `src/Makefile.custom` に加えます： &p;

        LDADD_BE+= -L/usr/lib/termcap

  &p; `src/bin/psql/Makefile` を編集して次の &p;

        ifeq ($(PORTNAME), linux)
          LD_ADD+=

  &p; を &p;

        ifeq ($(PORTNAME), linux)
          LD_ADD+= -ltermcap

  &p; に変更します。

- PostgreSQL (V6.1) &p; `configure` スクリプトは `termcap` ライブラリを `/usr/lib/termcap` の 中に捜す術を知りませんので、捜索する追加ディレクトリを尋ねられ たときに、このディレクトリを指定するディレクトリの一つに含める べきです。 &p; もし、これでうまくゆかなければ（著者はそれを確かめるための SuSE を持っていません）、`configure` を走らせた後に、 `src/Makefile.global` を編集して `LDFLAGS` の行(`-lreadline` の後ろ) に `-ltermcap` を加えます。（あるいは、 `configure` を走らせる前に、 `src/Makefile.custom` を修正することもできます。） &p; `-lcurses` を `-lncurses` に変えて、 むしろ `curses` の代わりにあえ て `ncurses` を使いたいと願うかも知れません SuSE のいくつかのバージョンでは `ncurses` のみしか 提供されません ので、`-lcurses` を `-lncurses` に変えて `curses` の代わりに `ncurses` を使う必要があるかもしれません。(SuSE 5.1 ではまさにそのことが 報告されてます。)

&div; `ld.so` で問題が出るのはなぜでしょう？ &qa; `ld.so` で問題があれば、ELF の下でダイナミック ローディングのた めに別のライブラリが要求されます。それは、Linux のインストール か（それに近い）アップグレードで変にしてしまったのです。 &p; 質問 1.3/1.4 の回答を御覧下さい。`ld.so.x.y.z` を `/lib` にインストールして `ldconfig` を走らせる必要があるかも知れません。

最も最近の ld のパッケージは 1.7.14 です。これを書いている時点 で ld の 1.8.x バージョンは実験版です。

&div; '`yy_flush_buffer undefined`' というエラー が出るのはなぜでしょう？ &qa; これは本当に Linux に限ったことではありませんが、古い Linux のインストーレションでは良くあります。PostgreSQL をコンパイル するのに flex の最新版(2.5.2以降)を持っている必要があります。 ただし、flex 2.5.3 はバグがあります：質問 3.4 を参照下さい。

&div; a.out システムでは PostgreSQL をどのようにコンパイルしますか？ &qa; 最初に、dld ライブラリをインストールしなくてはなりません。これ は、Sunsite: `LINUX/libs/dld.3.2.7.tar.gz`

&sites; ftp://sunsite.unc.edu/pub/Linux/libs/dld.3.2.7.tar.gz &sitee;

から入手できます。 &p; 第二に、次の行：

      LINUX_ELF=

を `src/Makefile.custom` に加えます。 （あるいはカスタマイズスクリプトを使います）

&div; 次のように `make` が失敗するのはなぜですか： `yacc -d /disk2/PostgreSQL/src/backend/parser/gram.y` `make: /usr/bin/make: cannot execute binary file` &qa; これは、Postgres95 の初期バージョンの問題でした。PostgreSQL の ための既定値は `yacc` ではなく `bison -y` を使うようになってます。

yacc は一般的に `bison -y` によって起動される スクリプトとして実 装されています。ある理由で（`make` のあるバージョン ？bash のある バージョン？）`make` がこのスクリプトファイルを 実行できません。 &p; これを直すには、単純に `src/mk/port/postgres.mk.linux` を編集して、 そのファイルの終りの

      # YACC = bison -y

を

      YACC = bison -y

に変更します。

&div; `src/Makefile.global` の中で `X11_LIB` の `libsocket` と `libnsl` への参照は 何ですか？ &qa; これは 1.08 での（Sun Solaris に特有の）問題でした。1.09 と 6.0では直っています。

&div; &lsqb;DEBIAN&rsqb; `libtermcap` はどこにありますか？ &qa; Debian Linux には `termcap` ライブラリは付いて こなくて、（その代わりに `terminfo` を使う） `ncurses` を使います。Debian は （SuSE-Linux とは違い --- 質問 1.8 を御覧下さい） `libncurses` から `libcurses` へのリンクを用意してますので `src/bin/psql/Makefile` の中の `CURSES_LIB` 変数は変更する必要はあ りません。 &p; `src/bin/psql/Makefile` を編集して、

      ifeq ($(PORTNAME), linux)
         LD_ADD+= -ltermcap

から

      ifeq ($(PORTNAME), linux)
        LD_ADD+=

へ変更をコメントで外す必要があるかもしれません。

&div; &lsqb;REDHAT&rsqb; RPM での PostgreSQL は手に入りますか？ &qa; あります。Michal Mosiewicz さんが (`http://www.pdi.lodz.pl/~mimo`) Intel 版の PostgreSQL V6.0 をご 親切に RPM にまとめてくれました。そして、 &sites; ftp://ftp.redhat.org/pub/Incoming/Postgres-6.0-1.i386.rpm &sitee; にアップロードされています。 &p; これは、コンパイル済バージョンで、そこにあるソースの RPM は 著者が書きました。

&div; Linux で開発バージョンをコンパイルしようとしたら、次のようなメッセージで 失敗しました： `In file included from /usr/include/sys/sem.h:8, from ipc.c:37: /usr/include/asm/bitops.h:32: warning: no previous prototype for Set_bit' .... make: *** &lsqb;ipc.o&rsqb; Error 1` &qa; 問題は Linux がこれらのインライン関数のためのプロトタイプを用 意していないことです。解決策は `.../src/backend/storage/ipc` ディレクトリに行って `Makefile` を編集することです。 &p; 次の行、 &p;

      CFLAGS+=$(INCLUDE_OPT)

&p; を &p;

      CFLAGS+=$(INCLUDE_OPT) -Wno-error

&p; に変更します。 &p; `../src/backend/storage/lmgr` ディレクトリに ついても同様にします。

&div; postgres をコンパイルするとき、gcc が signal 11 を出して落っこちました。 `gcc: Internal compiler error: program cc1 got fatal signal 11` &qa; これは、ハードウェア／メモリの問題です。PostgreSQL は大きなプ ログラムですので、（PostgreSQL を構築したり、カーネルを構築し たりするような）巨大な gcc のコンパイルにおいては、他の幾つか のプログラムのようにメモリを圧迫し、その結果通常操作では起きな いエラーに終ります。より小さな基本ソフトでもありますが、この ような度合にまではハードウェアを圧迫しませんので、DOS/Windows の下ではこのような問題に合うことは無いかも知れません。 &p; より詳細な情報は： &sites; http://www.bitwizard.nl/sig11 &sitee; にあります。 &p; この Sig11 FAQ によると、Cyrix プロセッサ上での Redhad 5.0 gcc を走らせる時の特別な問題があるようです。詳細は上記の URL を御覧 下さい。

&div; MkLinux で 6.1.1 をインストールできますか？ &qa; 石井達夫さん が MkLinux DR2.1 update2 以降 で行ないました。小さなパッチは： &sites; ftp://ftp.sra.co.jp/pub/cmd/postgres/6.1.1/mklinux.patch.gz &sitee; から入手できます。 &p; &lsqb;訳注 6.2 からはパッチは必要なくなりました。 &rsqb;

&div; メイクが終ったり、クラッシュするのはどうして？ &qa; `gmake` が早々に終ったり領域侵害で落ちたりすることが 幾つか報告され ています。後者の問題は gmake 3.74 で報告されたもので、3.76.1 に アップグレードすることで解決されました。ところが、3.74 は他の人々 のセットアップでは正常に動いていることが知られています。とりあえ ずは、この問題について報告を行なう前に、gmake を最新版にアップグ レードしてみてください。

&div; 486 や Pentium プロセッサ用の最適化はどのようにするのですか？ &qa; デフォルトのコンパイラ・フラグでは 486 や Pentium プロセッサー のための最適化は行ないません。このような最適化を加えるには、 `Makefile.custom` を編集して： &p;

      CFLAGS+= -m486

または、(まだ、あまり走らせている人のいない新しいコンパイラでは)

      CFLAGS+= -mpentium

または

      CFLAGS+= -mpentiumpro

&p; を加えます。

&div; 時間を印刷しようとするとどうして変な結果になるのですか (例えば、 regression テストの 'timespan)？ 時間は、'`5 hours`' のかわりに ' `4 hours 59 mins 60.00 secs`' のように なります。 &qa; この問題は Redhat 5.0 に含まれてくる glibc2 での問題です。glibc を 最新の v5.0/hurricane の RedHat バージョンにアップデートして下さい。 `glibc-2.0.7` より前のものは問題がよくあるようです。

&div; 6.3.2 をコンパイルした時に `libpq` のための共有ライブラリ ができないのはなぜですか？ &qa; v6.3.2 のための Linux コンフィグレーションは終る寸前で離脱をおこし てました。`ftp://postgresql.org/pub/patches/` に `linux_elf` パッチを 含む幾つかの修正が上がっていますので見て下さい。

&div; コンパイルが `F_BOOLIN, F_BOOLOUT` および `F_BYTEAIN` が未定義であるとのメッセージで失敗する のはなぜですか？ &qa; 実際のメッセージは以下のようなものです: &p;

      -I/usr/include/readline -O2 -Wall -Wmissing-prototypes -I..
      -Wno-error -c bootstrap.c -o bootstrap.o
      bootstrap.c:160: `F_BOOLIN' undeclared here (not in a function)
      bootstrap.c:160: initializer element for `Procid&lsqb;0&rsqb;.inproc' is not
      constant
      bootstrap.c:160: `F_BOOLOUT' undeclared here (not in a function)
      bootstrap.c:160: initializer element for `Procid&lsqb;0&rsqb;.outproc' is not
      constant
      bootstrap.c:161: `F_BYTEAIN' undeclared here (not in a function)
      bootstrap.c:161: initializer element for `Procid&lsqb;1&rsqb;.inproc' is not
      constant

&p; これらの定数はどこにも定義されていそうも無いので、なぜそれが起こ るかを知らなければ、これは奇妙なことです。 &p; その答えは、メイクを始める前に `cpp` がパスにある ことを確認することです。 &p; Redhat 5.1 では、`cpp` は `/usr/lib/gcc-lib/i386-redhat-linux/2.7.2.3` にあります。 &end;

## 附属プログラムのコンパイル

&start; `pgtclsh` をコンパイルする時、リンカが `libX11` を捜せません。 &qa; 次の行を `src/Makefile.custom` に加えて下さい。 &p;

      X11_LIBDIR = /usr/X11R6/lib

&end;

## 実行時の問題

&start; `createuser` などのスクリプトを走らせる時、 `_fUnKy_POSTPORT_sTuFf_` が未定義とのエラー報告を受け取ります。 &qa; これは、Postgres の V1.06-V1.07 でのバグで V1.08 以上では直っ ています。

&div; `postmaster` を走らせた後、システムが ' `Bad system call(Core dumped)`' と言います。 &qa; これは、共有メモリのサポートを組み込まないでカーネルのコンパイル をしてしまったことを示します。Linux カーネルにこの機能を組み込ん でコンパイルし直す必要があります。

&div; `postmaster` を走らせようとする時、次のようなエラーを 受け取るのはなぜですか？

      Failed Assertion("!(file != 0):(null)", File:
      "/usr/local/PostgreSQL/src/backend/storage/file/fd.c", Line: 257)
      !(file != 0) (0)
      initdb: could not create template database
      initdb: cleaning up.

&qa; `/dev/null` ファイルのアクセス権が間違っています。 &p; `ls -l /dev/null` で次のように: &p;

      crw-rw-rw-  1 root  wheel    2,   2 Oct  8 18:41 /dev/null

&p; 表示されるべきです。 &p; 次のコマンドで: &p;

      chmod a+rw /dev/null

&p; アクセス権を訂正してください。

&div; `createuser` が動かないのはなぜですか？ &qa; GNU flex の バージョン 2.5.3 と `createuser` で 問題があります。 V2.5.2 にダウングレードするか、V2.5.4 にアップグレードするか、 あるいは、V2.5.3 に `doc/README.flex` で提供 されるパッチを施して下さい。V2.5.4 は: &sites; ftp://prep.ai.mit.edu/pub/gnu/flex-2.5.4.tar.gz &sitee; から入手できます。

&div; 次のようなエラーを受け取るのはなぜですか：

      IpcMemoryCreate: memKey=155356396 , size=760632 ,
      permission=384IpcMemoryCreate: shmget(..., create, ...)
      failed: Invalid argument

&qa; Linux カーネルに IPC サポートの組み込みをしていません。この オプションを生かして、カーネルを構築し直す必要があるでしょう。

&div; どうして、psql が次のように失敗するのですか： '`psql: can't load library 'libpq.so.1`' &qa; psql は `libpq` ライブラリに動的に結合するように コンパイルされています。 &p; これを解決するには、root でログインして、ファイル

      /etc/ld.so.conf

&p; を編集します。PostgreSQL ライブラリのディレクトリ(PostgreSQL をインストールしたところの `lib` サブディレクトリ) の名前をそのファイルの終りに一行加えます。そうして、

      /sbin/ldconfig -v

&p; を走らせます。 &p; あるいは、(もし、root になれなければ)、`LD_LIBRARY_PATH` 環境変数を使っても構いません。 &p; `LD_LIBRARY_PATH` 環境変数は、共有ライブラリが捜される パスをコロンで区切ったたリストです。このリストは、`ldconfig` により指定さ れたライブラリの前に捜されます。 &p; この指定は、bash では:

      export LD_LIBRARY_PATH='PathToPGSQL'/lib

&p; のようにし、また、tcsh を使っている場合は:

      setenv LD_LIBRARY_PATH 'PathToPGSQL'/lib

&p; として、'`PathToPGSQL`' を適切な PostgreSQL の 最上部のパスに置き換えます。 &p; `ldd` コマンドは動的結合の実行モジュールにその 実行モジュールが 依存しているすべての共有ライブラリのパスをリストするのに使うこ とができることに注意して下さい。

&div; その他の奇妙な振舞。 &qa; 全く動作しない時以外にどんな兆候となるかはわかりませんが、動的 ローダが `libpq` ライブラリの正しいバージョンを ロードすることに 注意を払う必要があることだけは明らかです。もし、古いバージョン がライブラリパス(例えば、/usr/lib)のどこかにあると、ロードする つもりの新しいバージョンのかわりにロードされてしまうかもしれま せん。古いバージョンがパスにないのを確かめるとともに、Q3.6 の ライブラリのロードについての詳細を見て下さい。

&div; PostgreSQL が走っている時にシステムをシャットダウンすると、 Linux はリブートの時にいつもディスクを `fsck` します。 &qa; この事例が幾つか報告されていますが、それは `INSTALL` ドキュメトの提案に従って `/etc/inittab` から PostgreSQL を走らせた結果の ように見受けられます。 &p; ですので、`postmaster` を `rc` スクリプトから始動することをお勧め します。Slackware系のリリースでは、`/etc/rc.d/rc.local` を修正し て `postmaster` を始動すると良いでしょう。 RedHat系のリリースでは、 SysV スタイルのスクリプトを `/etc/rc.d/init.d` 枠組ファイルを基 に `/etc/rc.d/rc3.d` に作るべきです。 &p; ファイルの例が `contrib/linux/postgres.init` にあります。 &p; ここにも、必要に応じて修正すべきですが、John Robinson が提供する、もう一つのファイルの例が あります。

      #!/bin/sh
      #
      # postgreSQL.init This shell script takes care of starting and stopping
      #               the PostgreSQL postmaster.
      #

      # Source function library.
      . /etc/rc.d/init.d/functions

      # Source networking configuration.
      . /etc/sysconfig/network

      # Check that networking is up.
      &lsqb; ${NETWORKING} = "no" &rsqb; && exit 0

      # See how we were called.
      case "$1" in
        start)
              # Start daemons.
              echo -n "Starting postgres Postmaster daemon:"
              if &lsqb; -z "`pidofproc postmaster`" &rsqb;
              then
                      su postgres -c "/usr/local/pgsql/bin/postmaster \
                                  -D /home/postgreSQL/data -p 5432 &"
                      echo -n " postmaster"
              else
                      echo -n " (already running)"
              fi
              echo
              touch /var/lock/subsys/postgres
              ;;
        stop)
              # Stop daemons.
              echo -n "Shutting down postgres Postmaster daemon: "
              killall -TERM postmaster 2>/dev/null
              killall -TERM postgres 2>/dev/null
              echo
              rm -f /var/lock/subsys/postgres
              ;;
        *)
              echo "Usage: postgres {start|stop}"
              exit 1
      esac

      exit 0

&div; regression テストの問い合わせ 32 にとても時間がかかるのはなぜですか? &qa; これは、linux マシンでのみ起きる regression スクリプトのバグに よるものです。私の知る限りでは、(石井達夫さん からの情報によると):

1. `regress.sh` の中で次の:

         time postgres -texecutor -tplanner -Q bench < bench.sql

   を

         postgres -texecutor -tplanner -Q bench < bench.sql

   &p; に変える。

2. テストを走らせた後で、bench.out の終りに近い、たとえば次の ような行:

         85.86user 114.47system 4:49.20elapsed 69%CPU (0avgtext+0avgdata 0maxresident)k

   &p; を取り除いてから、 &p;

         sh ./perquery < bench.out > & bench.out.perquery

   を実行します。

&div; ある `date/time` の演算で、以下のような妙な丸めと なるのはなぜですか？ &qa; 2.0.7 よりも前の 新 glibc2 を走らせていますね。ライブラリをアップ デートして下さい。

&end;

(sgml conversion, y.senda, ysenda@pop01.odn.ne.jp, 2001/09)