2014-04-25 15 views
6

Sto provando a configurare il mio VPS (CentOS 6.4) con ruby ​​su rail e postgres.Installa pg gem su CentOS 6

Ho installato ruby ​​(2.1.0p0), rails (4.1.0) e postgresql (9.3.4) senza problemi.

Quando provo a creare una nuova app per i binari (rails new new_app -d postgresql) si interrompe durante l'installazione di pg gem. Ho esaminato tutti i post SO su questo errore e ho provato praticamente tutto quello che riuscivo a trovare. Il più suggerito è stato eseguire "yum install postgresql-devel" e ancora non ha funzionato.

Di seguito è possibile trovare l'output ssh e il file mkmf.log. Fatemi sapere se bisogno di più informazioni ...


uscita

 
Building native extensions. This could take a while... 
ERROR: Error installing pg: 
ERROR: Failed to build gem native extension. 

/home/deploy/.rvm/rubies/ruby-2.1.0/bin/ruby extconf.rb 
checking for pg_config... yes 
Using config values from /usr/bin/pg_config 
checking for libpq-fe.h... *** 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=/home/deploy/.rvm/rubies/ruby-2.1.0/bin/ruby 
    --with-pg 
    --without-pg 
    --with-pg-config 
    --without-pg-config 
    --with-pg_config 
    --without-pg_config 
    --with-pg-dir 
    --without-pg-dir 
    --with-pg-include 
    --without-pg-include=${pg-dir}/include 
    --with-pg-lib 
    --without-pg-lib=${pg-dir}/lib 
/home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError) 
You have to install development tools first. 
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:587:in `try_cpp' 
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:1120:in `block in find_header' 
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:918:in `block in checking_for' 
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:351:in `block (2 levels) in postpone' 
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:321:in `open' 
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:351:in `block in postpone' 
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:321:in `open' 
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:347:in `postpone' 
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:917:in `checking_for' 
    from /home/deploy/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/mkmf.rb:1119:in `find_header' 
    from extconf.rb:48:in `' 

extconf failed, exit code 1 


mkmf.log

 
"gcc -o conftest -I/home/deploy/.rvm/rubies/ruby-2.1.0/include/ruby-2.1.0/x86_64-linux -I/home/deploy/.rvm/rubies/ruby-2.1.0/include/ruby-2.1.0/ruby/backward -I/home/deploy/.rvm/rubies/ruby-2.1.0/include/ruby-2.1.0 -I. -I/usr/include  -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -fPIC conftest.c -L. -L/home/deploy/.rvm/rubies/ruby-2.1.0/lib -Wl,-R/home/deploy/.rvm/rubies/ruby-2.1.0/lib -L/usr/lib64 -Wl,-R/usr/lib64 -L. -fstack-protector -rdynamic -Wl,-export-dynamic  -Wl,-rpath,'/../lib' -Wl,-R -Wl,'/../lib' -L'/../lib' -lruby -lpthread -lrt -ldl -lcrypt -lm -lc" 
gcc: error trying to exec 'as': execvp: Permission denied 
checked program was: 
/* begin */ 
1: #include "ruby.h" 
2: 
3: int main(int argc, char **argv) 
4: { 
5: return 0; 
6: } 
/* end */ 

risposta

0

provare qualcosa di simile;

before "bundle:install" do 
    run "ls -l #{fetch(:latest_release)}/Gemfile" 
    #run "bundle config --local --gemfile=#{fetch(:latest_release)}/Gemfile build.pg --with-pg-config=/usr/pgsql-9.1/bin/pg_config" 
    run "cd #{fetch(:latest_release)} && bundle config build.pg --with-pg-config=/usr/pgsql-9.3/bin/pg_config" 
end 
+0

Dove dovresti provarlo? – Victor

0

Si potrebbe provare a installare la gemma pg con le postres pg_config opzione percorso del file:

gem install pg -- --with-pg-config=/usr/pgsql-9.2/bin/pg_config 

Si prega di aggiornare il percorso in base al sistema

saluti

0

ho avuto questo problema sul mio Mac ed era un problema di bash/RVM. Ho dovuto aggiungere questo alla mia risposta: [[-s "$ HOME/.rvm/scripts/rvm"]] & & sorgente "$ HOME/.rvm/scripts/rvm". Dato che sta trovando il file di configurazione I sarebbe guardare in questo.

5

Come non si utilizza la versione di PostgreSQL obsoleta che viene fornito con CentOS 6 (PostgreSQL 8.4), è necessario installare il pacchetto -devel corrisponde alla tua versione (PostgreSQL 9.x).

il il modo più semplice è utilizzare il Come l'ultima versione è 9.5 ed è compatibile con tutte le versioni 9.X scriverò le istruzioni per quello in e. In futuro è possibile fare riferimento allo official instructions per i comandi aggiornati.

yum install http://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-redhat95-9.5-2.noarch.rpm 
yum install postgresql95-devel 

quindi installare la gemma con l'opzione -with-pg-config:

gem install pg -- --with-pg-config=/usr/pgsql-9.5/bin/pg_config 
3

Questo è stato più facile per me:

ln -s /usr/pgsql-9.5/bin/pg_config /usr/local/bin/ 
+0

Questo è molto più semplice che specificare in ogni pacchetto. Tuttavia, è necessario ricordarsi di aggiornare questo sui principali cambiamenti di versione postgresql (9. *. *) –

+0

Questo non funzionerà con PostgreSQL 9.X perché CentOS 6 è dotato di PostgreSQL 8.4 – Victor