懵崭 发表于 2025-10-8 12:45:02

PostgreSQL 18 源码编译安装体验

PostgreSQL 18 于前几个小时刚刚发布,来个一键安装(Ubuntu 20.0)

一键安装脚本,全自动编译安装,两个实例的安装pg1800和pg1900也只是1分钟的事,自定义各级目录,干净清晰。
前两天群里竟然还有人推崇apt/yum安装,说是统一规范,apt/yum安装出来的目录结构乱七八的,反规范吧,难道是那个人不会编译安装?

源码包地址:https://ftp.postgresql.org/pub/source/v18.0/postgresql-18.0.tar.gz
自动安装脚本
#!/bin/bash# 1,PostgreSQL源码包名称(假设已下载并位于当前目录的同级目录中)POSTGRESQL_SRC="postgresql-18.0.tar.gz"# 替换XX.X为你的PostgreSQL版本POSTGRESQL_DIR="postgresql-18.0"         # 解压后的目录名,同样替换XX.X# 2,安装目录INSTALL_DIR="/usr/local/pgsql18/server"# 3,端口号PORT=1800# 4,初始密码(通过参数传入,默认为空)INIT_PASSWORD="postgres_init_pwd"if [ $# -gt 0 ]; then    INIT_PASSWORD="$1"fi# 实例目录INSTANCE_DATA_DIR="/usr/local/pgsql18/pg${PORT}/data"INSTANCE_LOG_DIR="/usr/local/pgsql18/pg${PORT}/log"# 创建postgres用户(如果尚未存在)if ! id postgres &>/dev/null; then    echo "Creating postgres user..."    sudo groupadd postgres    sudo useradd -m -g postgres postgres -s /bin/bash    echo "Postgres user created successfully."else    echo "Postgres user already exists."fi# 检查目录是否存在if [ ! -d "$INSTALL_DIR" ]; thenecho "dir '$INSTALL_DIR' not existing,creating..."mkdir -p "$INSTALL_DIR"echo "dir '$INSTALL_DIR' created"elseecho "dir '$INSTALL_DIR' existing"fi# 检查实例目录是否存在if [ ! -d "$INSTANCE_DATA_DIR" ]; thenecho "dir '$INSTANCE_DATA_DIR' not existing,creating..."mkdir -p "$INSTANCE_DATA_DIR"mkdir -p "$INSTANCE_LOG_DIR"echo "dir '$INSTANCE_DATA_DIR' created"elseecho "dir '$INSTANCE_DATA_DIR' existing"fi# 安装编译依赖项echo "############################Installing build dependencies... "sudo apt update -y > /dev/null 2>&1sudo apt install -y systemtap-sdt-dev libicu-dev libreadline-dev zlib1g-dev libssl-dev libpam0g-dev libxml2-dev libxslt1-dev libldap2-dev libsystemd-dev tcl-dev libpython3-dev libperl-dev libicu-dev pkg-config> /dev/null 2>&1echo "############################Done."# 解压源码包echo "############################Extracting PostgreSQL source code... "tar -xzvf "$POSTGRESQL_SRC" > /dev/null 2>&1echo "############################Done."# 进入解压后的目录cd "$POSTGRESQL_DIR"# 配置PostgreSQL(这里使用默认配置,但可以添加--prefix等选项)echo "############################Configuring PostgreSQL... "#make clean./configure --prefix="$INSTALL_DIR" --with-openssl > /dev/null 2>&1echo "############################Done."# 编译PostgreSQLecho -n "############################Compiling PostgreSQL (this may take a while)... "# pg 17之前,用make world -j$(nproc)> /dev/null 2>&1make world-bin -j$(nproc)> /dev/null 2>&1echo "############################Done."# 安装PostgreSQLecho "############################Installing PostgreSQL... "# pg 17之前,用make install-world > /dev/null 2>&1sudo make install-world-bin > /dev/null 2>&1echo "############################Done."# 初始化数据库(使用postgres用户)echo "############################Initializing PostgreSQL database..."chown -R postgres:postgres $INSTALL_DIRchmod 700 -R $INSTALL_DIRchown -R postgres:postgres $INSTANCE_DATA_DIRchmod 700 -R $INSTANCE_DATA_DIRchown -R postgres:postgres $INSTANCE_LOG_DIRchmod 700 -R $INSTANCE_LOG_DIRsudo -u postgres $INSTALL_DIR/bin/initdb -D $INSTANCE_DATA_DIR# 1. 创建systemd服务(使用指定模板)echo "############################Creating systemd service..."cat

晾棋砷 发表于 2025-10-12 00:09:15

感谢分享

暴灵珊 发表于 2025-10-22 15:09:27

前排留名,哈哈哈

梁宁 发表于 2025-10-26 09:15:54

感谢,下载保存了

蓬庄静 发表于 2025-12-23 01:11:17

鼓励转贴优秀软件安全工具和文档!

挫莉虻 发表于 2025-12-26 23:54:16

收藏一下   不知道什么时候能用到

丰江 发表于 2026-1-14 02:46:30

用心讨论,共获提升!

芮梦月 发表于 2026-1-20 16:18:50

谢谢分享,辛苦了

挠溃症 发表于 2026-1-20 20:57:28

谢谢分享,辛苦了

奚娅琼 发表于 2026-1-21 09:34:48

收藏一下   不知道什么时候能用到

姥恫 发表于 2026-1-21 12:51:37

这个有用。

班闵雨 发表于 2026-1-24 08:01:40

感谢分享

邰怀卉 发表于 2026-1-26 02:28:52

收藏一下   不知道什么时候能用到

闹忧踫 发表于 2026-1-26 12:37:23

前排留名,哈哈哈

滥眩 发表于 2026-1-28 08:13:23

感谢分享

战匈琼 发表于 2026-1-30 05:19:09

收藏一下   不知道什么时候能用到

秦晓曼 发表于 2026-2-6 12:06:53

感谢分享,下载保存了,貌似很强大

段干叶农 发表于 2026-2-8 04:00:06

前排留名,哈哈哈

骆贵 发表于 2026-2-8 19:14:34

感谢分享

甄婉丽 发表于 2026-2-9 02:25:25

这个好,看起来很实用
页: [1] 2
查看完整版本: PostgreSQL 18 源码编译安装体验