やっと本題のPostgreSQL 9.5 Alpha 2をインストール。最初yumでリポジトリメタデータが見つからないエラー(Errno 14)が出て焦ったけど、他はCentOS7Alpha 1を入れた時と同様にできました。
Contents


関連・参考サイト(その3)
下記2つともこのブログの過去記事です。1ヶ月ちょっと前、CentOS7PostgreSQL 9.5 Alpha 1を入れた時のもの。インストール後の作業(DB初期化、サービス登録)のコマンドは全く同じで済みました。



共有フォルダ作成
PostgreSQLのインストール後でもいいですが、昨日VirtualBox Guest Additionsを入れた目的の共有フォルダ(ホスト・ゲスト間)を先に作りました。いったん仮想マシンをシャットダウンして ↓ 設定作業。マシンが動いていても設定自体はできるけど、どうせ再起動が必要になるので。


↓ 仮想マシンの設定画面から共有フォルダの項目を開き、設定を新規作成して任意の場所と共有名を指定。ここではホスト機(Windows)の一時ファイルとかを置いてるRAMDiskを共有しました。Auto-mountをチェックすると起動時に自動的に/media/sf_共有名にマウントされます。


設定後、仮想マシンを起動して共有フォルダを読み書きできるか確認。共有フォルダはvboxsfというグループに所属するので、root以外のユーザがアクセスするには、別途グループ追加が必要です。
ls /media
ls /media/sf_win_r
date > /media/sf_win_r/1.txt
cat /media/sf_win_r/1.txt


↓ 共有フォルダを普通にホスト側から開いたところ。上のコマンド3行目で仮想マシンから書き込んだファイル(1.txt)が、確かにありました。この後、念のため仮想マシンを再起動して自動的に共有フォルダができているのを確認したら、共有フォルダの設定は終わり。


PostgreSQL 9.5 Alpha 2インストール
ここから本題で、まずレポジトリ追加。PostgreSQL RPM Building Project - Repository Packages9.5の所 ↓ にScientific Linux 7用のURLがあるので、コピーしてrpmコマンドに渡します。
rpm -Uvh http://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-sl95-9.5-1.noarch.rpm

本来、これでインストールするパッケージが把握できるはず。ところがyum listしてみると ↓ レポジトリメタデータが見つからないというエラー(Errno 14)が出て、先へ進めません。これはCentOS
7Alpha 1を入れた時は経験しなかったこと。
yum list | grep postgresql95

...
failure: repodata/repomd.xml from pgdg95:
[Errno 256] No more mirrors to try.
http://yum.postgresql.org/9.5/redhat/rhel-7.0-x86_64/repodata/repomd.xml:
[Errno 14] HTTP Error 404 - Not Found


見つからないというURLをつらつら眺め、適当に変えて試していたら分かりました。rhel-7rhel-
7.0に間違っていると。OSのバージョン表記の問題。

(誤)http://yum.postgresql.org/9.5/redhat/rhel-7.0-x86_64/repodata/repomd.xml

(正)http://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/repodata/repomd.xml


URLを含む設定ファイルを探します。レポジトリデータのファイルは ↓ にありました。
ls /etc/yum.repos.d


上の中にあるpgdg-95-sl.repoPostgreSQL 9.5関連で、中を見ると ↓baseurlに使われている$releaseverという変数が7.0になってる模様。
cat /etc/yum.repos.d/pgdg-95-sl.repo

[pgdg95]
name=PostgreSQL 9.5 $releasever - $basearch
baseurl=http://yum.postgresql.org/9.5/redhat/rhel-$releasever-$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-95

[pgdg95-source]
name=PostgreSQL 9.5 $releasever - $basearch - Source
failovermethod=priority
baseurl=http://yum.postgresql.org/srpms/9.5/redhat/rhel-$releasever-$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-95


↓ とりあえずファイルの控えを取って、編集して$releaseverを直接7に書き換えました。後で知ったのですが、yumコマンドには--releaseverオプションがあって、それを使うべきだったと思います。今回はこれでインストールできたので、一応の記録と参考まで。
cp /etc/yum.repos.d/pgdg-95-sl.repo /etc/yum.repos.d/pgdg-95-sl.repo.org

vi /etc/yum.repos.d/pgdg-95-sl.repo

# baseurl=http://yum.postgresql.org/9.5/redhat/rhel-$releasever-$basearch
baseurl=http://yum.postgresql.org/9.5/redhat/rhel-7-$basearch
...
# baseurl=http://yum.postgresql.org/srpms/9.5/redhat/rhel-$releasever-$basearch
baseurl=http://yum.postgresql.org/srpms/9.5/redhat/rhel-7-$basearch


レポジトリデータ修正後は、CentOS
7の時と同様にパッケージが出ました。↓
yum list | grep postgresql95


パッケージのうち-serverを指定すればデータベースサーバは動きます。-contribは拡張機能のpostgres_fdwなど。今回はこの2つをインストールしました。↓
yum -y install postgresql95-server postgresql95-contrib


データベース初期化、サービス登録
以下、コマンドはCentOS7PostgreSQL 9.5 Alpha 1を入れた時と同じです。まずインストール直後の確認で ↓ ユーザpostgresが作られていることと、プログラムとデータの場所。
id postgres

ls /usr
ls /usr/pgsql-9.5
ls /usr/pgsql-9.5/bin

ls /var/lib/pgsql
ls /var/lib/pgsql/9.5
ls /var/lib/pgsql/9.5/data


↓ ユーザpostgresとしてデータベース初期化。CentOS
7の時と同様にオプションなしで実行したら、データベース作成時のデフォルト文字コードがSQL_ASCIIになりました。CentOS7ではUTF-8だったはず。OSの言語設定か何かの違いによるのかも。いずれにせよ新規データベース作成時に文字コードを指定すればいいので、今回は良しとします。
su - postgres
/usr/pgsql-9.5/bin/pg_ctl init


次に、仮想マシン起動時に自動的にPostgreSQLも起動するよう「サービス登録」します。↓1行目はサービス用の設定ファイルが既にあるか確認。無事あったので、テストでサービスを開始(3行目。これはルート権限で)。起動したらpostgresユーザに戻り、psqlで接続しクエリのテスト(5行目)。
ls /usr/lib/systemd/system | grep postgres
su
# systemctl start postgresql-9.5
exit
/usr/pgsql-9.5/bin/psql


以上でPostgreSQLのサービス開始とpsqlからの接続・クエリ実行を確認できたので、サービスとして登録(有効化)します。これはルート権限で。
su
# systemctl enable postgresql-9.5


念のため仮想マシンを再起動し、サービスの状態を確認すると ↓ 確かに動いてます。
service postgresql-9.5 status


本当は今日、ホストからのPostgreSQL接続までやりたかったけど、インストールの最初で意外に手間どったので明日にします。一連の記事は明日で終わる予定。