PostgreSQL for ubuntu build

给Ubuntu系统创建postgresql用户

1
2
# 如果用户已存在,会提示,可以忽略
sudo adduser --system --group --home /var/lib/postgresql postgres

安装依赖包

1
2
3
4
sudo apt update
sudo apt install -y build-essential pkg-config libicu-dev bison flex \
libreadline-dev zlib1g-dev libxml2-dev libxslt-dev libssl-dev \
libxml2-utils xsltproc ccache libsystemd-dev

编译安装

进入源码目录后,执行如下命令。请务必将 $ver 和 $type 替换为你实际的版本号(如 16)和类型(通常为 main)

1
2
3
4
5
6
7
8
9
10
11
export ver=18.6
export type=main
./configure \
--prefix=/usr/lib/postgresql/$ver \
--bindir=/usr/lib/postgresql/$ver/bin \
--sysconfdir=/etc/postgresql/$ver/$type \
--datarootdir=/usr/share/postgresql/$ver \
--includedir=/usr/include/postgresql \
--with-openssl \
--with-libxml \
--with-systemd

参数说明:

  • –prefix:这是所有其他路径的基础,官方包将其设为 /usr/lib/postgresql/$ver。
  • –bindir:指定二进制文件(如 postgres, psql)的安装位置。
  • –sysconfdir:指定配置文件 postgresql.conf 等所在目录。
  • –datarootdir:指定共享数据文件的位置。
  • –includedir:指定头文件位置。
  • –with-openssl、–with-libxml、–with-systemd:启用 SSL、XML 和 systemd 支持

编译与安装

1
2
make -j$(nproc)
sudo make install

创建 systemd 服务文件

1、创建服务文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sudo tee /etc/systemd/system/postgresql.service <<EOF
[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=simple
User=postgres
Group=postgres
ExecStart=/usr/lib/postgresql/$ver/bin/postgres -D /var/lib/postgresql/$ver/$type
Restart=on-failure
RestartSec=10
TimeoutSec=300

[Install]
WantedBy=multi-user.target
EOF

2、创建数据目录并初始化

1
2
3
sudo mkdir -p /var/lib/postgresql/$ver/$type
sudo chown postgres:postgres /var/lib/postgresql/$ver/$type
sudo -u postgres /usr/lib/postgresql/$ver/bin/initdb -D /var/lib/postgresql/$ver/$type

3、启用并启动服务

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable postgresql
sudo systemctl start postgresql

验证安装

1
2
sudo systemctl status postgresql
sudo -u postgres /usr/lib/postgresql/$ver/bin/psql -c "SELECT version();"

PostgreSQL for ubuntu build
https://jgq12138.github.io/2026/09/08/Linux/ubuntu_install_postgresql/
作者
JGQ12138
发布于
2026年9月8日
许可协议