Posted at

Amazon Linux 2 にPostgreSQL 11 をインストールする


概要

AWSのEC2インスタンスを Amazon Linux 2 で作成し、PostgreSQL11のクライアントをインストールしようとしたところ少しハマったので手順を書きます。


実行環境

Amazon Linux release 2 (Karoo)


手順

インストール手順

$ sudo rpm -ivh --nodeps https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

上記コマンド実行後、 PostgreSQLのリポジトリ設定について確認する。


/etc/yum.repos.d/pgdg-redhat-all.repo

一部を確認したいだけなのでpgdg11部分のみ抜粋

[pgdg11]
name=PostgreSQL 11 $releasever - $basearch
baseurl=https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-$releasever-$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-PGDG

リポジトリファイルには変数 \$releasever と \$basearch があるが、AmazonLinux 2 では、 \$releaserver は system-release のバージョン番号で、\$basearch はアーキテクチャのようだ。

確認したところ、 system-release は "release 2" なので \$releaserver は "2" となる。

$basearch はアーキテクチャで "x86_64" となる。

$ cat /etc/system-release

Amazon Linux release 2 (Karoo)

$ arch
x86_64

つまり、この場合、リポジトリに記載されているbaseurlは

"https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-2-x86_64"

になるのだが、そのようなパスは存在しないので404になる。

AmazonLinux2 はredhat7をベースにしているようなので、

"https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64"

としたい。そのため、以下のコマンドで一括置換する。


/etc/yum.repos.d/pgdg-redhat-all.repo

sudo sed -i "s/\$releasever/7/g" "/etc/yum.repos.d/pgdg-redhat-all.repo"


あとはインストールするだけ。必要なものをインストールすればよいですが、ここではクライアントのみインストールする例。

$ sudo yum install -y postgresql11

以上!