はじめに (対象読者・この記事でわかること)
この記事は、ArchLinux を日常的に使用しているシステム管理者や開発者、そして PostgreSQL のクライアントだけを手軽に利用したい方を対象としています。
- 対象読者: ArchLinux の基本操作ができ、pacman に慣れている方。
- この記事でわかること:
1. PostgreSQL 本体をインストールせずに、psql クライアントだけを導入する理由とメリット。
2. pacman と AUR を使った安全かつ最小構成のインストール手順。
3. 接続先サーバーが外部にある場合の設定ポイントと、よくあるエラーの対処法。
バックエンドのデータベースは別サーバに委託したいが、ローカルで SQL クエリを投げるだけの環境をすぐに構築したいというニーズに応える内容です。
前提知識
この記事を読み進める上で、以下の知識があるとスムーズです。
- ArchLinux の基本的なインストールと pacman の使い方
- PostgreSQL のクライアント・サーバ構成の概要
- 基本的なシェル操作(grep、sed など)
psql クライアントだけをインストールする意味と背景
PostgreSQL はフルスタックのデータベースサーバとして多機能ですが、開発環境や軽量なテスト環境では サーバ自体を立てる必要はなく、クライアントツールだけが欲しい ことがあります。
主なシーンは次の通りです。
-
外部データベースへの接続
会社の社内ネットワークやクラウド上の RDS に対して、ローカルマシンから SQL を叩くだけの用途。サーバ側は管理者がすでに設定しているため、ローカルにサーバを入れるとリソースが無駄になる。 -
軽量な CI/CD パイプライン
ビルド・テストジョブだけで DB マイグレーションや簡易クエリを走らせたいが、Docker イメージを肥大化させたくない。psql のみを入れれば、スクリプトから直接接続できる。 -
教育・学習環境
学習用のノートブックや小規模な VM にデータベースサーバは不要で、SQL の文法や psql の機能だけを試したい。
ArchLinux では postgresql パッケージはデフォルトでサーバとクライアントが同梱されています。サーバ部分を除外した形でインストールする公式パッケージはありません が、postgresql-client という分割パッケージは提供されていません。その代替策として、以下の2つのアプローチが取れます。
- pacman の
postgresqlパッケージをインストールした後、サーバ関連ファイルを手動で無効化(systemd ユニットを無効化し、データディレクトリを削除) - AUR (Arch User Repository) の
psql専用パッケージ を利用し、クライアントだけをビルド・インストール
本稿では、安全性と保守性を重視した AUR からのクライアント単体インストール 手順を中心に解説します。
ArchLinuxでpsqlだけをインストールする手順
以下の手順は、yay(または paru)といった AUR ヘルパーがインストール済みであることを前提にしています。まだ導入していない場合は、公式リポジトリの git と base-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-libs と postgresql の一部を切り出す 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.so が libpq.so.5 へのリンクでないと失敗しました。対処は次の二つです。
- 手動でシンボリックリンクを作成
bash sudo ln -sf /usr/lib/libpq.so.5 /usr/lib/libpq.so yayのビルドオプションに--skipintegを付与し、PKGBUILD のsourceの検証をスキップ(推奨しないが緊急回避策)
最終的に 1 の方法で解決し、パッケージは正常にインストールできました。
まとめ
本記事では、ArchLinux において PostgreSQL サーバをインストールせずに psql クライアントだけを導入する 方法を解説しました。
- AUR の psql-cli パッケージ を使うことで、最小構成のクライアント環境が手に入る
- .pgpass によるパスワード自動入力 でスクリプトからの接続が容易になる
- よくあるエラー(接続先指定忘れ、SSL バージョン不整合、libpq のリンク不足)への対処法を提示
この手順に従えば、余計なサーバコンポーネントをインストールせずに、軽量かつ安全に PostgreSQL とのやり取りが可能です。次のステップとして、Docker コンテナ内で psql クライアントだけを動かす 方法や、自動化された CI パイプラインへの組み込み についても今後記事にしていく予定です。
参考資料
- Arch Linux Wiki – PostgreSQL
- psql-cli AUR Package
- PostgreSQL Documentation – psql
- Arch Linux Wiki – AUR Helpers
