PostgreSQLをyumでインストール(yumとrpmの復習込み)

概要

PostgreSQLCentOSにインストールしようと思って調べたところ、yumを使った方法が何種類か見つかりました。 どれも根本は同じ事をしているように見えますが、コマンドが微妙に違っています。 yumrpmについて自分の理解度が低かったせいで混乱しかけたので、改めてyumrpmの関係を復習しつつPostgreSQLのインストールを実践してみようと思います。

前提

Cent OS 6.7を対象

PostgreSQL未インストール状態から開始

yumrpmの違い

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コマンドでインストールする

(6) yumも内部的にはrpmを呼び出している

こう考えると、(1)と(6)を見るとyum installとrpm -iは、依存性を解消すること以外はどちらでインストールしても内部的にはほぼ同じように見えます。

PostgreSQLyumでインストール(共通部分)

インストール方法を調べてみたところ、いくつかのサイトが見つかりました。

まずは共通でやっておくと良いことを書きます。

既に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リポジトリを公開しているので次はそれをインストールします。yumrpmのどちらでリポジトリをインストールするかでパターンを分けました。

A. PostgreSQLyumリポジトリ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リポジトリrpmyumコマンドでインストールすることで追加可能です。自分はこれがすぐに分からなかったので少し躓きました。

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. PostgreSQLyumリポジトリ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

こちらはダウンロードしたPostgreSQLyumリポジトリ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名】

まとめ

yumrpmが別物と思っていたときはなんか色々な方法があるように見えましたが、分かってみると超シンプルでした。

いずれの方法も、PostgreSQLが公開しているリポジトリをインストールして、そのあとyumでインストールしてるだけだったようです。

こんな簡単なことで、どの手順を選ぶべきか迷っていたのが恥ずかしいですが、yumrpmの基本を確認できました。

次はPostgreSQLPythonから利用する方法について調べてみます。

おまけ

本文内では引用しませんでしたが、「PostgreSQL公式」と「日本PostgreSQLユーザ会」からリンクされていたインストール方法の説明リンクを載せます。

yumでPostgreSQLをインストールしてみよう — Let's Postgres

PostgreSQL: Linux downloads (Red Hat family)