You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下执行PostgreSQL的initdb报错postgres.bki不存在如何解决

Ubuntu 执行 initdb 报 postgres.bki 不存在的排查修复

报错信息:
initdb: file "<user>/share/postgresql/postgres.bki" does not exist

按以下优先级逐步排查:

1. 排查-L参数配置错误

  • 先检查你执行的initdb命令是否手动携带了-L参数:-L作用是手动指定PostgreSQL初始化依赖的共享文件目录,参数传错路径就会直接触发该报错。通过Ubuntu官方apt源安装的PostgreSQL默认已经配置好路径,不需要手动加-L参数,删掉该参数重新执行即可。
  • 如果因自定义编译安装等场景必须指定-L路径,先执行命令查找系统中真实的postgres.bki文件位置:
    sudo find / -name postgres.bki 2>/dev/null
    
    正常apt安装的文件路径格式为/usr/share/postgresql/<PostgreSQL版本号>/postgres.bki,例如14版本对应路径为/usr/share/postgresql/14/,将-L参数值设置为该文件所在的目录层级即可,不要写错路径层级。

2. 排查PostgreSQL安装损坏/缺失组件问题

  • 首先确认是否安装了PostgreSQL服务端包:Ubuntu源中PostgreSQL客户端和服务端是分包发布的,如果只安装了postgresql-client客户端包,不会携带postgres.bki这类初始化依赖文件。执行对应命令安装服务端组件即可,以16版本为例:
    sudo apt update
    sudo apt install postgresql-16 postgresql-contrib-16
    
    注意将命令里的版本号替换为你实际需要使用的PostgreSQL版本,避免混装不同源的版本导致文件路径异常。
  • 如果已经安装过服务端包仍找不到文件,说明安装包文件已损坏,执行命令重装对应版本的服务端包修复:
    # 替换<版本号>为实际安装的版本,例如14、16
    sudo apt purge postgresql-<版本号>
    sudo apt install postgresql-<版本号>
    
    重装完成后再用find命令确认postgres.bki文件存在即可。
  • 额外注意权限问题:apt安装的PostgreSQL会默认创建postgres系统用户,不要直接用root或普通用户执行initdb,否则容易因环境变量、权限问题读不到共享文件。正确操作是先切换到postgres用户再执行初始化:
    sudo su - postgres
    initdb -D <自定义数据存储目录路径>
    

内容的提问来源于stack exchange,提问作者coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 04:12:22