rails install pg - Não é possível encontrar o cabeçalho 'libpq-fe.h

86
$ sudo bundle install

Resultado

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.

Eu sou feito, $ gem install pg -v '0.14.1'mas isso não ajuda

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

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

Ajude-me, por favor. Obrigado.

Desculpe por este texto. Sua postagem não tem muito contexto para explicar as seções de código; explique seu cenário mais claramente.

Arthur Yakovlev
fonte
1
Como você instalou o PostgreSQL?
Stefan

Respostas:

184

Apenas faça isso

$ sudo apt-get install libpq-dev
Arthur Yakovlev
fonte
11
Isso fez isso por mim +1
Mladen Danic
Tentei fazer isso no Ubuntu 14.04, mas me deu o seguinte: "libpq-dev: Depends: libpq5 (= 9.3.4-1) mas 9.3.10-0ubuntu0.14.04 deve ser instalado"
Michael Lafayette
Mas então, quando tento instalar a libpq5, aparece a mensagem "libpq5 já é a versão mais recente."
Michael Lafayette
A versão do PostgreSQL é: psql --version: psql (PostgreSQL) 9.3.10. PostgreSQL 9.3.10 em x86_64-unknown-linux-gnu, compilado por gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64 bits
Michael Lafayette
1
Brilhante! A aplicação que eu estava compilando também precisava que o caminho libpq-fe.hfosse especificado explicitamente, --with-cflags=-I/usr/include/postgresqlcaso alguém encontrasse o mesmo.
Ben Johnson
75

Isso é respondido em Não consigo encontrar o cabeçalho 'libpq-fe.h ao tentar instalar o pg gem

Dependendo do seu ambiente:

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

Então corra de gem install pgnovo

Phil
fonte
1
Tentei fazer isso no Ubuntu 14.04, mas me deu o seguinte: "libpq-dev: Depends: libpq5 (= 9.3.4-1) mas 9.3.10-0ubuntu0.14.04 deve ser instalado"
Michael Lafayette
Mas então, quando tento instalar a libpq5, aparece a mensagem "libpq5 já é a versão mais recente." O mesmo para PostgreSQL
Michael Lafayette
A versão do PostgreSQL é: psql --version: psql (PostgreSQL) 9.3.10. PostgreSQL 9.3.10 em x86_64-unknown-linux-gnu, compilado por gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64 bits
Michael Lafayette
Olá Michael, não tenho certeza se posso responder sua pergunta porque não estou familiarizado com o Ubuntu, mas você pode verificar a resposta de Michael Durrant aqui: stackoverflow.com/a/8887801/2484523
Phil
Trabalhou no Red Hat EL7. Eu estava recebendo o arquivo de cabeçalho ausente durante uma instalação Perl do DBD :: Pg.
Marcus
18

Experimente isto:

  1. brew install postgresql
  2. gem instalar pg
  3. pacote de instalação
Karol
fonte
15

Em sistemas Fedora / RHEL, isso funcionou:

sudo yum install libpqxx-devel
nicolasochem
fonte
Por que diz: Nenhum pacote libpqxx-devel disponível.
itsji10dra
1
yum list libpq * seguido por yum install libpqxx-devel.x86_64
erichfw
10
  • SO: Ubuntu
  • Programação da linguagem: C

$ sudo apt-get install libpq-dev

No meu caso, eu estava colocando o caminho do diretório errado. Então:

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

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

GL

Braian Coronel
fonte
5

No Mac OS X, execute assim:

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

***/path/to/pg_config*** é o caminho para pg_config

Jiemurat
fonte
5

Para Amazon Linux (AWS):

sudo yum install postgresql-devel

então execute seu comando novamente

Gaurav Ragtah
fonte
4

Tive esse problema com um servidor Jenkins na Amazon AMI.

$ pg_config | grep VERSION
VERSION = PostgreSQL 9.4.9

Então, dependendo de qual versão você precisa, você pode instalar a lib necessária

$ 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

Em seguida, você pode apenas instalar a versão correspondente, no meu caso para a versão 9.4:

sudo yum install postgresql94-devel
Justin Fortier
fonte
1
Ah! Excelente. A versão específica (9.6) também foi meu obstáculo no AMI.
DaveGauer
3

Para Alpine Linux , você pode adicionar libpq-fe.hcom:

apk add postgresql-dev
Alter Lagos
fonte
1

tente isto:

sudo apt-get install libpq-dev
gem install pg 

seria trabalhos!

Javid Dadashkarimi
fonte
1

No mac, certifique-se de que seu postgres está vinculado. Você pode fazer isso por

brew link --overwrite postgresql

Isso resolveu o problema para mim.

Ashkinas
fonte
1

brew install postgresql trabalhou para mim.

A instalação do postgresql estava dando outro erro

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

Este erro foi corrigido fornecendo acesso aos diretórios mencionados para o usuário atual

sudo chown -R $(whoami) (path)

defcon
fonte
1

Isso estava acontecendo comigo usando capistrano ao implantar meu aplicativo em uma distro centos7. Aparentemente, o gem está exigindo alguns arquivos de cabeçalho que podem ser resolvidos instalando o pacote de desenvolvimento correto.

Eu consertei correndo sudo yum search postgres | grep devel e encontrei o pacote certo para minha instalação do postgres que era 10.

Em seguida, basta correr sudo yum install postgresql10-devele eureka!

JGutierrezC
fonte
Você salvou meu dia! Encontrar a versão correta do devel realmente ajuda!
HoangLM
0

Isso funcionou para mim:

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

Eu uso o Ubuntu-16. E eu uso o método mostrado aqui: https://www.postgresql.org/download/linux/ubuntu/ para instalar o postgresql-9.6; E eu uso "sudo apt-get install libpq-dev"para instalar o devlib. Mas ainda não funciona. Então eu uso o método lnpara estabelecer o soft link, aqui está sudo ln -s /usr/include/postgresql/libpq-fe.h /usr/include/:; sudo ln -s /usr/include/postgresql/postgres_ext.h /usr/include/ E eu finalmente resolvo o problema.

lxc
fonte