私は Ubuntu ARM32 上で最新の PostgreSQL (17.4) をコンパイルしてインストールすることに成功しました。
この記事のコマンドは主に PostgreSQL の公式ドキュメントからのものです。この記事に含まれる各コマンドは実際にテスト済みです。
ここで成功したインストールができるシステムを確認できます PostgreSQL ビルドファーム
PostgreSQL 17.4 のコンパイルとインストール#
1. ディレクトリを作成し、ディレクトリに入る#
mkdir postgresql && cd postgresql
mkdir postgresql
:postgresql
という名前の新しいディレクトリを作成します。cd postgresql
:作成したばかりのpostgresql
ディレクトリに入ります。
2. PostgreSQL ソースコードをダウンロード#
wget https://ftp.postgresql.org/pub/source/v17.4/postgresql-17.4.tar.bz2
wget
:指定された URL からファイルをダウンロードします。https://..../postgresql-17.4.tar.bz2
:PostgreSQL 17.4 バージョンの圧縮ソースコードパッケージのダウンロードリンクです。リンクが無効な場合は、新しいリンクを自分で探してください。
3. ソースコードパッケージを解凍#
tar xjf postgresql-17.4.tar.bz2
-
tar
:.tar
圧縮ファイルを処理するためのコマンドです。 -
xjf
:tar
ファイルを解凍するオプション:x
:ファイルを解凍します。j
:bzip2 圧縮形式(.bz2)を使用します。f
:解凍するファイルを指定します。
-
postgresql-17.4.tar.bz2
:解凍するファイル名です。
4. 解凍されたソースコードディレクトリに入る#
cd postgresql-17.4
- 解凍された PostgreSQL 17.4 ソースコードディレクトリに入ります。
5. 依存パッケージをインストール#
sudo apt install libssl-dev libsystemd-dev libxml2-dev libreadline-dev
sudo apt install
:apt
パッケージマネージャを使用してソフトウェアパッケージをインストールします。libssl-dev
、libsystemd-dev
、libxml2-dev
、libreadline-dev
:PostgreSQL のコンパイルに必要な開発ライブラリをインストールします。それぞれ SSL ライブラリ、Systemd ライブラリ、XML ライブラリ、Readline ライブラリです。
6. コンパイルオプションを設定#
./configure --prefix=/usr/local/pgsql --with-openssl --with-libxml --with-systemd
./configure
:PostgreSQL のコンパイル環境を準備します。--prefix=/usr/local/pgsql
:PostgreSQL のインストールディレクトリを/usr/local/pgsql
に指定します。--with-openssl
:OpenSSL サポートを有効にします。--with-libxml
:XML サポートを有効にします。--with-systemd
:Systemd サポートを有効にします。
7. ソースコードをコンパイル#
make -j$(nproc)
make
:コンパイルプロセスを開始します。-j$(nproc)
:nproc
(システムの CPU コア数)を使用してコンパイルタスクを並行して実行し、コンパイルプロセスを加速します。
8. PostgreSQL をインストール#
sudo make install
sudo make install
:sudo
を使用して管理者権限でインストールを実行します。make install
はコンパイルされたファイルをシステムにインストールし、前の./configure
コマンドで指定した/usr/local/pgsql
ディレクトリにインストールします。
9. 環境変数を設定#
テキストエディタを使用して 1. /etc/profile
ファイルを編集:
sudo nano /etc/profile
sudo
:スーパーユーザー(管理者)権限でコマンドを実行することを示します。/etc/profile
ファイルを変更するには管理者権限が必要です。nano
:ターミナル環境でファイルを編集するためによく使用されるテキストエディタです。/etc/profile
:システム全体の環境変数や起動設定を設定するためのグローバル設定ファイルです。すべてのユーザーがシステムにログインすると、このファイル内の設定が実行されます。
- 環境変数を追加:
export PATH=/usr/local/pgsql/bin:$PATH
export
:環境変数を設定し、現在および子プロセスで利用できるようにします。PATH
:システム内の実行可能ファイルのディレクトリリストを含む環境変数です。システムはコマンドを実行する際、PATH
変数にリストされたディレクトリに基づいてコマンドを検索します。/usr/local/pgsql/bin
:PostgreSQL データベースの実行可能ファイルのディレクトリで、これを追加することでこのディレクトリ内の実行可能ファイル(例:psql
)がシステムに認識されます。:$PATH
:ここで$PATH
は元々のパスを表し、新しいパス/usr/local/pgsql/bin
を元のPATH
の前に追加します。これにより、システムは新しいディレクトリを最初にチェックし、その後元のパスをチェックします。
このコマンドの目的は、PostgreSQL の実行可能ファイルのディレクトリをシステムの環境変数 PATH
に追加し、コマンドラインで PostgreSQL のコマンド(例:psql
)を直接実行できるようにすることです。完全なパスを提供する必要はありません。変更後の設定はすべてのユーザーに対して有効になります。
PostgreSQL データベースの初期化#
これらのコマンドは、Linux サーバー上で PostgreSQL データベースサーバーを手動で構成するために主に使用されます。これには、PostgreSQL システムユーザーの作成、データベースの初期化、データベースサービスの起動、および systemd
サービスとして登録して自動起動を可能にすることが含まれます。
1. PostgreSQL ユーザーを作成#
sudo useradd -m -U -r -d /var/lib/postgresql -s /bin/bash postgres
sudo
:スーパーユーザー権限でコマンドを実行します。useradd
:新しいユーザーを作成します。-m
:ユーザーのホームディレクトリを作成します。-U
:ユーザー名と同じ名前のユーザーグループを同時に作成します。-r
:システムユーザーを作成します(システムユーザーの UID は 1000 未満で、ログインには使用されません)。-d /var/lib/postgresql
:ホームディレクトリを/var/lib/postgresql
に指定します。-s /bin/bash
:シェルを/bin/bash
に指定します。postgres
:ユーザー名です。
このコマンドは PostgreSQL 専用のシステムユーザー postgres
を作成します。
2. PostgreSQL ディレクトリの所有者を変更#
sudo chown postgres /usr/local/pgsql
chown postgres /usr/local/pgsql
:/usr/local/pgsql
ディレクトリの所有者をpostgres
ユーザーに変更し、そのディレクトリを読み書きできるようにします。
3. PostgreSQL ユーザーのパスワードを設定#
sudo passwd postgres
passwd postgres
:postgres
ユーザーのパスワードを変更します。
4. PostgreSQL ユーザーに切り替え#
su postgres
su postgres
:postgres
ユーザーに切り替えて、PostgreSQL 関連のコマンドを使用します。
5. データベースを初期化#
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
initdb -D /usr/local/pgsql/data
:/usr/local/pgsql/data
ディレクトリにデータベースストレージを初期化します。
6. PostgreSQL データベースを起動#
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
postgres -D /usr/local/pgsql/data
:postgres
プロセスとしてデータベースを起動し、データは/usr/local/pgsql/data
ディレクトリに保存されます。
7. 別のターミナルセッションでデータベースに入る#
su postgres
/usr/local/pgsql/bin/psql
psql
:PostgreSQL のコマンドラインインターフェースツールで、データベースシェルに入ります。
8. データベースユーザーのパスワードを設定#
ALTER USER postgres WITH PASSWORD 'your_new_password';
- データベースユーザー
postgres
のパスワードを変更します。
9. systemd
サービスを作成#
sudo nano /etc/systemd/system/postgresql.service
nano /etc/systemd/system/postgresql.service
:systemd
設定ファイルを編集し、PostgreSQL をサービスとして実行できるようにします。
設定ファイルの内容:
[Unit]
Description=PostgreSQL server
#Documentation=man:postgres(1)
After=network-online.target
Wants=network-online.target
[Service]
Type=notify
User=postgres
ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=infinity
[Install]
WantedBy=multi-user.target
Description=PostgreSQL server
:このサービスが PostgreSQL サーバーであることを説明します。After=network-online.target
:ネットワーク接続が利用可能になった後に PostgreSQL を起動します。User=postgres
:postgres
ユーザーとして実行します。ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
:PostgreSQL サーバーを起動します。ExecReload=/bin/kill -HUP $MAINPID
:リロード時にHUP
信号を送信します。KillMode=mixed
:混合終了モードです。KillSignal=SIGINT
:PostgreSQL プロセスを終了させる信号です。TimeoutSec=infinity
:タイムアウトを無限に設定します。
10. systemd
サービスを有効にする#
sudo systemctl daemon-reload
sudo systemctl start postgresql
sudo systemctl status postgresql
sudo systemctl enable postgresql
daemon-reload
:systemd
設定を再読み込みし、新しいpostgresql.service
を有効にします。start postgresql
:PostgreSQL サービスを起動します。status postgresql
:PostgreSQL の実行状態を確認します。enable postgresql
:システム起動時に PostgreSQL を自動的に起動します。
これらのコマンドの目的は:
- PostgreSQL を実行するための専用の
postgres
ユーザーを作成します。 - データベースストレージディレクトリを初期化します。
- PostgreSQL データベースを起動し、
psql
インタラクティブコマンドラインに入ります。 systemd
を構成して PostgreSQL をシステムサービスとして実行し、システム起動時に自動起動をサポートします。
これにより、PostgreSQL サーバーは正常に動作し、システム起動時に自動的に起動できるようになります。
参考資料#
PostgreSQL: Documentation: 17: Chapter 17. Installation from Source Code
このウェブページの他のバージョン#
この記事には多言語のバージョンがあります。
コメントを残したい場合は、以下のウェブページにアクセスしてください:
これらのウェブページはブラウジング専用で、コメントやメッセージを残すことはできませんが、より多くの言語オプションを提供し、読み込み時間が短くなります:
ZH EN ZH-TW JA RU KO CS ES AR FR PT DE TR IT NL SV DA FI PL UK HE RO HU EL HR TH HI BN ID SW VI NO