rails install pg - Nie można znaleźć nagłówka 'libpq-fe.h


86
$ sudo bundle install

Wynik

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.

Jestem zrobiony $ gem install pg -v '0.14.1'Ale to nie pomaga

Mój plik Gemfile

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 */

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

Pomóż mi proszę. Dziękuję Ci.

Przepraszam za ten tekst. Twój post nie ma zbyt dużego kontekstu, aby wyjaśnić sekcje kodu; proszę wyjaśnij swój scenariusz jaśniej.


1
Jak zainstalowałeś PostgreSQL?
Stefan


Odpowiedzi:


184

Po prostu zrób to

$ sudo apt-get install libpq-dev

11

Próbowałem to zrobić na Ubuntu 14.04, ale dało mi to to: "libpq-dev: Zależy: libpq5 (= 9.3.4-1), ale 9.3.10-0ubuntu0.14.04 ma zostać zainstalowane"
Michael Lafayette

Ale kiedy próbuję zainstalować libpq5, pojawia się komunikat „libpq5 jest już najnowszą wersją”.
Michael Lafayette

Wersja PostgreSQL to: psql --version: psql (PostgreSQL) 9.3.10. PostgreSQL 9.3.10 na x86_64-unknown-linux-gnu, skompilowane przez gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit
Michael Lafayette

1
Znakomity! Aplikacja, którą kompilowałem, również wymagała libpq-fe.hjawnego określenia ścieżki --with-cflags=-I/usr/include/postgresql, na wypadek gdyby ktoś inny napotkał to samo.
Ben Johnson

75

Odpowiedź znajduje się w Nie można znaleźć nagłówka 'libpq-fe.h podczas próby instalacji pg gem

W zależności od środowiska:

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

Następnie biegnij gem install pgponownie


1
Próbowałem to zrobić na Ubuntu 14.04, ale dało mi to to: "libpq-dev: Zależy: libpq5 (= 9.3.4-1), ale 9.3.10-0ubuntu0.14.04 ma zostać zainstalowane"
Michael Lafayette

Ale kiedy próbuję zainstalować libpq5, pojawia się komunikat „libpq5 jest już najnowszą wersją”. To samo dotyczy PostgreSQL
Michael Lafayette

Wersja PostgreSQL to: psql --version: psql (PostgreSQL) 9.3.10. PostgreSQL 9.3.10 na x86_64-unknown-linux-gnu, skompilowane przez gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit
Michael Lafayette

Hej Michael, nie jestem pewien, czy potrafię odpowiedzieć na twoje pytanie, ponieważ nie znam Ubuntu, ale możesz sprawdzić odpowiedź Michaela Durranta tutaj: stackoverflow.com/a/8887801/2484523
Phil

Pracował na Red Hat EL7. Otrzymywałem brakujący plik nagłówkowy podczas instalacji DBD :: Pg w Perlu.
Marcus

18

Spróbuj tego:

  1. napar zainstaluj postgresql
  2. gem install str
  3. instalacja pakietu

15

W systemach Fedora / RHEL to załatwiło sprawę:

sudo yum install libpqxx-devel

Dlaczego jest napisane: Brak dostępnego pakietu libpqxx-devel.
itsji10dra

1
yum list libpq *, a następnie yum install libpqxx-devel.x86_64
erichfw

10
  • System operacyjny: Ubuntu
  • Programowanie języków: C

$ sudo apt-get install libpq-dev

W moim przypadku źle wstawiłem ścieżkę do katalogu. Więc:

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

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

GL


5

Na Mac OS X działa tak:

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

***/path/to/pg_config*** to ścieżka do pg_config


5

W przypadku Amazon Linux (AWS):

sudo yum install postgresql-devel

następnie ponownie uruchom polecenie


4

Miałem ten problem z serwerem Jenkins na Amazon AMI.

$ pg_config | grep VERSION
VERSION = PostgreSQL 9.4.9

Następnie, w zależności od potrzebnej wersji, możesz zainstalować wymaganą bibliotekę lib

$ 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

Następnie możesz po prostu zainstalować odpowiednią wersję, w moim przypadku dla wersji 9.4:

sudo yum install postgresql94-devel

1
Ach! Świetny. Konkretna wersja (9.6) była również moją przeszkodą w AMI.
DaveGauer



1

Na komputerze Mac upewnij się, że Twój postgres jest połączony. Możesz to zrobić przez

brew link --overwrite postgresql

To rozwiązało problem.


1

brew install postgresql pracował dla mnie.

Instalacja postgresql dawała kolejny błąd

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

Ten błąd został naprawiony poprzez udostępnienie wspomnianych katalogów bieżącemu użytkownikowi

sudo chown -R $(whoami) (path)


1

Działo się tak, gdy używałem Capistrano podczas wdrażania mojej aplikacji w dystrybucji Centos7. Najwyraźniej gem wymaga plików nagłówkowych, które można rozwiązać, instalując odpowiedni pakiet deweloperski.

Naprawiłem to, uruchamiając sudo yum search postgres | grep develi znalazłem odpowiedni pakiet dla mojej instalacji postgres, który był 10.

Następnie po prostu biegnij sudo yum install postgresql10-develi eureka!


Uratowałeś mi dzień! Znalezienie odpowiedniej wersji rozwojowej naprawdę pomaga!
HoangLM

0

To zadziałało dla mnie:

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

0

Używam Ubuntu-16. I używam metody pokazanej tutaj: https://www.postgresql.org/download/linux/ubuntu/, aby zainstalować postgresql-9.6; I używam "sudo apt-get install libpq-dev"do instalacji devlib, ale nadal nie może działać. Więc używam metody lndo ustanowienia miękkiego linku, oto ona sudo ln -s /usr/include/postgresql/libpq-fe.h /usr/include/:; sudo ln -s /usr/include/postgresql/postgres_ext.h /usr/include/ I wreszcie rozwiązuję problem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.