Rails 3 - không thể cài đặt pg gem


98

Khi tôi cố gắng chạy gói (cài đặt gói), tôi luôn nhận được

Installing pg (0.13.2) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/ryan/.rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb 
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --without-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/ryan/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
    --with-pg
    --without-pg
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib
    --without-pg-lib=${pg-dir}/lib
    --with-pg-config
    --without-pg-config
    --with-pg_config
    --without-pg_config


Gem files will remain installed in /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2 for inspection.
Results logged to /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2/ext/gem_make.out
An error occured while installing pg (0.13.2), and Bundler cannot continue.
Make sure that `gem install pg -v '0.13.2'` succeeds before bundling.

Tôi sử dụng Mac OS X 10.6, phiên bản PostgreSQL đã cài đặt là 9.1. Tôi thấy vấn đề là trong libpq-dev , làm cách nào để cài đặt / sửa lỗi đó?


2
làm thế nào để bạn cài đặt postgres trên máy Mac của bạn?
shingara

1
theo cách này
user984621.

trình cài đặt on_click? Lấp lánh? hoặc MacPort?
shingara

Tôi đã cố gắng cài đặt bằng cách này:, sudo port install libpq-devnhưng một vấn đề khác - Error: Port libpq-dev not found To report a bug, see <http://guide.macports.org/#project.tickets>. Đó là khủng khiếp, vẫn còn một số vấn đề ...
user984621

1
Xem câu hỏi này: [tại đây] [1] [1]: stackoverflow.com/questions/10321189/…
banditKing

Câu trả lời:


78

Như đã nêu trong nhật ký lỗi của bạn, bạn cần phải chuyển đường dẫn đến pg_config. Cố gắng cài đặt đá quý bằng cách sử dụng:

gem install pg -- --with-pg-config= 'PATH_TO_YOUR_PG_CONFIG'

Nếu bạn không chắc pg_config của mình ở đâu và giả sử bạn đang sử dụng Linux hoặc Mac, bạn có thể chạy lệnh sau:

which pg_config

Pg-config của bạn có thể ở các vị trí khác nhau tùy thuộc vào cách bạn cài đặt postgres.


Xin lưu ý, gói nhị phân từ trang Postgres không chứa tiêu đề phát triển hoặc pg_configchương trình.
tadman

3
Các gói nhị phân từ đây: enterprisedb.com/products-services-training/pgdownload#osx chắc chắn nhất không chứa cả pg_config(ví dụ, ở /Library/PostgreSQL/9.1/bin/pg_configcho 9.1.x) và các tiêu đề phát triển. Đó là thứ tôi sử dụng để kiểm tra pgviên ngọc đang phát triển.
Michael Granger

8
Sẽ không which pg_confignhanh hơn find / -name pg_config?
Justin D.

Thực hiện một chỉnh sửa nhỏ cho args dòng lệnh của bạn. Thay thế phiên bản bằng phiên bản hiện tại của bạn sẽ hoạt động tốt. Đây là dòng lệnh của tôi: sudo env ARCHFLAGS = "- Arch x86_64" gem install pg - --with-pg-include = / Library / PostgreSQL / 9.1 / include / --with-pg-lib = / Library / PostgreSQL / 9.1 / lib /
Rod Paddock

13
Trên OSX, bạn cũng có thể sử dụng brew để chuyển các tiêu đề qua brew install libpqxxvà mọi thứ sẽ ổn.
Vetsin

99

nếu bạn đang chạy trên Linux, bạn có thể quan tâm đến những gì phù hợp với tôi:

sudo apt-get install postgresql
sudo apt-get install libpq-dev

Sau đó

gem install pg

sau đó

bundle install

src: http://wikimatze.de/installing-postgresql-gem-under-ubuntu-and-mac


1
cảm ơn, vì nó là trong trường hợp của tôi - không cần phải chạy bó gem install pg
Valk

21
Không thích hợp cho OS X.
dfrankow

1
Làm việc cho tôi kể từ tháng 11 năm 2013 chạy Ubuntu 13.04!
Starkers

tại sao điều này có rất nhiều ủng hộ trong khi nó rõ ràng là cho hệ điều hành sai?
Sevenseacat

1
@sevenseacat nó ghi rõ hệ điều hành mà nó nên được sử dụng. Và rõ ràng rất nhiều người sử dụng hệ điều hành Linux đang tìm ra câu trả lời khi họ nghiên cứu vấn đề này.
EE33

57

Nếu bạn đang sử dụng Postgress.app thì bạn sẽ muốn truy cập vào các công cụ dòng lệnh của nó . Nhập dòng sau vào thiết bị đầu cuối hoặc hồ sơ PATH của bạn :

 PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"

gem install pgbây giờ sẽ hoạt động. (Đây là những gì làm việc cho tôi.)

Lưu ý Đường dẫn phiên bản mới trông giống như sau:

/Applications/Postgres.app/Contents/Versions/<version>/bin

3
Cám ơn rất nhiều! Tôi đã dành nửa giờ để xem xét những thứ không hoạt động và cuối cùng tìm thấy điều này bị chôn vùi ở đây. : D
Peter Brown

1
Giải pháp tuyệt vời mà không cần pha.
lucian303

7
Chỉ cần lưu ý rằng bản vá Postgre.app đã thay đổi trong phiên bản 93. bây giờ là: /Application/Postgres93.app/Contents/MacOS/bin
Alain

2
Điều này làm việc cho tôi, mặc dù bin của tôi đã ở một nơi rất khác nhau -> /Library/PostgreSQL/9.3/bin
Jeremiah

5
Điều này bây giờ là - /Applications/Postgres.app/Contents/Versions/9.3/binnhư của 9.3.5 nếu bạn đang sử dụng Postgres.app
Ashley


12

Tìm kiếm libpq:

brew search libpq

Nên xuất libpqxx

Sau đó, hãy thử cài đặt nó:

brew install libpqxx

8

Bạn chỉ cần cài đặt libpq-dev:

sudo apt-get install libpq-dev

Sau đó, đá quý sẽ cài đặt tốt.


8
Không thích hợp cho OS X.
dfrankow

Trong trường hợp của tôi chỉ có điều này đã giúp. Thanx!
kovpack

7

Làm theo hướng dẫn sau cài đặt: http://postgresapp.com/documentation/configuration-ruby.html

Để cài đặt pg gem, hãy đảm bảo rằng bạn đã thiết lập đúng $ PATH của mình (như được chỉ định trong http://postgresapp.com/documentation/cli-tools.html ), sau đó chạy

sudo ARCHFLAGS="-arch x86_64" gem install pg

Tôi mạnh mẽ khuyên bạn nên đọc cả các trang. Chỉ lướt qua chúng thôi mà đã đánh mất 1 giờ của cuộc đời tôi. Đọc chúng, vấn đề được giải quyết.


Hoạt động trên OSX 10.9.5, phiên bản ruby ​​mặc định 2.0, phiên bản cục bộ rbenv 1.9.3.
jlucasps

Hoạt động trên OSX 10.11 THANKS
Yarin

Hoạt động trên OSX 10.11.4. Cảm ơn!!
Martyn Chamberlin

3

Vấn đề tôi gặp phải là vì một số lý do nó đang cố gắng biên dịch với /usr/bin/gcc-4.2. Tôi phát hiện ra điều đó bằng cách thay đổi try_cpp trong mkmf.rb (mà tôi đã thấy trong dấu vết ngăn xếp) để đưa ra một ngoại lệ với dòng biên dịch bị lỗi.

Tôi đã liên kết mềm gcc với gcc-4.2 và nó hoạt động:

sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

Tại sao nó cố gắng sử dụng gcc-4.2? Không ý kiến.

Dòng biên dịch thực tế:

/usr/bin/gcc-4.2 -E -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/x86_64-darwin11.4.0 -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/ruby/backward -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/usr/local/Cellar/postgresql/9.1.4/include  -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration  -fno-common -pipe  conftest.c -o conftest.i (RuntimeError)

3

Tôi gặp vấn đề tương tự nhưng Postgres của tôi đã được cài đặt

/Library/PostgreSQL/9.3

Đã cập nhật ~ / .bash_profile bằng cách thêm:

export PATH=/Library/PostgreSQL/9.3/bin:$PATH

Mở một thiết bị đầu cuối mới, chạy bundle updatevà nó cũng hoạt động với tôi. Cảm ơn Ari.


nhưng đối với tôi nhu cầu làm việc để kiểm tra phiên bản sau đó export PATH = / Applications / Postgres.app / Contents / Versions / 9.4 / bin: $ PATH
Prateep Kul

1

Bạn có thể đặt tùy chọn cấu hình bản dựng bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_configvà sử dụng gem install pgmà không có bất kỳ tùy chọn nào (đường dẫn đến pg_config có thể khác đối với bạn, đường dẫn này dành cho Postgresapp 9.3.5.0)


1

Tôi đã gặp vấn đề tương tự trong máy openSUSE13.1 KDE của mình. Trước khi vấn đề đó tôi gặp phải, tôi chỉ cài đặt các gói postgresqlpostgresql-serversử dụng zypperlệnh. Sau đó cài đặt lại 2 gói nữa:

[arup@to_do_app]$ sudo zypper in postgresql-devel postgresql-contrib
root's password:
Loading repository data...
Reading installed packages...
Resolving package dependencies...
#....

Sau đó, tôi đã chạy lại bundle install, và thành công !!!



0

Đầu tiên, gỡ cài đặt bất kỳ phiên bản Homebrew nào. Tùy chọn --force làm cho nó gỡ cài đặt tất cả các phiên bản.

brew rm postgresql --force

Thay đổi đường dẫn cho phù hợp với phiên bản của bạn.

sudo /sbin/SystemStarter stop postgresql-8.4
sudo rm -rf /Applications/PostgreSQL\ 8.4
sudo rm -rf /etc/postgres-reg.ini
sudo rm -rf /Library/StartupItems/postgresql-8.4
sudo rm -rf /Library/PostgreSQL/8.4
sudo dscl . delete /users/postgres

Chỉnh sửa / etc / profile và xóa bất kỳ dòng nào liên quan đến "postgres".

nano /etc/profile

Cài đặt PostgresSQL

brew update
brew install postgresql

Cài đặt de PG GEM

gem install pg

Đó là nó. Trân trọng.


0

Trước tiên, bạn có thể kiểm tra xem bạn có tệp postrgresql trong thiết bị đầu cuối của mình hay không bằng cách truy cập tệp lib. đi cd ~ / opt / local / lib / rồi nhập ls và nút enter. Thao tác này sẽ hiển thị cho bạn danh sách tất cả các tệp nằm trong thư mục lib.

1. nếu bạn không có postreseql, bạn có thể tải xuống thông qua macports. cổng sudo cài đặt postgresql93 @ 9.3.2_1

Bây giờ cd trở lại thư mục của bạn mà bạn đang cố gắng gói cài đặt

  1. để pg của bạn hoạt động với tệp postgesql mà bạn có hoặc vừa tải xuống gem install pg - --with-pg-config = / opt / local / lib / postgresql93 / bin / pg_config

bây giờ chạy cài đặt gói



0

Điều làm việc cho tôi trên El Capitan là nâng cấp ruby ​​từ mặc định của hệ thống lên 2.3.1 dường như để tìm đúng thư viện mà pgviên ngọc cần.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.