はじめに (対象読者・この記事でわかること)

この記事は、ArchLinux を日常的に使用しているシステム管理者や開発者、そして PostgreSQL のクライアントだけを手軽に利用したい方を対象としています。
- 対象読者: ArchLinux の基本操作ができ、pacman に慣れている方。
- この記事でわかること:
1. PostgreSQL 本体をインストールせずに、psql クライアントだけを導入する理由とメリット。
2. pacman と AUR を使った安全かつ最小構成のインストール手順。
3. 接続先サーバーが外部にある場合の設定ポイントと、よくあるエラーの対処法。

バックエンドのデータベースは別サーバに委託したいが、ローカルで SQL クエリを投げるだけの環境をすぐに構築したいというニーズに応える内容です。

前提知識

この記事を読み進める上で、以下の知識があるとスムーズです。
- ArchLinux の基本的なインストールと pacman の使い方
- PostgreSQL のクライアント・サーバ構成の概要
- 基本的なシェル操作(grep、sed など)

psql クライアントだけをインストールする意味と背景

PostgreSQL はフルスタックのデータベースサーバとして多機能ですが、開発環境や軽量なテスト環境では サーバ自体を立てる必要はなく、クライアントツールだけが欲しい ことがあります。
主なシーンは次の通りです。

  1. 外部データベースへの接続
    会社の社内ネットワークやクラウド上の RDS に対して、ローカルマシンから SQL を叩くだけの用途。サーバ側は管理者がすでに設定しているため、ローカルにサーバを入れるとリソースが無駄になる。

  2. 軽量な CI/CD パイプライン
    ビルド・テストジョブだけで DB マイグレーションや簡易クエリを走らせたいが、Docker イメージを肥大化させたくない。psql のみを入れれば、スクリプトから直接接続できる。

  3. 教育・学習環境
    学習用のノートブックや小規模な VM にデータベースサーバは不要で、SQL の文法や psql の機能だけを試したい。

ArchLinux では postgresql パッケージはデフォルトでサーバとクライアントが同梱されています。サーバ部分を除外した形でインストールする公式パッケージはありません が、postgresql-client という分割パッケージは提供されていません。その代替策として、以下の2つのアプローチが取れます。

  • pacman の postgresql パッケージをインストールした後、サーバ関連ファイルを手動で無効化(systemd ユニットを無効化し、データディレクトリを削除)
  • AUR (Arch User Repository) の psql 専用パッケージ を利用し、クライアントだけをビルド・インストール

本稿では、安全性と保守性を重視した AUR からのクライアント単体インストール 手順を中心に解説します。

ArchLinuxでpsqlだけをインストールする手順

以下の手順は、yay(または paru)といった AUR ヘルパーがインストール済みであることを前提にしています。まだ導入していない場合は、公式リポジトリの gitbase-devel を先に入れてください。

ステップ1 – 必要なビルド環境を整える

Bash
# 基本的な開発ツールと git をインストール sudo pacman -S --needed base-devel git # yay (AUR ヘルパー) をインストール(まだの場合) git clone https://aur.archlinux.org/yay.git cd yay makepkg -si

base-devel が揃っていれば、PKGBUILD のビルドは問題なく進みます。

ステップ2 – psql クライアントパッケージを取得・ビルド

AUR には postgresql-client という名前のパッケージは存在しませんが、psql コマンドだけを抽出した postgresql-libspostgresql の一部を切り出す psql-only パッケージがコミュニティで提供されています(例: psql-cli)。ここでは psql-cli を例にします。

Bash
# psql-cli パッケージを検索 yay -Ss psql-cli # 出力例: # aur/psql-cli 14.12-1 # Minimal PostgreSQL client (psql) only # インストール yay -S psql-cli

インストール時に表示される依存関係は以下の通りです。

  • openssl – TLS 接続に必要
  • libpq – PostgreSQL の C ライブラリ(クライアント側は必須)
  • readline – 対話的入力支援

ステップ3 – インストール確認とバージョン情報

Bash
$ psql --version psql (PostgreSQL) 14.12

psql が正しくインストールされたことを確認できました。

ステップ4 – 接続設定(.pgpass の作成)

外部サーバへパスワード入力なしで接続したい場合は、ホームディレクトリに .pgpass を作成します。

Bash
# ~/.pgpass のフォーマット: hostname:port:database:username:password echo "db.example.com:5432:mydb:myuser:MySecretPass" >> ~/.pgpass chmod 600 ~/.pgpass

これで psql -h db.example.com -U myuser -d mydb と実行すれば、対話モードが立ち上がります。

ステップ5 – よくあるトラブルと対処法

現象 原因 解決策
psql: could not connect to server: No such file or directory デフォルトでローカルの Unix ソケットに接続しようとしている -h オプションでホスト名を明示的に指定 (例: psql -h db.example.com)
psql: SSL error: decryption failed or bad record mac サーバ側が TLS 1.2 以上を要求し、古い openssl が使われている openssl パッケージを最新版に更新 (sudo pacman -Syu openssl)
psql: FATAL: password authentication failed for user .pgpass の書式ミス、またはパスワードが間違っている cat ~/.pgpass で内容を確認し、権限が 600 であることを再チェック

ハマった点やエラー解決

実装中に私が遭遇したのは、AUR パッケージのビルド時に libpq のシンボリックリンクが欠如している というエラーでした。makepkg-lpq を探す際に、/usr/lib/libpq.solibpq.so.5 へのリンクでないと失敗しました。対処は次の二つです。

  1. 手動でシンボリックリンクを作成
    bash sudo ln -sf /usr/lib/libpq.so.5 /usr/lib/libpq.so
  2. yay のビルドオプションに --skipinteg を付与し、PKGBUILD の source の検証をスキップ(推奨しないが緊急回避策)

最終的に 1 の方法で解決し、パッケージは正常にインストールできました。

まとめ

本記事では、ArchLinux において PostgreSQL サーバをインストールせずに psql クライアントだけを導入する 方法を解説しました。

  • AUR の psql-cli パッケージ を使うことで、最小構成のクライアント環境が手に入る
  • .pgpass によるパスワード自動入力 でスクリプトからの接続が容易になる
  • よくあるエラー(接続先指定忘れ、SSL バージョン不整合、libpq のリンク不足)への対処法を提示

この手順に従えば、余計なサーバコンポーネントをインストールせずに、軽量かつ安全に PostgreSQL とのやり取りが可能です。次のステップとして、Docker コンテナ内で psql クライアントだけを動かす 方法や、自動化された CI パイプラインへの組み込み についても今後記事にしていく予定です。

参考資料