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-devlibsystemd-devlibxml2-devlibreadline-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: これはグローバル構成ファイルであり、システム全体で環境変数と起動構成を設定するために使用されます。すべてのユーザーがシステムにログインすると、このファイルの設定が実行されます。
  1. 環境変数を追加します
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: ユーザーの home ディレクトリを作成します。
  • -U: ユーザー名と同じユーザーグループを同時に作成します。
  • -r: システムユーザーを作成します(システムユーザー UID は 1000 未満であり、ログインには使用されません)。
  • -d /var/lib/postgresql: home ディレクトリを /var/lib/postgresql に指定します。
  • -s /bin/bash: shell を /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 のコマンドライン対話ツールで、データベース shell に入ります。

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 を自動的に起動します。

これらのコマンドの目的は次のとおりです。

  1. PostgreSQL の実行専用の postgres ユーザーを作成します。
  2. データベースストレージディレクトリを初期化します。
  3. PostgreSQL データベースを起動し、psql 対話型コマンドラインに入ります。
  4. systemd を構成して、PostgreSQL をシステムサービスとして実行し、起動時の自動起動をサポートします。

このようにして、PostgreSQL サーバーは正常に実行され、システムの起動時に自動的に起動できます。

参考文献

PostgreSQL: Documentation: 17: Chapter 17. Installation from Source Code

この記事はAIによって Chinese (Simplified) から Japanese に翻訳されました。