Postgresql gem install pg 0.18.4 通过,捆绑安装失败

jas*_*onm 29 postgresql ruby-on-rails

Mac OS El Capitan

捆绑安装失败:

compiling pg_connection.c
pg_connection.c:2394:3: warning: implicit declaration of function 'gettimeofday' is invalid in C99 [-Wimplicit-function-declaration]
                gettimeofday(&currtime, NULL);
                ^
1 warning generated.
compiling pg_copy_coder.c
compiling pg_errors.c
compiling pg_result.c
compiling pg_text_decoder.c
compiling pg_text_encoder.c
compiling pg_type_map.c
compiling pg_type_map_all_strings.c
compiling pg_type_map_by_class.c
compiling pg_type_map_by_column.c
compiling pg_type_map_by_mri_type.c
compiling pg_type_map_by_oid.c
compiling pg_type_map_in_ruby.c
compiling util.c
linking shared-object pg_ext.bundle
ld: file not found: dynamic_lookup
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [pg_ext.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/jmintz/Documents/LaunchAngels/radar/vendor/bundle/gems/pg-0.18.4 for inspection.
Results logged to /Users/jmintz/Documents/LaunchAngels/radar/vendor/bundle/extensions/x86_64-darwin-15/2.2.0-static/pg-0.18.4/gem_make.out
Run Code Online (Sandbox Code Playgroud)

……

An error occurred while installing pg (0.18.4), and Bundler cannot continue.

Make sure that `gem install pg -v '0.18.4'` succeeds before bundling.
Run Code Online (Sandbox Code Playgroud)

运行 'gem install pg -v '0.18.4' 结果:

Building native extensions.  This could take a while...
Successfully installed pg-0.18.4
Parsing documentation for pg-0.18.4
Done installing documentation for pg after 4 seconds
1 gem installed
Run Code Online (Sandbox Code Playgroud)

然而,再次运行“捆绑安装”失败。有什么建议?我试过用自制软件卸载并重新安装 postgresql,但没有成功

小智 91

我现在在 macOS Catalina 上遇到了类似的错误,但我无法成功运行

gem install pg -v '0.18.4'
Run Code Online (Sandbox Code Playgroud)

我在puma帮助我解决问题的gem 中发现了这个问题(我知道这是另一个 gem):https : //github.com/puma/puma/issues/2304

在那里,我发现了这个:

Clang 现在-Werror=implicit-function-declaration默认启用:

当您在为 macOS 构建 C 或 Objective-C 代码时使用没有显式声明的函数时,Clang 现在会报告错误(-Werror=implicit-function-declaration标志已打开)。这种额外的错误检测将 Clang 针对 iOS/tvOS 和 macOS 64 位目标的行为统一起来,以进行此诊断。(49917738)

和这个:

gem install puma:4.3.5 -- --with-cflags="-Wno-error=implicit-function-declaration"
Run Code Online (Sandbox Code Playgroud)

所以,我能够构建pg

gem install pg -v '0.18.1' -- --with-cflags="-Wno-error=implicit-function-declaration"
Run Code Online (Sandbox Code Playgroud)

  • 这也解决了 MacOS Big Sur 11.0 Beta 中 pg 0.18.4 的问题 (3认同)
  • 以下内容对我有用: `gem install pg -v '0.18.4' -- --with-cflags="-Wno-error=implicit-function-declaration"` (2认同)

MaJ*_*JaN 18

同样的问题也一直面临着所有依赖于原生扩展,如宝石pgpumaffi,等我已经通过解决他们-- --with-cflags="-Wno-error=implicit-function-declaration"

前任:

  • gem install pg -v '0.18.4' -- --with-cflags="-Wno-error=implicit-function-declaration"

  • gem install ffi -v '1.12.2' -- --with-cflags="-Wno-error=implicit-function-declaration"

  • gem install puma -v '4.3.1' -- --with-cflags="-Wno-error=implicit-function-declaration"


小智 8

在运行之前,我必须将 Benito 的答案和 jasonm 的答案结合起来,如下所示bundle(归功于 Unixmonkey):

bundle config build.pg '-- --with-cflags="-Wno-error=implicit-function-declaration"'
Run Code Online (Sandbox Code Playgroud)


小智 0

这不是一个答案,但它可能会为您指明正确的方向...如果 gem pg 确实已成功编译,正如您所指出的...那么您的 Ruby 项目可能并未引用不知何故,正确的宝石。看起来它在捆绑安装时尝试再次安装它,如果 pg 已编译并安装在当前的 gemset 中,则不会发生这种情况。您的系统上使用 RVM 吗?还可以提供更多的输出吗?