ruby - 如何安装 PostgreSQL:错误:无法构建 gem 原生扩展
问题描述
运行时出现以下错误bundle install
:
An error occurred while installing pg (0.21.0), and Bundler cannot continue.
Make sure that `gem install pg -v '0.21.0' --source 'https://rubygems.org/'` succeeds before bundling.
在此之后我尝试运行
gem install pg -v '0.21.0' --source 'https://rubygems.org/'
这给了我这个错误:
ERROR: Error installing pg:
ERROR: Failed to build gem native extension.
current directory: /Library/Ruby/Gems/2.6.0/gems/pg-0.21.0/ext
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r ./siteconf20200518-48011-1noawh0.rb extconf.rb
它还建议查看mkmf.log
文件,该文件具有:
find_executable: checking for pg_config... -------------------- no
--------------------
find_header: checking for libpq-fe.h... -------------------- no
"xcrun clang -o conftest -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/universal-darwin19 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby/backward -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -g -Os -pipe -DHAVE_GCC_ATOMIC_BUILTINS conftest.c -L. -L/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib -L. -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.Internal.sdk/usr/local/lib -arch x86_64 -lruby.2.6 "
ld: warning: directory not found for option '-L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.Internal.sdk/usr/local/lib'
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main(int argc, char **argv)
4: {
5: return 0;
6: }
/* end */
"xcrun clang -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/universal-darwin19 -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby/backward -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT -g -Os -pipe -DHAVE_GCC_ATOMIC_BUILTINS -arch x86_64 -c conftest.c"
conftest.c:3:10: fatal error: 'libpq-fe.h' file not found
#include <libpq-fe.h>
^~~~~~~~~~~~
1 error generated.
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <libpq-fe.h>
/* end */
--------------------
我不确定如何解决此错误。我猜它以某种方式检查了错误的文件夹,对吗?但不知道如何解决这个问题。
我正在使用 Postgres 应用程序,并将其放在 Mac 上的 Applications 文件夹中。
解决方案
您缺少 Postgres 源代码,并且需要它来编译 pg gem。
安装 brew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
使用安装 PostgreSQL 服务器
brew install postgresql
但看起来您正在使用 macOS 附带的内置 Ruby 版本。不要使用系统 Ruby。我建议安装像 RVM 这样的 Ruby 管理器:
安装 RVM
\curl -sSL https://get.rvm.io | bash -s stable
重新启动你的外壳。
安装 Ruby
rvm install 2.7
然后使用bundle install
.
推荐阅读
- c# - 使用 Microsoft 消息队列的 Receive() 方法出现问题
- python - 自动生成 Click 命令的所有帮助文档
- excel - Excel SUMIFS - 通过动态更改列定义 sum_range
- ajax - 如何在没有页面重定向的情况下单击将项目添加到购物车时修复添加到购物车按钮
- javascript - 将数字转换为字符串时找不到id
- java - 有没有办法在 Eclipse 中将 Java 类传递给新文件?
- typescript - 只有一些泛型的打字稿推断?
- performance - 如何设计工作流程
- makefile - Makefile 中缺少依赖项
- oracle - 我如何在 Pivot 的 IN 子句中传递 select sql