今回のサーバー更新の感想。

ネットでPostgreSQLのインストールを検索すると、yumでのインストールを紹介しているページが多い。なので、yumでインストールするのが普通なのかもしれないが、いつもうまくいかない。
yumでインストールする時にどうしても納得がいかないところがある。
やはり、ソースからconfigure、makeすべきなのではないかと思うのだが。

1.initdbの--no-locale オプションは不要か?
いつもPostgreSQLをconfigure、makeして、initdbする時は--no-localeオプションを付けている。今回の更新でも--no-localeオプションを付けた。
ネットで検索しても9.4でこのオプションが必要なのかよくわからない。
このオプションが必要というのは「PostgreSQL完全攻略ガイド」(石井達夫著、(株)技術評論社)に出ていて、最後に買った改訂第5版P.46に記載がある。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
■忘れてはならない--no-localeオプション
 日本語環境で忘れてはななないのが--no-localeオプションです。PostgreSQLではOSが持つロケールデータベースを利用することができますが、日本語においてはこの機能はまったく必要ないばかりか、ロケールデータベースのバグのせいで検索処理に問題を起こすことさえあるので、この機能を無効化する--no-localeオプションを指定して未然にトラブルを防ぎましょう。このオプションを指定し忘れると、もう一度データベースクラスタの初期化をする羽目なります。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
とあって、この版はPostgreSQL8.1を想定している。9.4でこのオプションが必要なのかどうか調べてみたのだが、よく分からない。
yumでインストールした場合、serviceから呼び出されたinitdbのオプションは無視されるようで、もし--no-localeオプションが最新バージョンでも必要なら「yumでのインストールは問題あり!」ということになってしまう。

2.postgresのホームディレクトリが/var/lib/pgsql/9.4/になってしまう
運用時にはサーバーにはディスプレイを付けていない、telnet接続してバックアップをとっている。telnetは通常rootでログインできないので、postgresでログインするのだが、.bashrcの保管場所が/var/lib/pgsql/9.4/、PostgreSQLのデータディレクトリになってしまい、これが非常に気持ち悪い。
バックアップは別に用意した共有ホルダーに保存しているのだが、ログイン直後に大事なデータベースデータが保管されたディレクトリがホームディレクトリになってしまうのは怖すぎる。


たしかにPostgreSQLをソースからインストールするのはyumでインストールする場合よりも手順が増える。また、「2」postgresのホームディレクトリを変更することはできるのだが、その手間と「1」の心配を合わせて考えると、PostgreSQLはyumでインストールすべきではないと思う。

yumでPostgreSQLをインストールするとユーザーpostgresが自動作成されるが、Linuxのadduserコマンドでアカウントを作成した場合と作成後の状態が異なる。PostgreSQL以外のアプリケーションで例えば、emacsをyumでインストールしても特定ユーザーが追加されることはない。PostgreSQLではスーパーユーザーpostgresが追加されるという他のアプリケーションとは違った動作をする。
initdb時には--no-localeオプションを付けた方が安全そうだし、データディレクトリを状況に合わせて指定したい場合もある。オプションが無視されてしまう、serviceからの実行は使いにくい。
現状では最新の9.4でもソースにCentOS7で使える自動起動スクリプトが「contribute」に含まれていない。CentOS6用の自動起動スクリプトは含まれているのだが。yumでインストールすると、起動スクリプトが同時にインストールされるので、自動起動の設定が簡単だ。しかし、この点を考慮してもデータベースの需要性を考えると、やはりyumでインストールするより、ソースからconfigure、makeしてインストールすべきなのではないかと思う。