Ubuntu22.04にPostgreSQL17をインストールしてみた

Date:

Share post:

長年LAMP使いとして生きてきましたが、昨今PostgreSQLに勢いがあるようで、ちょっと浮気をしてみようかと。
と言うことで、今回はUbuntuに現時点の最新バージョンであるPostgreSQL17をインストールしてみた話です。

まずは仮想マシン構築

例によって試行錯誤のやり易い「VirtualBox+Vagrant」環境上にUbuntuの仮想マシンを構築しようとしたのですが、どうもVagrantのBox(仮想マシンイメージファイル)として公式に提供されるUbuntuのバージョンは22.04(jammy)で打ち止めだったらしく、現時点での最新バージョンである24.04の公式Boxは入手できないようです。

派生系(?)Boxでは24.04に対応するものもあるようですが、うまく環境構築できなかったので、おとなしく使い慣れた「ubuntu/jammy」を使うことにします。

仮想マシンが起動したら、既存パッケージを最新化しておきます。

# apt update
# apt upgrade

PostgreSQLのインストール

まずは、Ubuntu22.04の公式リポジトリからインストールできるPostgreSQLを確認してみます。

# apt show postgresql
Package: postgresql
Version: 14+238
Priority: optional
Section: database
Source: postgresql-common (238)
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian PostgreSQL Maintainers <team+postgresql@tracker.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 71.7 kB
Depends: postgresql-14
Suggests: postgresql-doc
Task: postgresql-server
Download-Size: 3288 B
APT-Sources: http://archive.ubuntu.com/ubuntu jammy/main amd64 Packages
Description: object-relational SQL database (supported version)
 This metapackage always depends on the currently supported PostgreSQL
 database server version.
 .
 PostgreSQL is a fully featured object-relational database management
 system.  It supports a large part of the SQL standard and is designed
 to be extensible by users in many aspects.  Some of the features are:
 ACID transactions, foreign keys, views, sequences, subqueries,
 triggers, user-defined types and functions, outer joins, multiversion
 concurrency control.  Graphical user interfaces and bindings for many
 programming languages are available as well.

案の定、PostgreSQL14と少々古いです。
よって、PostgreSQLの公式リポジトリから最新のPostgreSQLを取得できるよう、aptの参照リポジトリリストに情報を追加します。

# sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

また、上記リポジトリからのパッケージ取得を有効にするためには、対応するGPGキーの登録を合わせて行なっておく必要があるようです。

# wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc | tee /etc/apt/trusted.gpg.d/pgdg.asc &>/dev/null

上記を実施したら、登録結果が有効になるように再度以下のコマンドを実行します。

# apt update

改めてインストール可能なPostgreSQLを確認してみましょう。

# apt show postgresql
Package: postgresql
Version: 17+267.pgdg22.04+1
Priority: optional
Section: database
Source: postgresql-common (267.pgdg22.04+1)
Maintainer: Debian PostgreSQL Maintainers <team+postgresql@tracker.debian.org>
Installed-Size: 74.8 kB
Depends: postgresql-17
Suggests: postgresql-doc
Download-Size: 69.9 kB
APT-Sources: http://apt.postgresql.org/pub/repos/apt jammy-pgdg/main amd64 Packages
Description: object-relational SQL database (supported version)
 This metapackage always depends on the currently supported PostgreSQL
 database server version.
 .
 PostgreSQL is a fully featured object-relational database management
 system.  It supports a large part of the SQL standard and is designed
 to be extensible by users in many aspects.  Some of the features are:
 ACID transactions, foreign keys, views, sequences, subqueries,
 triggers, user-defined types and functions, outer joins, multiversion
 concurrency control.  Graphical user interfaces and bindings for many
 programming languages are available as well.

N: There is 1 additional record. Please use the '-a' switch to see it

PostgreSQL17がインストール対象となりました。
早速インストールしてみます。

# apt install postgresql-17 -y

期待通りPostgreSQL17がインストールできたか確認してみましょう。

# apt list --installed | grep postgresql

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

postgresql-17/jammy-pgdg,now 17.2-1.pgdg22.04+1 amd64 [installed]
postgresql-client-17/jammy-pgdg,now 17.2-1.pgdg22.04+1 amd64 [installed,automatic]
postgresql-client-common/jammy-pgdg,now 267.pgdg22.04+1 all [installed,automatic]
postgresql-common/jammy-pgdg,now 267.pgdg22.04+1 all [installed,automatic]

問題なさそうです。

PostgreSQLの起動

PostgreSQLを起動してみます。
システム起動時に自動起動されるよう合わせて設定しておきます。

# systemctl enable postgresql
# systemctl start postgresql

起動結果を確認してみます。

# systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Fri 2025-01-24 02:31:07 UTC; 4min 43s ago
   Main PID: 35331 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Jan 24 02:31:07 ubuntu-jammy systemd[1]: Starting PostgreSQL RDBMS...
Jan 24 02:31:07 ubuntu-jammy systemd[1]: Finished PostgreSQL RDBMS.

問題なさそうです。

一応、psqlコマンドの存在&動作も確認しておきましょう。

# psql --version
psql (PostgreSQL) 17.2 (Ubuntu 17.2-1.pgdg22.04+1)

こちらも問題なさそうです。

まとめ

まずはPostgreSQL17を動かせる環境ができました。

今更になってPostgreSQLを使ってみたくなった点に関してはそれなりの動機があるのですが、その辺は追々。

画像検索

Related articles

画像検索

昨今の投稿で触れてきたエンベディング...

画像データのエンベディング

昨今、ベクトル検索に絡む投稿を続けて...

PostgreSQLでベクトル検索

先にPostgreSQL関連の記事を...

ローカルSMTPメールサーバ(Mailpit)をE...

ローカル環境でのメール送受信テストにつ...