ポイント
- 最新版のコマンドは postgresql ではなかった。postgresql-9.2 だった(2013年3月時点、PostgreSQL バージョン 9.2)
- PostgreSQL 最新版を CentOS 5.9 に yum でインストールするにはリポジトリを導入する。2013年3月時点ではバージョン 9.2 だからかリポジトリは pgdg92 という名前だ。
- yum でインストールするとき、パッケージ名は postgresql92-server としないと最新版がインストールされなかった(2013年3月時点、PostgreSQL バージョン 9.2)。postgresql ではなかった。
- CentOS の postgres ユーザに変更してから psql コマンドで、PostgreSQL にログインできる。
1.【実際にやってみて】PostgreSQL インストール後にリポジトリを導入してもアップグレードできません><
LAPP 環境、つまり Linux で、Apache で、PostgreSQL で、PHP の開発環境を VirtualBox に作ろうと思いました。
本ブログのような LAMP 環境を作成した時と同じように EPEL、Remi、RPMforge の 3 つのリポジトリを導入して、同じようにインストールすればよいのでしょうと思ったのですけれども、次のコマンドでのインストールでは、PostgreSQL のバージョンが 8 と古かったのです。
# Apache、PostgreSQL、PHP をインストール yum --enablerepo=epel,remi,rpmforge install httpd-devel mod_ssl postgresql-server php php-devel php-pgsql
では、リポジトリを PostgreSQL RPM Repository (with Yum) ページの PostgreSQL 9.2 ブロックの CentOS 5 – i386 リンクから、次のコマンドで導入して PostgreSQL バージョン 9 にアップグレードすればよいですよね?
簡単です!と思ったのですけれども、甘かったです。
# リポジトリをダウンロード wget http://yum.pgrpms.org/9.2/redhat/rhel-5-i386/pgdg-centos92-9.2-6.noarch.rpm # リポジトリをインストール rpm -Uvh pgdg-centos92-9.2-6.noarch.rpm
インストールすればこのリポジトリは最初から有効となっているので、そのまま yum の update、念の為に upgrade も試したのですけれども、PostgreSQL がアップデート対象になりませんでした。PostgreSQL は対象とならずになぜか全く別の普段直接使わないパッケージがアップデート対象になりました。不思議です。
仕方がありませんので、一旦 PostgreSQL をアンインストールしてからもう一度インストールいたしました。
2.【こぼれ話】PostgreSQL はアンインストールも一筋縄ではいきません><
ここで、苦労、というわけではありませんが、へぇ〜と感じいったことがございました。PostgreSQL だけアンインストールしようとしましたら、Apache も、PHP も依存関係によりアンインストールされてしまったのです。
順を追って説明いたします。まずはアンインストールするべき PostgreSQL パッケージを調査いたしました。
[root@localhost tmp]# yum list installed | grep postgresql postgresql.i386 8.1.23-6.el5_8 installed postgresql-libs.i386 8.1.23-6.el5_8 installed postgresql-server.i386 8.1.23-6.el5_8 installed [root@localhost tmp]#
なるほど。postgresql、postgresql-libs、postgresql-server をアンインストールすればよいのですね。それで、実際にアンインストールしてみましたら次のようになりました。
[root@localhost tmp]# yum remove postgresql postgresql-libs postgresql-server Loaded plugins: fastestmirror, security Setting up Remove Process Resolving Dependencies --> Running transaction check ---> Package postgresql.i386 0:8.1.23-6.el5_8 set to be erased ---> Package postgresql-libs.i386 0:8.1.23-6.el5_8 set to be erased --> Processing Dependency: libpq.so.4 for package: php-pgsql --> Processing Dependency: libpq.so.4 for package: apr-util ---> Package postgresql-server.i386 0:8.1.23-6.el5_8 set to be erased --> Running transaction check ---> Package apr-util.i386 0:1.2.7-11.el5_5.2 set to be erased --> Processing Dependency: libaprutil-1.so.0 for package: apr-util-devel --> Processing Dependency: libaprutil-1.so.0 for package: httpd --> Processing Dependency: apr-util = 1.2.7-11.el5_5.2 for package: apr-util-devel ---> Package php-pgsql.i386 0:5.4.13-1.el5.remi set to be erased --> Running transaction check ---> Package apr-util-devel.i386 0:1.2.7-11.el5_5.2 set to be erased --> Processing Dependency: apr-util-devel for package: httpd-devel ---> Package httpd.i386 0:2.2.3-76.el5.centos set to be erased --> Processing Dependency: httpd-mmn = 20051115 for package: php --> Processing Dependency: httpd-mmn = 20051115 for package: mod_ssl --> Processing Dependency: httpd = 2.2.3-76.el5.centos for package: mod_ssl --> Running transaction check ---> Package httpd-devel.i386 0:2.2.3-76.el5.centos set to be erased ---> Package mod_ssl.i386 1:2.2.3-76.el5.centos set to be erased ---> Package php.i386 0:5.4.13-1.el5.remi set to be erased --> Finished Dependency Resolution Dependencies Resolved =============================================================================================== Package Arch Version Repository Size =============================================================================================== Removing: postgresql i386 8.1.23-6.el5_8 installed 11 M postgresql-libs i386 8.1.23-6.el5_8 installed 494 k postgresql-server i386 8.1.23-6.el5_8 installed 9.8 M Removing for dependencies: apr-util i386 1.2.7-11.el5_5.2 installed 164 k apr-util-devel i386 1.2.7-11.el5_5.2 installed 198 k httpd i386 2.2.3-76.el5.centos installed 3.2 M httpd-devel i386 2.2.3-76.el5.centos installed 519 k mod_ssl i386 1:2.2.3-76.el5.centos installed 177 k php i386 5.4.13-1.el5.remi installed 7.9 M php-pgsql i386 5.4.13-1.el5.remi installed 279 k Transaction Summary =============================================================================================== Remove 10 Package(s) Reinstall 0 Package(s) Downgrade 0 Package(s) Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Erasing : apr-util-devel 1/10 Erasing : httpd-devel 2/10 Erasing : httpd 3/10 Erasing : postgresql-server 4/10 Erasing : postgresql 5/10 Erasing : postgresql-libs 6/10 Erasing : mod_ssl 7/10 Erasing : php 8/10 Erasing : apr-util 9/10 Erasing : php-pgsql 10/10 Removed: postgresql.i386 0:8.1.23-6.el5_8 postgresql-libs.i386 0:8.1.23-6.el5_8 postgresql-server.i386 0:8.1.23-6.el5_8 Dependency Removed: apr-util.i386 0:1.2.7-11.el5_5.2 apr-util-devel.i386 0:1.2.7-11.el5_5.2 httpd.i386 0:2.2.3-76.el5.centos httpd-devel.i386 0:2.2.3-76.el5.centos mod_ssl.i386 1:2.2.3-76.el5.centos php.i386 0:5.4.13-1.el5.remi php-pgsql.i386 0:5.4.13-1.el5.remi Complete! [root@localhost tmp]#
なんとなくアンインストールが長いです、、、と思っていたら、PostgreSQL だけではなく、Apache も、PHP も綺麗サッパリ削除されました。。。アイエエエエ。
。。。。。。。。。。いえ、逆にさっぱりしました。これから LAPP 環境をゼロから作ると考えればよいのです!!!
3.【LAPP 環境構築】PostgreSQL をインストールと初期化♪
3−1.PostgreSQL リポジトリ設定
前提条件として、次のリポジトリが導入済みで、いずれも無効にしています。
- EPEL
- Remi
- RPMforge
- PostgreSQL 9.2
PostgreSQL 9.2 リポジトリは、PostgreSQL RPM Repository (with Yum) ページの PostgreSQL 9.2 ブロックの CentOS 5 – i386 リンクからダウンロードし、インストールしました。そのときのコマンドは、本投稿ですでに記述しておりますので割愛いたします。
導入した Postgres リポジトリ設定を修正しまして、デフォルトでは無効となるようにしました。
vim /etc/yum.repos.d/pgdg-92-centos.repo
導入直後は有効となっていますのでこれを無効としました。
[pgdg92] name=PostgreSQL 9.2 $releasever - $basearch baseurl=http://yum.postgresql.org/9.2/redhat/rhel-$releasever-$basearch enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-92
↓
[pgdg92] name=PostgreSQL 9.2 $releasever - $basearch baseurl=http://yum.postgresql.org/9.2/redhat/rhel-$releasever-$basearch enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG-92
3−2.インストールする PostgreSQL のパッケージを改めて探します!
yum の update で postgresql はアップデート対象となりませんでしたことから、PostgreSQL 最新版は違うパッケージ名なのかもしれない可能性に思い当たりました。
そこで、パッケージを検索です。
[root@localhost tmp]# yum --enablerepo=pgdg92 search postgresql Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile * base: ftp.iij.ad.jp * extras: ftp.iij.ad.jp * updates: ftp.iij.ad.jp ===================================== Matched: postgresql ===================================== ・・・略・・・ postgresql84-server.i386 : The programs needed to create and run a PostgreSQL server postgresql84-tcl.i386 : A Tcl client library for PostgreSQL postgresql84-test.i386 : The test suite distributed with PostgreSQL postgresql92.i386 : PostgreSQL client programs and libraries postgresql92-contrib.i386 : Contributed source and binaries distributed with PostgreSQL postgresql92-debuginfo.i386 : Debug information for package postgresql92 postgresql92-devel.i386 : PostgreSQL development header files and libraries postgresql92-docs.i386 : Extra documentation for PostgreSQL postgresql92-jdbc.i386 : JDBC driver for PostgreSQL postgresql92-jdbc-debuginfo.i386 : Debug information for package postgresql92-jdbc postgresql92-libs.i386 : The shared libraries required for any PostgreSQL clients postgresql92-odbc.i386 : PostgreSQL ODBC driver postgresql92-odbc-debuginfo.i386 : Debug information for package postgresql92-odbc postgresql92-plperl.i386 : The Perl procedural language for PostgreSQL postgresql92-plpython.i386 : The Python procedural language for PostgreSQL postgresql92-pltcl.i386 : The Tcl procedural language for PostgreSQL postgresql92-server.i386 : The programs needed to create and run a PostgreSQL server postgresql92-test.i386 : The test suite distributed with PostgreSQL ・・・略・・・
はい、わかりました。postgresql92-server をインストールすればよさそうですっ!
PostgreSQL は、メジャーバージョンの 8 と 9 を明確に分けて扱っているようですね。そのため、postgresql-server とバージョン指定をしないままですと基本的に歴史あるバージョン 8 が採用されると考えればよさそうです。
最新のバージョン 9 を利用するには、明示的に postgresql92-server と指定する必要があるようです♪
3−3.改めて LAPP 環境のパッケージをインストールするのです♪
万感の思いを込めて最新版の PostgreSQL 9.2 をインストールします。いよいよです!
[root@localhost tmp]# yum --enablerepo=epel,pgdg92,remi,rpmforge install httpd-devel mod_ssl postgresql92-server php php-devel php-pgsql ・・・略・・・ Installed: httpd-devel.i386 0:2.2.3-76.el5.centos mod_ssl.i386 1:2.2.3-76.el5.centos php.i386 0:5.4.13-1.el5.remi php-pgsql.i386 0:5.4.13-1.el5.remi postgresql92-server.i386 0:9.2.3-2PGDG.rhel5 Dependency Installed: apr-util.i386 0:1.2.7-11.el5_5.2 apr-util-devel.i386 0:1.2.7-11.el5_5.2 httpd.i386 0:2.2.3-76.el5.centos postgresql-libs.i386 0:8.1.23-6.el5_8 postgresql92.i386 0:9.2.3-2PGDG.rhel5 Complete! [root@localhost tmp]#
無事に次のパッケージがインストールされました。
★yum で指定したパッケージ 5 つ
- httpd-devel.i386 0:2.2.3-76.el5.centos
- mod_ssl.i386 1:2.2.3-76.el5.centos
- php.i386 0:5.4.13-1.el5.remi
- php-pgsql.i386 0:5.4.13-1.el5.remi
- postgresql92-server.i386 0:9.2.3-2PGDG.rhel5
★指定しなかったけれども、依存関係でインストールされたパッケージ 5 つ
- apr-util.i386 0:1.2.7-11.el5_5.2
- apr-util-devel.i386 0:1.2.7-11.el5_5.2
- httpd.i386 0:2.2.3-76.el5.centos
- postgresql-libs.i386 0:8.1.23-6.el5_8
- postgresql92.i386 0:9.2.3-2PGDG.rhel5
3−4.PostgreSQL の初期化、起動、自動起動設定だ!!!
コマンドは postgresql ではなく、postgresql-9.2 を使います!まずは初期化しまし、、、、できません。あれ?
[root@localhost tmp]# /etc/init.d/postgresql-9.2 start /var/lib/pgsql/9.2/data is missing. Use "service postgresql-9.2 initdb" to initialize the cluster first. [失敗] [root@localhost tmp]#
バージョン 8 の PostgreSQL の場合、はじめての start で自動的に初期化されたのですけれども、バージョン 9 では明示的に initdb で初期化しないとダメなようです。
[root@localhost tmp]# service postgresql-9.2 initdb データベースを初期化中: [ OK ] [root@localhost tmp]#
初期化と起動はちがいますので、start で PostgreSQL を起動します。
[root@localhost tmp]# /etc/init.d/postgresql-9.2 start postgresql-9.2 サービスを開始中: [ OK ] [root@localhost tmp]#
サーバ起動時に、PostgreSQL も自動的に起動するように設定しました。設定しまして、確認も行いました♪
[root@localhost tmp]# chkconfig postgresql-9.2 on [root@localhost tmp]# chkconfig --list postgresql-9.2 postgresql-9.2 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@localhost tmp]#
これで設定は完了です♪
3−5.PostgreSQL にログインして、バージョン確認 SQL だ!
最後に、PostgreSQL に実際にログインしてみまして、バージョンを確認する SQL を発行してみます。
なお、調べていく中で知ったのですけれども、PostgreSQL インストール時点で CentOS に postgres ユーザが自動的に追加されます。
[root@localhost ~]# id postgres uid=26(postgres) gid=26(postgres) 所属グループ=26(postgres) [root@localhost ~]#
この postgres ユーザは PostgreSQL の中でのおそらくスーパーユーザの役割を果すのでしょう。インストール作業をしておりました CentOS の root ユーザから CentOS の postgres ユーザに変更しまして、PostgreSQL へアクセスします。
[root@localhost tmp]# su - postgres -bash-3.2$
-bash-3.2$ なんて、はじめて拝見いたしました。なれないと、なんだか怖いです。でも、勇気を出して♪
この段階では、まだ PostgreSQL にはログインしていません。psql コマンドで PostgreSQL へログインします。今回は求められませんでしたけれども別のユーザの場合は、この時にパスワード入力が求められるのでしょうか?
-bash-3.2$ psql psql (9.2.3) "help" でヘルプを表示します. postgres=#
うう、postgres=# ですか。。。またも見慣れぬ表示をされますとは。。。とにかく、これでようやっと SQL を入力できるようになりました。早速、バージョン確認の SQL である、SELECT version() を発行してみます。MySQL と確認方法が異なりますね。
postgres=# SELECT version(); version ----------------------------------------------------------------------------------------------- --------- PostgreSQL 9.2.3 on i686-pc-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54) , 32-bit (1 行) postgres=#
ログインした時にもちらりと表示されましたけれども、これでインストールした PostgreSQL がバージョン 9.2.3 であることがわかりました。
さて、今回はこれまでにいたしましょう。ログアウ、、、ト、はどうすればよいのでしょう?exit とか、quit ではログアウトできません><。あ、¥q でログアウトできました。
postgres=# \q -bash-3.2$
これで PpstgreSQL からログアウトしました。最後に、postgres ユーザから exit しまして今まで作業していたユーザ、今回はroot、に戻りましておしまいです♪
-bash-3.2$ exit logout [root@localhost tmp]#
少し振り返ってみますと、postsql-9.2 コマンドの「-9.2」部分がなんだかわずらわしいですけれども、起動の時のみで、PostgreSQL へログインするときはバージョンの数字は意識しなくてよいですから実際の作業時は、実はわずらわしくないですね♪
作業は異常です♪おつかれさまでした!!!
おわりに
PostgreSQL ってなんですか?わたくし使ったことありません!
ポストグレス・キュー・エルって発音するのですか?言い辛いです!
インストールするの、どうやってやればいいのですか?わたくし知りません!
ログインってどうやるのですか?わたくしわかりません!
そのようなわけで、まずはインストールなのですけれども、ものすごく苦労いたしましたのでメモいたしました。
最後に、参考にさせていただいたページです。PostgreSQL のリポジトリページや、インストールの記録が本当に助けになりました。ありがとうございます。
- PostgreSQL RPM Repository (with Yum)
- CentOS 6.2にPostgreSQL 9.1.3をyumでインストールする – Symfoware
- CentOS 5にPostgreSQLをインストールする – 祈れ、そして働け ~ Ora et labora
以上です。
「【試行錯誤】PostgreSQL 最新版インストールにすごく苦労しましたのでメモ!!!【virtualbox で LAPP 開発環境構築したい】」への1件の返信
[…] 【試行錯誤】PostgreSQL 最新版インストールにすごく苦労しましたのでメモ!!!【virtualbox で LAPP 開発環境構築したい】 | oki2a24 […]