目录
目录X
联系信息 首页 /正文内容

postgresql18加装xml2组件模块简介

1. 安装依赖库

确保系统安装了 libxml2libxslt 及其开发包:

# RHEL/CentOS/OEL
sudo yum install -y libxml2 libxml2-devel libxslt libxslt-devel

检查是否安装:

rpm -qa | grep libxml2
rpm -qa | grep libxslt

2. 编译安装 PostgreSQL 核心(启用 XML 支持)

假设源码在 ~/postgresql-18.0,安装目录 /usr/local/pgsql18

cd ~/postgresql-18.0

# 清理之前的构建
make distclean || true

# 配置核心
./configure --prefix=/usr/local/pgsql18 \
            --with-libxml \
            --with-libxslt \
            CFLAGS="-O2 -fPIC" \
            LDFLAGS="-Wl,-rpath,/usr/local/pgsql18/lib"

# 编译安装
make -j$(nproc)
sudo make install

说明:

  • --with-libxml --with-libxslt:开启 XML/XSMLT 支持

  • CFLAGS="-O2 -fPIC":保证生成的库可以被共享对象调用

  • LDFLAGS="-Wl,-rpath,/usr/local/pgsql18/lib":设置动态库搜索路径


3. 启动数据库,确认核心 XML 功能可用

# 切换到 postgres 用户
su - postgres

# 启动 PostgreSQL
/usr/local/pgsql18/bin/pg_ctl -D /usr/local/pgsql18/data start

# 测试 XML 支持
/usr/local/pgsql18/bin/psql -U postgres -p 54321 -c "SELECT xmlparse(document '<a/>');"

如果返回 <a/>,说明 PostgreSQL 核心已经支持 XML。


4. 编译安装 xml2 扩展

cd ~/postgresql-18.0/contrib/xml2

# 清理之前编译
make clean

# 使用 PGXS 编译安装
make USE_PGXS=1 PG_CONFIG=/usr/local/pgsql18/bin/pg_config
sudo make USE_PGXS=1 PG_CONFIG=/usr/local/pgsql18/bin/pg_config install

说明:

  • USE_PGXS=1:使用 PostgreSQL 扩展构建系统

  • PG_CONFIG 指向已编译的 PostgreSQL 可执行文件


5. 在数据库中创建扩展

/usr/local/pgsql18/bin/psql -U postgres -p 54321 -c "CREATE EXTENSION xml2;"

如果成功,不会报错,同时可以使用 xml2 提供的函数,则xml2组件模块成功,例如:

SELECT xml_encode_special_chars('<a>"test"</a>');

6. 注意事项

  1. xml2 扩展不是必须

    • 如果核心启用了 libxml/libxslt,SELECT xmlparse(...) 等核心 XML 函数可以直接用。

    • xml2 扩展提供一些额外函数(例如 xml_encode_special_charsxml_is_well_formed 等)。

  2. pgxml.so 报错问题

    • 如果之前手动编译过 xml2 产生的 pgxml.soundefined symbol: xml_ereport,说明 PostgreSQL 核心没有用 libxml 编译,或者 pgxml.so 与核心不兼容。

    • 解决方法:必须先重新编译 PostgreSQL 核心并启用 libxml2/libxslt,再安装 xml2 扩展。

  3. 安装顺序

    • 先安装核心(启用 libxml/libxslt),确认 XML 功能可用。

    • 再编译安装 xml2 扩展,并在数据库中创建扩展。


【打印正文】 发布时间:2025-10-31 10:34:01 浏览次数: 作者: 来源:本站原创