Ubuntu 18.04 32位环境安装TimescaleDB失败及编译配置问题咨询
TimescaleDB 32位Ubuntu 18.04 + PostgreSQL 12 安装问题解答
1. apt 无法定位软件包的根因 & 源码编译方向合理性
- 出现
Unable to locate package timescaledb-2-postgresql-12报错的核心原因:TimescaleDB 官方apt源仅提供x86_64(amd64)架构的预编译包,没有适配32位(i386)架构的安装包,即便正确配置了软件源,32位系统也检索不到对应安装包。 - 你转向本地源码编译的选择完全正确:针对官方未提供预编译包的场景,源码编译是TimescaleDB官方明确支持的标准安装路径,不属于错误的排查方向。
2. 控制文件缺失问题的成因 & 正确处理方式
- 你当前遇到的“找不到timescaledb.control文件”报错,核心原因是编译完成后只执行了
make,没有执行make install步骤:make操作仅会在源码的构建目录下生成编译产物(动态库、扩展SQL脚本、填充完成的控制文件),不会自动把文件拷贝到PostgreSQL的系统检索路径下。- 你提到的
timescaledb.control.in是源码目录下的模板文件,不需要手动编辑替换:编译配置阶段,构建系统会自动把模板里的@PROJECT_VERSION_MOD@占位符替换为你当前编译的TimescaleDB实际版本号(比如拉取2.0.1版本源码编译时,占位符会被自动替换为2.0.1,和你贴出的正式版控制文件内容完全一致)。
- 不需要手动拷贝控制文件到PostgreSQL的扩展目录:只要执行
sudo make install,构建系统会自动完成全量部署,包括:- 将编译好的动态库文件拷贝到PostgreSQL的动态库检索路径
- 将填充完版本信息的
timescaledb.control文件拷贝到PostgreSQL的扩展目录(也就是报错提示的/usr/share/postgresql/12/extension/) - 将对应版本的扩展初始化SQL脚本拷贝到同扩展目录下
- 你之前的操作顺序存在问题:必须先完成
make install的文件部署,再修改postgresql.conf中shared_preload_libraries的配置项,最后重启数据库,否则数据库启动时会因为找不到对应的库文件、控制文件触发报错。
3. PostgreSQL $libdir 路径的定位方法
$libdir是PostgreSQL内置的动态库检索路径变量,不需要手动修改配置,直接在数据库中执行以下命令就能查到实际绝对路径:psql -c "SHOW pkglib_path;"- 对Ubuntu 18.04 + PostgreSQL 12的默认安装场景,该路径一般为
/usr/lib/postgresql/12/lib/。
本地编译安装的正确流程提示
- 提前确认安装编译依赖:需要安装对应版本的PostgreSQL开发包
postgresql-server-dev-12、基础编译工具链(build-essential、cmake、git),否则可能出现编译产物路径识别错误、功能缺失的问题。 - 编译完成后的必做步骤:
- 进入源码构建目录执行
sudo make install - 修改
postgresql.conf配置,添加shared_preload_libraries = 'timescaledb' - 重启PostgreSQL服务
- 登录数据库执行
CREATE EXTENSION IF NOT EXISTS timescaledb;完成扩展启用
- 进入源码构建目录执行
- 尽量不要手动拷贝编译产物文件:手动部署很容易出现控制文件版本、动态库文件名、SQL脚本版本不匹配的问题,直接使用构建系统的
make install命令可以自动处理所有路径匹配、版本占位符替换的问题,减少配置错误。
内容的提问来源于stack exchange,提问作者Stephen Yorke
相关产品推荐
相关产品推荐

