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


217

Tôi đã thử sử dụng gem install pgnhưng nó dường như không hoạt động.

gem install pg đưa ra lỗi này

Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
        ERROR: Failed to build gem native extension.

C:/Ruby/bin/ruby.exe 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=C:/Ruby/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 C:/Ruby/lib/ruby/gems/1.8/gems/pg-0.10.1 for
inspection.
Results logged to C:/Ruby/lib/ruby/gems/1.8/gems/pg-0.10.1/ext/gem_make.out

3
Nếu bạn đang sử dụng máy Mac, hãy làm theo hướng dẫn này: matthew.mceachen.us/blog/ Khăn
Noah W. Smith

1
@NatchiQ liên kết bị hỏng?
0112

trong trường hợp của tôi, nhật ký lỗi cho biết libpqkhông tìm thấy, vì vậy tôi đã cài đặtsudo apt install postgresql postgresql-contrib libpq-dev pgadmin3 -y
Raj

Câu trả lời:



388

Tôi đã có vấn đề này, điều này làm việc cho tôi:

Cài đặt gói postgresql-devel, điều này sẽ giải quyết vấn đề thiếu pg_config.

sudo apt-get install libpq-dev

139
Làm việc cho tôi bởi apt-get install libpq-dev. Cảm ơn đã gợi ý.
Ryanmt

5
Xác nhận, từ trang chủ Wiki của pg gem : "Trên Ubuntu, / usr / bin / pg_config được cung cấp bởi gói libpq-dev."
Đánh dấu Berry

17
Còn mac thì sao?
Fivell

23
@Fivell Đến cuối trò chơi với câu trả lời ở đây, nhưng nếu bạn đã cài đặt Homebrew, brew install postgresqlbạn sẽ nhận được các gói bạn cần.
Alex LaFroscia

19
@Fivell thử brew install postgresqltrên mac
Mahattam

91

Vấn đề là phụ thuộc đá quý, vì vậy trước khi cài đặt pg, hãy đảm bảo bạn đã cài đặt "libpq-dev"

Hệ thống Ubuntu:

sudo apt-get cài đặt libpq-dev

Hệ thống RHEL:

yum cài đặt postgresql-devel

Mac:

bia cài đặt postgresql


7
Câu trả lời cho Mac là đúng. Chỉ vì chúng tôi chưa cài đặt PostgreSQL trên máy.
Hoàng Lê

Trên Centos 7 đã yum install postgresql-develgiải quyết lỗi của tôi liên quan đến pg_config để cài đặt 'pg' .gem. Nhân tiện, tôi đã chọn sử dụng PostgreSQL 10 vừa được phát hành
Arthur

62

gem install pg -- --with-pg-config=/usr/pgsql-9.1/bin/pg_config


3
Điều này đã giúp tôi (trên Centos 6.2)
TuK

14
Làm việc cho tôi trên OS X, nhưng với đường dẫn đến /Appluggest/Postgres.app/Contents/MacOS/bin/pg_config (Tôi có một Postgres.app độc lập)
Matt

10
gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config trên yosemite với Ứng dụng Postgres
twmulloy 11/2/2015

Đã làm việc. Nhưng trên Mac, trước đó env ARCHFLAGS="-arch x86_64"là một người thay đổi trò chơi đối với tôi.
Janusz Lenar

2
Tôi đã sử dụng gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_configcho OSX 10.12
Tim Krins

37

@Winfield đã nói điều đó :

Đá quý pg yêu cầu các thư viện máy khách postgresql liên kết với. Lỗi này thường có nghĩa là nó không thể tìm thấy thư viện Postgres của bạn. Hoặc bạn chưa cài đặt chúng hoặc bạn có thể cần chuyển --with-pg-dir=cài đặt đá quý của mình.

Hơn thế nữa, bạn chỉ cần --with-pg-config=cài đặt nó.

Trên máy Mac

Nếu, trong bất kỳ trường hợp nào, bạn cũng đã cài đặt postgres thông qua gói trang web trên mac, nó sẽ ở một nơi nào đó như thế nào /Applications/Postgres.app/Contents/Versions/9.3/bin.

Vì vậy, hoặc bạn vượt qua nó trên cài đặt đá quý:

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

Hoặc bạn đặt PATH đúng cách . Vì đó có thể là quá nhiều, nên tạm thời đặt PATH:

export PATH=%PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin/

2
cho phiên bản cụ thể:gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
Dan Sandland

Có một thư mục symlink được gọi latestbên trong thư mục nội dung Postgres.app rất hữu ích trong trường hợp 9.3 không còn được vận chuyển. gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config
Stephen Silber

24

Tôi chưa cài đặt postgresql, vì vậy tôi chỉ cài đặt nó bằng

sudo apt-get install postgresql postgresql-server-dev-9.1

trên Ubuntu 12.04.

Điều này đã giải quyết nó.


Cập nhật:

Sử dụng phiên bản mới nhất:

sudo apt-get install postgresql-9.3 postgresql-server-dev-9.3

Đã khắc phục sự cố cho tôi nhưng trên máy mac (có homebrew) tôi đã phải chạy lệnh này:brew install postgresql
gMale

19

Điều này làm việc trong trường hợp của tôi:

sudo apt-get install libpq-dev

Tôi đã sử dụng:

  • Ubuntu 14.04.2 LTS
  • Ruby 2.2.2
  • Đường ray 4.2.1

12

Nếu bạn đang sử dụng Postgres.app trên Mac, bạn có thể giải quyết vấn đề này một lần và cho tất cả như thế này:

Đầu tiên gem uninstall pg, sau đó chỉnh sửa ~/.bash_profilehoặc ~/.zshrctập tin của bạn hoặc tương đương và thêm:

# PostgreSQL bin path
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin

Sau đó bundle installgem install pgnên làm việc như mong đợi.


Cảm ơn, nó cũng hoạt động bằng cách sử dụng brew đã cài đặt postgreSQL # PostgreSQL bin path export PATH = $ PATH: /usr/local/Cellar/postgresql/9.5.0/bin/
Benoit

9
$ PATH=$PATH:/Library/PostgreSQL/9.1/bin sudo gem install pg

thay thế 9.1 cho phiên bản được cài đặt trên hệ thống của bạn.


1
Điều này đã giúp tôi trên mac, có ai biết đường dẫn mặc định là gì và làm thế nào để thay đổi nó không?
Steve

Hoạt động trên OS X
Maveric

5

Trên hệ điều hành Mac (El Capitano). Bạn chỉ có thể sử dụng:brew install postgresql


1
Đúng! Đây là tất cả những gì tôi cần! Cài đặt trên OS X sạch, không có Postgres.app
Lane Rettig

3

Đá quý pg yêu cầu các thư viện máy khách postgresql liên kết với. Lỗi này thường có nghĩa là nó không thể tìm thấy thư viện Postgres của bạn. Hoặc bạn chưa cài đặt chúng hoặc bạn có thể cần chuyển --with-pg-dir = để cài đặt đá quý của bạn.


3

Dành cho người dùng Mac

PATH=$PATH:/Library/PostgreSQL/9.4/bin/ gem install pg

cái này cần phải dùng mẹo


3

Sử dụng với ARCHcờ.

sudo env ARCHFLAGS="-arch x86_64" gem install pg

Điều này giải quyết cùng một vấn đề bạn đang gặp phải.


2

Tôi đã gặp sự cố này trên Linux Mint (Maya) 13 và tôi đã khắc phục bằng cách cài đặt postgresql và postgresql-server:

apt-get install postgresql-9.1 

sudo apt-get install postgresql-server-dev-9.1

2

Bất kể bạn đang chạy hệ điều hành nào, hãy nhìn vào tệp nhật ký của "Makefile"để biết điều gì đang xảy ra, thay vì cài đặt công cụ một cách mù quáng.

Trong trường hợp của tôi, MAC OS, tệp nhật ký ở đây:

/Users/za/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/pg-1.0.0/mkmf.log

Nhật ký chỉ ra rằng không thể tạo tệp tạo vì những điều sau đây:

Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers

Trong mkmf.log, bạn sẽ thấy rằng nó không thể tìm thấy các thư viện cần thiết, để hoàn thành quá trình xây dựng.

checking for pg_config... no
Can't find the 'libpq-fe.h header
blah blah

Sau khi chạy "brew install postgresql", tôi có thể thấy tất cả các thư viện cần thiết đang ở đó:

za:myapp za$ cat /Users/za/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/pg-1.0.0/mkmf.log | grep yes
find_executable: checking for pg_config... -------------------- yes
find_header: checking for libpq-fe.h... -------------------- yes
find_header: checking for libpq/libpq-fs.h... -------------------- yes
find_header: checking for pg_config_manual.h... -------------------- yes
have_library: checking for PQconnectdb() in -lpq... -------------------- yes
have_func: checking for PQsetSingleRowMode()... -------------------- yes
have_func: checking for PQconninfo()... -------------------- yes
have_func: checking for PQsslAttribute()... -------------------- yes
have_func: checking for PQencryptPasswordConn()... -------------------- yes
have_const: checking for PG_DIAG_TABLE_NAME in libpq-fe.h... -------------------- yes
have_header: checking for unistd.h... -------------------- yes
have_header: checking for inttypes.h... -------------------- yes
checking for C99 variable length arrays... -------------------- yes

2

Tôi đã gặp vấn đề khó chịu này với PG trong nhiều năm. Tôi đã tạo ra ý chính này để giúp đỡ.

Các lệnh sau luôn luôn làm việc cho tôi.

# Substitute Postgres.app/Contents/Versions/9.5 with appropriate version number
sudo ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config

ý chính: https://gist.github.com/sharnie/5588340cf023fb177c8d


1

Tôi đã phải làm điều này trên CentOS 5.8. Chạy liên bundle installtục gây ra vấn đề vì tôi không thể buộc nó sử dụng một phiên bản PG cụ thể.

Tôi cũng không yum erase postgresql postgresql-develthể, vì các vấn đề phụ thuộc (nó sẽ xóa php, http, v.v.)

Giải pháp? Tạm thời $ PATH để ưu tiên cho bản cập nhật pssql thay vì mặc định:

export PATH=/usr/pgsql-9.2/bin:$PATH
bundle install

Về cơ bản, với các lệnh trên, nó sẽ xem xét /usr/pgsql-9.2/bin/pg_configtrước lệnh trong/usr/bin/pg_config


1

Nếu bạn đang sử dụng jruby thay vì ruby, bạn sẽ gặp vấn đề tương tự khi cài đặt pg gem. Thay vào đó bạn cần cài đặt bộ chuyển đổi:

gem 'activerecord-jdbcpostgresql-adapter'

1

Trên Mac brew install postgresTHENbundle install


0

Bạn chỉ cần vào đây để xem phiên bản pg của bạn có hỗ trợ nền tảng Win32 không, sau đó sử dụng lệnh này để cài đặt:

cài đặt đá quý pg -v 0.14.1 - nền tảng = x86-mingw32

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.