2015-03-02 34 views
7

Ogni volta che eseguo bundle install sul mio VPS (versione CentOS Linux 7.0.1406 (Core)) viene visualizzato un errore durante l'installazione di pg gem.L'installazione di pg gem ha esito negativo, impossibile trovare l'intestazione libpq-fe.h

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. 

posso installare pg autonomo con: gem install pg -- --with-pg-config=/usr/pgsql-9.4/bin/pg_config e il problema è risolto.

Quindi ho aggiunto un task capistrano per creare un file ./bundle/config per la distribuzione con la chiave build.pg impostata con il percorso per pg_config sul mio VPS. Nel Capistrano config/deploy.rb viene invocato lo before bundler:install.

desc "Create bundle config" 
task :prepare_bundle_config do 
    on roles(:app) do 
    within release_path do 
     execute :bundle, 'config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config --local' 
    end 
    end 
end 

ho i pacchetti necessari installati:

postgresql94-server.x86_64 
postgresql94-devel.x86_64 
postgresql94-libs.x86_64 
libpqxx.x86_64 
libpqxx-devel.x86_64 

Ecco i Capistrano * gemme che ho installato

bundle list | grep capistrano 
* capistrano (3.3.5) 
* capistrano-bundler (1.1.4) 
* capistrano-rails (1.1.2) 
* capistrano-rbenv (2.0.3) 
* capistrano-stats (1.1.1) 

Che cosa mi manca qui per installare correttamente pg con bundler? Si prega di lasciare un commento se avete bisogno di ulteriori informazioni e aggiornerò questo post.

risposta

18

I file binari postgres non sono nel percorso. Collegale in una directory nel tuo percorso e dovresti essere bravo: ln -s /usr/pgsql-9.4/bin/p* /usr/local/bin.

Hai costruito postgres o installato da yum?

+0

L'attività personalizzata può essere eseguita con Capistrano in modo efficiente e indipendente? Che produzione hai da Capistrano? – JoePasq

+0

Grazie per la risposta: ecco un elenco con l'output di capistrano (con debug) https://gist.github.com/whargrove/03ff94d1b6e7648030ed – whargrove

+0

: prepare_bundle_config non può essere eseguito in modo indipendente perché usa release_path, quindi è disponibile solo durante l'attività di distribuzione. – whargrove

0

Trovo che se compilo pgsql con il codice sorgente e PATH ENV non configuro con pgsql/bin, ciò accade. Puoi provare con questo.