rails install pg - Không thể tìm thấy tiêu đề 'libpq-fe.h


86
$ sudo bundle install

Kết quả

Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..
Using rake (0.9.2.2) 
Using i18n (0.6.1) 
Using multi_json (1.3.6) 
Using activesupport (3.2.8) 
Using builder (3.0.4) 
Using activemodel (3.2.8) 
Using erubis (2.7.0) 
Using journey (1.0.4) 
Using rack (1.4.1) 
Using rack-cache (1.2) 
Using rack-test (0.6.2) 
Using hike (1.2.1) 
Using tilt (1.3.3) 
Using sprockets (2.1.3) 
Using actionpack (3.2.8) 
Using mime-types (1.19) 
Using polyglot (0.3.3) 
Using treetop (1.4.11) 
Using mail (2.4.4) 
Using actionmailer (3.2.8) 
Using arel (3.0.2) 
Using tzinfo (0.3.33) 
Using activerecord (3.2.8) 
Using activeresource (3.2.8) 
Using bundler (1.2.1) 
Using coffee-script-source (1.4.0) 
Using execjs (1.4.0) 
Using coffee-script (2.2.0) 
Using rack-ssl (1.3.2) 
Using json (1.7.5) 
Using rdoc (3.12) 
Using thor (0.16.0) 
Using railties (3.2.8) 
Using coffee-rails (3.2.2) 
Using jquery-rails (2.1.3) 
Installing pg (0.14.1) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.8 extconf.rb 
checking for pg_config... yes
Using config values from /usr/bin/pg_config
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
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=/usr/bin/ruby1.8
    --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 /var/lib/gems/1.8/gems/pg-0.14.1 for inspection.
Results logged to /var/lib/gems/1.8/gems/pg-0.14.1/ext/gem_make.out
An error occurred while installing pg (0.14.1), and Bundler cannot continue.
Make sure that `gem install pg -v '0.14.1'` succeeds before bundling.

Tôi đang làm $ gem install pg -v '0.14.1'nhưng điều này không giúp được gì

Gemfile của tôi

source 'https://rubygems.org'

#gem 'rails', '3.0.9'

#gem 'sqlite3', '1.3.6', :group => :development


gem 'rails', '3.2.8'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'


gem 'sqlite3'
gem 'pg'
gem 'taps'

gem 'json'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'


#group :production do
  #gem 'pg'
#end
#group :development do
  #gem 'sqlite3'
#end

gem_make.out

/usr/bin/ruby1.8 extconf.rb 
checking for pg_config... yes
Using config values from /usr/bin/pg_config
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
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=/usr/bin/ruby1.8
    --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

mkmf.log

find_executable: checking for pg_config... -------------------- yes

--------------------

find_header: checking for libpq-fe.h... -------------------- no

"gcc -E -I. -I/usr/lib/ruby/1.8/i686-linux -I. -D_FORTIFY_SOURCE=2 -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -I -fno-strict-aliasing -g -g -O2  -fPIC    conftest.c -o conftest.i"
conftest.c:1:22: fatal error: libpq-fe.h: No such file or directory
compilation terminated.
checked program was:
/* begin */
1: #include <libpq-fe.h>
/* end */

--------------------

Làm ơn giúp tôi với. Cảm ơn bạn.

Xin lỗi vì văn bản này. Bài đăng của bạn không có nhiều ngữ cảnh để giải thích các phần mã; vui lòng giải thích kịch bản của bạn rõ ràng hơn.


1
Bạn đã cài đặt PostgreSQL như thế nào?
Stefan


Câu trả lời:


184

Chỉ làm cái này

$ sudo apt-get install libpq-dev

11
Điều này đã làm điều đó cho tôi +1
Mladen Danic

Tôi cố gắng để làm điều đó trên Ubuntu 14.04 nhưng nó đã cho tôi thế này: "libpq-dev: phụ thuộc: libpq5 (= 9.3.4-1) nhưng 9.3.10-0ubuntu0.14.04 là phải được cài đặt"
Michael Lafayette

Nhưng sau đó khi tôi cố gắng cài đặt libpq5, nó cho biết "libpq5 đã là phiên bản mới nhất."
Michael Lafayette

Phiên bản PostgreSQL là: psql --version: psql (PostgreSQL) 9.3.10. PostgreSQL 9.3.10 trên x86_64-biết-linux-gnu, biên soạn bởi gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit
Michael Lafayette

1
Xuất sắc! Ứng dụng tôi đang biên dịch cũng cần đường dẫn libpq-fe.hphải được chỉ định rõ ràng --with-cflags=-I/usr/include/postgresql, trong trường hợp bất kỳ ai khác gặp phải điều tương tự.
Ben Johnson

75

Điều này được trả lời trong Không thể tìm thấy tiêu đề 'libpq-fe.h khi cố gắng cài đặt pg gem

Tùy thuộc vào môi trường của bạn:

  • Mac: brew install postgresql
  • Ubuntu :sudo apt-get install libpq-dev
  • RHEL :yum install postgresql-devel

Sau đó chạy gem install pglại


1
Tôi cố gắng để làm điều đó trên Ubuntu 14.04 nhưng nó đã cho tôi thế này: "libpq-dev: phụ thuộc: libpq5 (= 9.3.4-1) nhưng 9.3.10-0ubuntu0.14.04 là phải được cài đặt"
Michael Lafayette

Nhưng sau đó khi tôi cố gắng cài đặt libpq5, nó cho biết "libpq5 đã là phiên bản mới nhất." Tương tự cho PostgreSQL
Michael Lafayette

Phiên bản PostgreSQL là: psql --version: psql (PostgreSQL) 9.3.10. PostgreSQL 9.3.10 trên x86_64 -nown-linux-gnu, được biên dịch bởi gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit
Michael Lafayette

Này Michael, tôi không chắc mình có thể trả lời câu hỏi của bạn vì tôi không quen thuộc với Ubuntu, nhưng bạn có thể muốn xem câu trả lời của Michael Durrant tại đây: stackoverflow.com/a/8887801/2484523
Phil

Làm việc trên Red Hat EL7. Tôi đã nhận được tệp tiêu đề bị thiếu trong quá trình cài đặt Perl của DBD :: Pg.
Marcus

18

Thử đi:

  1. pha cài đặt postgresql
  2. gem cài đặt pg
  3. gói cài đặt

15

Trên hệ thống Fedora / RHEL, điều này đã thực hiện thủ thuật:

sudo yum install libpqxx-devel

Tại sao nó nói: Không có gói libpqxx-devel nào.
itji10dra,

1
danh sách yum libpq * theo sau là yum cài đặt libpqxx-devel.x86_64
erichfw

10
  • SO: Ubuntu
  • Lập trình ngôn ngữ: C

$ sudo apt-get install libpq-dev

Trong trường hợp của tôi, tôi đã đặt sai đường dẫn thư mục. Vì thế:

Từ: gcc -o lib_version lib_version.c -I/usr/include/postgresql -lpq -std=c99

Đến: gcc -o lib_version lib_version.c -I /usr/include/postgresql -lpq -std=c99

GL


5

Trên Mac OS X chạy như thế này:

gem install pg -- --with-pg-config=***/path/to/pg_config***

***/path/to/pg_config*** là đường dẫn đến pg_config


5

Đối với Amazon Linux (AWS):

sudo yum install postgresql-devel

sau đó chạy lại lệnh của bạn


4

Tôi gặp sự cố này với máy chủ Jenkins trên Amazon AMI.

$ pg_config | grep VERSION
VERSION = PostgreSQL 9.4.9

Sau đó, tùy thuộc vào phiên bản bạn cần, bạn có thể cài đặt lib cần thiết

$ sudo yum list postgresql* | grep devel
postgresql92-devel.x86_64               9.2.18-1.59.amzn1          @amzn-main
postgresql94-devel.x86_64               9.4.9-1.67.amzn1           @amzn-main
postgresql8-devel.x86_64                8.4.20-5.52.amzn1          amzn-main
postgresql93-devel.x86_64               9.3.14-1.62.amzn1          amzn-main
postgresql95-devel.x86_64               9.5.4-1.71.amzn1           amzn-main

Sau đó, bạn chỉ có thể cài đặt phiên bản tương ứng, trong trường hợp của tôi là phiên bản 9.4:

sudo yum install postgresql94-devel

1
Ah! Thông minh. Phiên bản cụ thể (9.6) cũng là rào cản của tôi trên AMI.
DaveGauer



1

Trên mac đảm bảo rằng postgres của bạn được liên kết. Bạn có thể làm điều đó bằng cách

brew link --overwrite postgresql

Điều này đã khắc phục sự cố cho tôi.


1

brew install postgresql đã làm cho tôi.

Cài đặt postgresql gặp lỗi khác

Error: The following directories are not writable by your user: /usr/local/lib/pkgconfig /usr/local/share/info /usr/local/share/man/man3

Lỗi này đã được khắc phục bằng cách cấp quyền truy cập vào các thư mục được đề cập cho người dùng hiện tại

sudo chown -R $(whoami) (path)


1

Điều này đã xảy ra khi tôi sử dụng capistrano trong khi triển khai ứng dụng của mình trong một bản phân phối centos7. Rõ ràng gem đang yêu cầu một số tệp tiêu đề có thể được giải quyết bằng cách cài đặt gói phát triển phù hợp.

Tôi đã sửa nó bằng cách chạy sudo yum search postgres | grep develvà tìm thấy gói phù hợp cho cài đặt postgres của tôi là 10.

Sau đó, chỉ cần chạy sudo yum install postgresql10-devel, và eureka!


Bạn đã cứu ngày của tôi! Tìm đúng phiên bản devel thực sự hữu ích!
HoangLM

0

Điều này đã làm việc cho tôi:

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

0

Tôi sử dụng Ubuntu-16. Và tôi sử dụng phương pháp được hiển thị ở đây: https://www.postgresql.org/download/linux/ubuntu/ để cài đặt postgresql-9.6; Và tôi sử dụng "sudo apt-get install libpq-dev"để cài đặt devlib, nhưng nó vẫn không thể hoạt động. Vì vậy, tôi sử dụng phương pháp lnđể thiết lập liên kết mềm, đây là : sudo ln -s /usr/include/postgresql/libpq-fe.h /usr/include/; sudo ln -s /usr/include/postgresql/postgres_ext.h /usr/include/ Và tôi giải quyết vấn đề cuối cùng.

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.