PostgreSQL ポストマスターが起動しない

PostgreSQL ポストマスターが起動しない

ソースからビルドした後、PostgreSQL インスタンスをインストールしようとしていますが、postmasterデータベース クラスターを起動する前にデーモンを実行してもうまくいかないようです。起動時に表示されたエラー メッセージは次のとおりです。

postgres@Home:~$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
LOG:  could not bind IPv4 socket: Address already in use
HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds 
       and retry.
WARNING:  could not create listen socket for "localhost"
FATAL:  could not create any TCP/IP sockets

グーグルで検索した結果、ヒントになる唯一の結果は、次のコマンドを実行するように指示するものでした。出力は次のようになります。

postgres@Home:~$ lsof -i :5432
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
postgres 1169 postgres    3u  IPv4   1998      0t0  TCP localhost:postgresql (LISTEN)

postgres@Home:~$ netstat -an|grep :5432
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN   

つまり、デーモンがラッチしようとしているポートの接続はpostmaster、実際には利用可能であると考えられます。原因について何か考えはありますか?

ご興味があれば、私は pgsql 9.2.3 を実行しています。(また、この質問をするのに Stack Exchange サイトが間違っている場合は、Stack Overflow または Programmers に移動してください。)

答え1

postmaster起動失敗時のエラーメッセージとnetstat出力には、TCPポートを使用するプロセスがすでに存在していることが示されています5432。おそらく、システムの一部としてPostgreSQLがすでにインストールされているのでしょう。PostgreSQL 9.1 の場合パッケージがインストールされ、 の出力が表示されますpg_lsclusters

独自にコンパイルした PostgreSQL を、Ubuntu 用にパッケージ化されたものと並行して実行したい場合は、portの設定エントリを変更する必要があります/usr/local/pgsql/data/postgresql.conf

一方、自分でコンパイルしたPostgreSQLだけをデフォルトのポートで実行したい場合は5432、Ubuntuパッケージを削除するか、以下の編集により起動時にクラスタを無効にすることができます。/etc/postgresql/9.1/main/start.conf

関連情報