PostgreSQLをyumでインストール(yumとrpmの復習込み)
概要
PostgreSQLをCentOSにインストールしようと思って調べたところ、yumを使った方法が何種類か見つかりました。 どれも根本は同じ事をしているように見えますが、コマンドが微妙に違っています。 yumとrpmについて自分の理解度が低かったせいで混乱しかけたので、改めてyumとrpmの関係を復習しつつPostgreSQLのインストールを実践してみようと思います。
前提
Cent OS 6.7を対象
PostgreSQL未インストール状態から開始
yumとrpmの違い
Google検索で上位に出てきたこちらのサイトが大変分かりやすかったです。
(参考サイト1:初心者の頃に知っておきたかった rpm と yum の違いと使い分け - 彼女からは、おいちゃんと呼ばれています)
(参考サイト2:【パッケージ】Linuxの「パッケージ」と「yum」と「rpm」について勉強したのでまとめてみた。 - Qiita)
一通り読んでから自分なりに要点をまとめました。
(1) yum installもrpm -iも「rpm形式のパッケージ」のインストールに利用する
(2) yumは依存関係を解決してくれるので、基本こちらを使う
(3) yumだとリポジトリを見に行くが探していたパッケージが無い事がある。(最新バージョンが無いことがよくある
(4) rpm -iは事前にパッケージをダウンロードして指定するか、パッケージのURLを指定する
(5) yumリポジトリに無いパッケージをインストールしたいときは、yumリポジトリを追加するか、パッケージのファイルを探してrpmコマンドでインストールする
こう考えると、(1)と(6)を見るとyum installとrpm -iは、依存性を解消すること以外はどちらでインストールしても内部的にはほぼ同じように見えます。
PostgreSQLをyumでインストール(共通部分)
インストール方法を調べてみたところ、いくつかのサイトが見つかりました。
まずは共通でやっておくと良いことを書きます。
既にPostgreSQLがインストールされているか確認し、不要なバージョンが入っていたらyum removeで削除します。
(参考サイト:PostgreSQL のインストール - cmemo)
yum list installed | grep postgres
また、デフォルトのyumリポジトリでどのバージョンをインストールできるか確認します。
(参考サイト:PostgreSQL9.3をCentOS6にyumで入れて設定するまでの手順まとめ | IDEA*IDEA)
yum list | grep postgresql
自分の環境では8.4のようでした。
今回は9系をインストールするため、yumの設定を変更して、デフォルトのリポジトリからはPostgreSQLをインストールしないようにします。
(参考サイト:CentOS 6 に PostgreSQL 9.x を yum インストールする手順 | WEB ARCH LABO)
vim /etc/yum.repos.d/CentOS-Base.repo // [base]と[updates]の範囲内に それぞれ、exclude=postgresql* の行を追加
PostgreSQLが公式でyumリポジトリを公開しているので次はそれをインストールします。yumとrpmのどちらでリポジトリをインストールするかでパターンを分けました。
A. PostgreSQLのyumリポジトリをyum local installでインストールするパターン
(参考サイト:PostgreSQL のインストール - cmemo)
// PostgreSQL9.4のインストール方法 wget http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm yum localinstall pgdg-centos94-9.4-1.noarch.rpm yum -y install postgresql94-server postgresql94-devel postgresql94-contrib
yumのリポジトリはrpmやyumコマンドでインストールすることで追加可能です。自分はこれがすぐに分からなかったので少し躓きました。
yum localinstallというコマンドを使うと、リポジトリ以外のところから依存関係を解消したうえでyumインストールができるようです。
上2行でPostgreSQL9.4のリポジトリを追加をして、そのあとは普通にyumでインストールしています。
※参考サイトでは明言されていませんでしたが、ここで追加したリポジトリは設定変更しなくても勝手に利用してくれました。
また、yum localinstallの部分はダウンロードしたファイルだけでなくURLも指定できるようです。
(参考サイト:CentOS 6 に PostgreSQL 9.x を yum インストールする手順 | WEB ARCH LABO)
// PostgreSQL9.4のインストール方法 yum -y localinstall http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm yum -y install postgresql94-server postgresql94-devel postgresql94-contrib
B. PostgreSQLのyumリポジトリをrpmでインストールするパターン
(参考サイト:CentOS 7にPostgreSQL最新版をインストール - 働きたくないゆとりの備忘録)
// PostgreSQL9.4のインストール方法 wget http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm rpm -ivh pgdg-centos94-9.4-1.noarch.rpm yum -y install postgresql94-server postgresql94-devel postgresql94-contrib
こちらはダウンロードしたPostgreSQLのyumリポジトリをrpmを使ってインストールしています。
または、rpm -i のときに直接URL指定もできるようです。
(参考サイト:PostgreSQL9.3をCentOS6にyumで入れて設定するまでの手順まとめ | IDEA*IDEA)
// PostgreSQL9.4のインストール方法 rpm -i http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm yum -y install postgresql94-server postgresql94-devel postgresql94-contrib
PostgreSQLの初期設定
インストール後の初期設定は、いくつかのサイトを見ましたが既に何度も引用しているこちらのブログがユーザ作成のところまで丁寧に書かれていました。
(参考サイト:PostgreSQL9.3をCentOS6にyumで入れて設定するまでの手順まとめ | IDEA*IDEA)
今回はPostgreSQL9.4をインストールしたのでそこだけ変更して、あとは参考サイト通りのコマンドを打ってDB初期化、起動設定、ユーザ作成まで行えました。
以下、PostgreSQLインストール後の手順について参考サイトからの引用です。
DBクラスタの作成と起動設定
service postgresql-9.4 initdb chkconfig postgresql-9.4 on service postgresql-9.4 status service postgresql-9.4 start
postgresqlユーザが作成されているので、パスワードを決めてユーザに切り替えします。このユーザはスーパーユーザ的な扱いらしいです。
passwd postgres su - postgres
PostgreSQLにログインしてDB作業用ユーザを作成。(CentOSの既存ユーザ名と同じ名前に合わせる必要がある)
psql create user 【ユーザ名】 createdb password '【パスワード】' login; ¥q exit sudo su - 【ユーザ名】
新しいDBの作成とログイン
createdb 【DB名】 psql 【DB名】
まとめ
yumとrpmが別物と思っていたときはなんか色々な方法があるように見えましたが、分かってみると超シンプルでした。
いずれの方法も、PostgreSQLが公開しているリポジトリをインストールして、そのあとyumでインストールしてるだけだったようです。
こんな簡単なことで、どの手順を選ぶべきか迷っていたのが恥ずかしいですが、yumとrpmの基本を確認できました。
次はPostgreSQLをPythonから利用する方法について調べてみます。
おまけ
本文内では引用しませんでしたが、「PostgreSQL公式」と「日本PostgreSQLユーザ会」からリンクされていたインストール方法の説明リンクを載せます。