我成功在 Ubuntu ARM32 上编译安装了最新版 PostgreSQL ( 17.4 )。
这篇文章中的命令主要来源于 PostgreSQL 官方文档。我已经实际测试过这篇文章中的每个命令。
可以在这里看到能够成功安装的系统 PostgreSQL 构建农场
mkdir postgresql && cd postgresql
mkdir postgresql
:创建一个名为 postgresql
的新目录。cd postgresql
:进入刚刚创建的 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 版本的压缩源代码包的下载链接。如果链接失效,您可以自行查找新链接。tar xjf postgresql-17.4.tar.bz2
tar
:用于处理 .tar
压缩文件。
xjf
:解压 tar
文件的选项:
x
:解压文件。j
:使用 bzip2 压缩格式(.bz2)。f
:指定要解压的文件。postgresql-17.4.tar.bz2
:要解压的文件名。
cd postgresql-17.4
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 库。./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 支持。make -j$(nproc)
make
:启动编译过程。-j$(nproc)
:使用 nproc
(系统的 CPU 核心数)来并行执行编译任务,加速编译过程。sudo make install
sudo make install
:使用 sudo
以管理员权限执行安装,make install
将编译好的文件安装到系统中,安装到前面 ./configure
命令中指定的 /usr/local/pgsql
目录。使用文本编辑器 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
),而不需要提供完整路径。修改后的设置会对所有用户生效
这些命令主要用于在 Linux 服务器上手动配置 PostgreSQL 数据库服务器,包括创建 PostgreSQL 系统用户、初始化数据库、启动数据库服务,并将其注册为 systemd
服务,以便开机自动启动。
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
。
sudo chown postgres /usr/local/pgsql
chown postgres /usr/local/pgsql
:将 /usr/local/pgsql
目录的所有者更改为 postgres
用户,使其可以读写该目录。sudo passwd postgres
passwd postgres
:修改 postgres
用户的密码。su postgres
su postgres
:切换到 postgres
用户,以便使用 PostgreSQL 相关命令。/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
initdb -D /usr/local/pgsql/data
:在 /usr/local/pgsql/data
目录中初始化数据库存储。/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
postgres -D /usr/local/pgsql/data
:以 postgres
进程启动数据库,数据存储在 /usr/local/pgsql/data
目录。su postgres
/usr/local/pgsql/bin/psql
psql
:PostgreSQL 的命令行交互工具,进入数据库 shell。ALTER USER postgres WITH PASSWORD 'your_new_password';
postgres
的密码。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
:超时设置为无限。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。这些命令的目的是:
postgres
用户。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