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

Rails项目安装pg gem时持续报错,请求技术解决方案

解决Rails部署Heroku时pg gem的原生扩展安装错误

嘿,这个pg gem安装的坑我踩过好多次!你遇到的这个报错:

ERROR: Error installing pg: ERROR: Failed to build gem native extension. Can't find the 'libpq-fe.h header * extconf.rb failed * An error occurred while installing pg (0.21.0), and Bundler cannot continue. Make sure that gem install pg -v '0.21.0' succeeds before bundling.

本质是你的系统缺少PostgreSQL的开发依赖库——pg gem在编译原生扩展时必须用到这些底层文件。下面分不同操作系统给你精准的解决步骤:

macOS 用户

如果你用Homebrew管理包,直接在终端执行:

brew install postgresql

安装完成后重新运行bundle install即可。如果还是报错,试试手动指定pg的配置路径:

gem install pg -v '0.21.0' -- --with-pg-config=/usr/local/bin/pg_config

Ubuntu/Debian 类 Linux 用户

安装PostgreSQL的开发包是关键,先更新包列表再安装:

sudo apt-get update && sudo apt-get install libpq-dev

依赖安装完成后,再执行bundle install或者单独安装指定版本的pg gem:

gem install pg -v '0.21.0'

Windows 用户

  1. 确保你安装Ruby时勾选了DevKit组件(这是编译原生gem的必要工具);
  2. 下载并安装和你的Ruby架构(32位/64位)匹配的PostgreSQL二进制包;
  3. 在命令行手动指定pg_config的路径来安装gem:
gem install pg -v '0.21.0' -- --with-pg-config=C:/Program Files/PostgreSQL/12/bin/pg_config

(注意把路径换成你实际安装PostgreSQL的版本路径,比如你装的是14版就改成14)

额外小技巧:规避本地安装pg的麻烦

其实部署Heroku时,Heroku的服务器环境已经自带了PostgreSQL的所有依赖,完全不需要你本地安装pg。你可以修改Gemfile,把pg限制在production环境,本地用sqlite3:

group :production do
  gem 'pg', '0.21.0'
end

group :development, :test do
  gem 'sqlite3'
end

然后执行:

bundle install --without production

这样本地就不会安装pg gem,直接部署到Heroku时,它会自动安装production组的依赖,完美避开本地的编译问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:24:28