rails install pg - Non riesco a trovare l'intestazione 'libpq-fe.h


88
$ sudo bundle install

Risultato

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.

Sono fatto $ gem install pg -v '0.14.1'Ma questo non aiuta

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

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

Aiutami per favore. Grazie.

Ci scusiamo per questo testo. Il tuo post non ha molto contesto per spiegare le sezioni del codice; spiega il tuo scenario in modo più chiaro.


1
Come hai installato PostgreSQL?
Stefan


Risposte:


190

Basta fare questo

$ sudo apt-get install libpq-dev

Ho provato a farlo su Ubuntu 14.04 ma mi ha dato questo: "libpq-dev: Depends: libpq5 (= 9.3.4-1) ma 9.3.10-0ubuntu0.14.04 deve essere installato"
Michael Lafayette

Ma poi quando provo a installare libpq5, viene visualizzato il messaggio "libpq5 è già la versione più recente".
Michael Lafayette

La versione di PostgreSQL è: psql --version: psql (PostgreSQL) 9.3.10. PostgreSQL 9.3.10 su x86_64-unknown-linux-gnu, compilato da gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit
Michael Lafayette

1
Brillante! L'applicazione che stavo compilando necessitava anche del percorso libpq-fe.hda specificare esplicitamente, con --with-cflags=-I/usr/include/postgresql, nel caso in cui qualcun altro lo incontrasse.
Ben Johnson

Per quelli di voi che si chiedono cosa significhi libpq-dev: contiene un insieme minimo di PostgreSQL_ binari e intestazioni richiesti per la creazione di applicazioni di terze parti per PostgreSQL_.
IronMan007

75

La risposta è in Impossibile trovare l'intestazione 'libpq-fe.h quando si tenta di installare pg gem

A seconda del tuo ambiente:

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

Quindi corri di gem install pgnuovo


1
Ho provato a farlo su Ubuntu 14.04 ma mi ha dato questo: "libpq-dev: Depends: libpq5 (= 9.3.4-1) ma 9.3.10-0ubuntu0.14.04 deve essere installato"
Michael Lafayette

Ma poi quando provo a installare libpq5, viene visualizzato il messaggio "libpq5 è già la versione più recente". Lo stesso per PostgreSQL
Michael Lafayette

La versione di PostgreSQL è: psql --version: psql (PostgreSQL) 9.3.10. PostgreSQL 9.3.10 su x86_64-unknown-linux-gnu, compilato da gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit
Michael Lafayette

Ehi Michael, non sono sicuro di poter rispondere alla tua domanda perché non ho familiarità con Ubuntu, ma potresti voler controllare la risposta di Michael Durrant qui: stackoverflow.com/a/8887801/2484523
Phil

Ha lavorato su Red Hat EL7. Stavo ottenendo il file di intestazione mancante durante un'installazione Perl di DBD :: Pg.
Marcus

18

Prova questo:

  1. brew installa postgresql
  2. gem install pg
  3. installazione bundle

15

Sui sistemi Fedora / RHEL questo ha funzionato:

sudo yum install libpqxx-devel

Perché dice: Nessun pacchetto libpqxx-devel disponibile.
itsji10dra

1
yum list libpq * seguito da yum install libpqxx-devel.x86_64
erichfw

10
  • COSÌ: Ubuntu
  • Programmazione linguistica: C

$ sudo apt-get install libpq-dev

Nel mio caso stavo sbagliando il percorso della directory. Così:

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

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

GL


5

Su Mac OS X funziona in questo modo:

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

***/path/to/pg_config*** è il percorso per pg_config


5

Per Amazon Linux (AWS):

sudo yum install postgresql-devel

quindi esegui di nuovo il comando


4

Ho avuto questo problema con un server Jenkins su Amazon AMI.

$ pg_config | grep VERSION
VERSION = PostgreSQL 9.4.9

Quindi, a seconda della versione di cui hai bisogno, puoi installare la lib richiesta

$ 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

Quindi puoi semplicemente installare la versione corrispondente, nel mio caso per la versione 9.4:

sudo yum install postgresql94-devel

1
Ah! Eccellente. La versione specifica (9.6) è stata anche il mio ostacolo all'AMI.
DaveGauer



2

Su Mac assicurati che il tuo postgres sia collegato. Puoi farlo da

brew link --overwrite postgresql

Questo ha risolto il problema per me.


2

Questo mi stava accadendo usando capistrano durante la distribuzione della mia app in una distribuzione centos7. Apparentemente gem richiede alcuni file di intestazione che possono essere risolti installando il giusto pacchetto di sviluppo.

L'ho risolto eseguendo sudo yum search postgres | grep devele ho trovato il pacchetto giusto per la mia installazione di postgres che era 10.

Quindi corri semplicemente sudo yum install postgresql10-develed eureka!


Mi hai salvato la giornata! Trovare la corretta versione di sviluppo aiuta davvero!
HoangLM

1

Uso Ubuntu-16. E uso il metodo mostrato qui: https://www.postgresql.org/download/linux/ubuntu/ per installare postgresql-9.6; E io uso "sudo apt-get install libpq-dev"per installare il devlib, ma ancora non può funzionare. Quindi io uso il metodo lnper stabilire soft link, qui è: sudo ln -s /usr/include/postgresql/libpq-fe.h /usr/include/; sudo ln -s /usr/include/postgresql/postgres_ext.h /usr/include/ E finalmente risolvo il problema.


1

brew install postgresql ha funzionato per me.

L'installazione di postgresql dava un altro errore

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

Questo errore è stato risolto dando accesso alle directory menzionate all'utente corrente

sudo chown -R $(whoami) (path)


0

Questo ha funzionato per me:

sudo gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.