簡體   English   中英

Postgresql gem install pg 0.18.4 通過,捆綁安裝失敗

[英]Postgresql gem install pg 0.18.4 passes, bundle install fails

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

……

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.

運行 '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

然而,再次運行“捆綁安裝”失敗。 有什么建議嗎? 我試過用自制軟件卸載並重新安裝 postgresql,但沒有成功

我現在在 macOS Catalina 上遇到了類似的錯誤,但我無法成功運行

gem install pg -v '0.18.4'

我在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"

因此,我能夠使用以下命令構建pg

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

所有依賴本機擴展(如pgpumaffi等)的 gem 都面臨同樣的問題,我通過傳遞-- --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"

在運行bundle之前,我必須將 Benito 的答案和 jasonm 的答案結合起來,如下所示(歸功於 Unixmonkey):

bundle config build.pg '-- --with-cflags="-Wno-error=implicit-function-declaration"'

這不是一個答案,因此,但它可能會為您指明正確的方向……如果 gem pg 確實已成功編譯,正如您所指出的那樣……那么您的 Ruby 項目可能不是指不知何故,正確的寶石。 當您 bundle install 時,它似乎試圖再次安裝它,如果 pg 已經編譯並安裝在您當前的 gemset 中,則不會發生這種情況。 您是否在系統上使用 RVM? 你還能提供更多的輸出嗎?

答案是安裝 Postgress.app 並運行

  bundle config build.pg --with-pg-config=[Path to pg_config] before bundling

這在 sierra 上對我有用:

gem install pg -v '0.18.3' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM