PostGreSQL 18正式版发布了,新增了异步I/O、UUIDv7等诸多功能,第一时间在Rocky Linux 9下载编译,纪录如下:
一、安装依赖包
dnf install git cmake gcc-c++ openssl-devel python3-devel libicu-devel bison flex readline lz4-devel readline-devel zlib-devel perl-FindBin docbook-dtds docbook-style-xsl libxslt -y 二、编译LLVM
这里以15.0.7为例,说明自行编译的方法
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.7/llvm-project-15.0.7.src.tar.xz tar Jxvf llvm-project-15.0.7.src.tar.xz mkdir -p llvm-project-15.0.7.src/build cd llvm-project-15.0.7.src/build cmake -DCMAKE_BUILD_TYPE=Release \ -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra" \ -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" \ -DLLVM_TARGETS_TO_BUILD=Native \ -DCMAKE_INSTALL_PREFIX="/usr/local" \ ../llvm make -j10 #这里根据自己的cpu个数来决定 cmake -P cmake_install.cmake
三、关于io_uring
Rocky Linux 9、10内置io_uring,但软件仓库里没有io_uring的开发包,导致带上 --with-liburing 时无法编译,我这里先删除内置的io_uring包,然后下载最新的io_uring自行编译,方法如下:
- 编译安装
dnf remove liburing #删除内置包 wget https://github.com/axboe/liburing/archive/refs/tags/liburing-2.12.tar.gz tar zxvf liburing-2.12.tar.gz cd liburing-liburing-2.12/ ./configure make make install
- 打开内核io_uring支持
Rocky Linux缺省是禁用io_uring的,通过以下命令可以查看io_uring支持是否打开
cat /proc/sys/kernel/io_uring_disabled #会显示2,表示禁止 这时需要打开io_uring支持:
echo "kernel.io_uring_disabled=0" >> /etc/sysctl.conf sysctl -p
完成上述操作后用 cat /proc/sys/kernel/io_uring_disabled 命令查看,如果返回 0 则表示io_uring内核支持已经打开。
四、编译PostgreSQL 18
本例默认安装在/usr/local/pgsql18目录下,需要提前导出io_uring开发包的位置:
wget https://ftp.postgresql.org/pub/source/v18.0/postgresql-18.0.tar.gz #需要导出io_uring开发库路径,默认安装在/usr/lib下,如果不导出,则无法编译 export PKG_CONFIG_PATH=/usr/lib/pkgconfig:$PKG_CONFIG_PATH CC=/usr/local/bin/clang CFLAGS="-O3 -fstrict-enums -fno-signed-zeros" CLANG=/usr/local/bin/clang LLVM_CONFIG=/usr/local/bin/llvm-config ./configure --prefix=/usr/local/pgsql18 --with-llvm --with-openssl --with-lz4 --with-python --with-liburing make world make install-world