2015-11-19 31 views
6

Ricevo il seguente errore di "versione di libreria incompatibile" quando provo ad accedere al sito Web Ruby on Rails in modalità sviluppo.Rails pg gem Versione libreria incompatibile

incompatible library version - /var/www/vhosts/launch.site.com/httpdocs/vendor/bundle/ruby/2.2.0/gems/pg-0.18.4/lib/pg_ext.so (LoadError) 
    /var/www/vhosts/launch.site.com/httpdocs/vendor/bundle/ruby/2.2.0/gems/pg-0.18.4/lib/pg.rb:4:in `require' 
    /var/www/vhosts/launch.site.com/httpdocs/vendor/bundle/ruby/2.2.0/gems/pg-0.18.4/lib/pg.rb:4:in `<top (required)>' 
    /usr/local/rvm/gems/ruby-2.2.3/gems/bundler-1.10.6/lib/bundler/runtime.rb:76:in `require' 
    /usr/local/rvm/gems/ruby-2.2.3/gems/bundler-1.10.6/lib/bundler/runtime.rb:76:in `block (2 levels) in require' 
    /usr/local/rvm/gems/ruby-2.2.3/gems/bundler-1.10.6/lib/bundler/runtime.rb:72:in `each' 
    /usr/local/rvm/gems/ruby-2.2.3/gems/bundler-1.10.6/lib/bundler/runtime.rb:72:in `block in require' 
    /usr/local/rvm/gems/ruby-2.2.3/gems/bundler-1.10.6/lib/bundler/runtime.rb:61:in `each' 
    /usr/local/rvm/gems/ruby-2.2.3/gems/bundler-1.10.6/lib/bundler/runtime.rb:61:in `require' 
    /usr/local/rvm/gems/ruby-2.2.3/gems/bundler-1.10.6/lib/bundler.rb:134:in `require' 
    /var/www/vhosts/launch.site.com/httpdocs/config/application.rb:7:in `<top (required)>' 
    /var/www/vhosts/launch.site.com/httpdocs/config/environment.rb:2:in `require' 
    /var/www/vhosts/launch.site.com/httpdocs/config/environment.rb:2:in `<top (required)>' 
    config.ru:3:in `require' 
    config.ru:3:in `block in <main>' 
    /var/www/vhosts/launch.site.com/httpdocs/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/builder.rb:55:in `instance_eval' 
    /var/www/vhosts/launch.site.com/httpdocs/vendor/bundle/ruby/2.2.0/gems/rack-1.6.4/lib/rack/builder.rb:55:in `initialize' 
    config.ru:1:in `new' 
    config.ru:1:in `<main>' 
    /usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `eval' 
    /usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `preload_app' 
    /usr/share/passenger/helper-scripts/rack-preloader.rb:156:in `<module:App>' 
    /usr/share/passenger/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>' 
    /usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<main>' 

Ho guardato quali librerie pg_ext.so sta cercando di accedere e utilizzare ldd ed ecco l'output:

$ ldd pg-0.18.4/lib/pg_ext.so 
    linux-vdso.so.1 => (0x00007ffc14a7c000) 
    libruby.so.1.8 => /usr/lib64/libruby.so.1.8 (0x00007fe98291a000) 
    libpq.so.5 => /usr/lib64/libpq.so.5 (0x00007fe9826f1000) 
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fe9824cb000) 
    librt.so.1 => /lib64/librt.so.1 (0x00007fe9822c3000) 
    libdl.so.2 => /lib64/libdl.so.2 (0x00007fe9820be000) 
    libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fe981e87000) 
    libm.so.6 => /lib64/libm.so.6 (0x00007fe981c03000) 
    libc.so.6 => /lib64/libc.so.6 (0x00007fe98186e000) 
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fe981658000) 
    libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007fe9813ec000) 
    libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007fe981008000) 
    libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007fe980dc4000) 
    libldap_r-2.4.so.2 => /usr/lib64/libldap_r-2.4.so.2 (0x00007fe980b6c000) 
    /lib64/ld-linux-x86-64.so.2 (0x00007fe982e47000) 
    libfreebl3.so => /usr/lib64/libfreebl3.so (0x00007fe980968000) 
    libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007fe980681000) 
    libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007fe98047d000) 
    libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007fe980250000) 
    libz.so.1 => /lib64/libz.so.1 (0x00007fe98003a000) 
    libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007fe97fe2f000) 
    libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007fe97fc2b000) 
    libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fe97fa11000) 
    liblber-2.4.so.2 => /usr/lib64/liblber-2.4.so.2 (0x00007fe97f802000) 
    libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00007fe97f5e7000) 
    libssl3.so => /usr/lib64/libssl3.so (0x00007fe97f3a7000) 
    libsmime3.so => /usr/lib64/libsmime3.so (0x00007fe97f17b000) 
    libnss3.so => /usr/lib64/libnss3.so (0x00007fe97ee3b000) 
    libnssutil3.so => /usr/lib64/libnssutil3.so (0x00007fe97ec0f000) 
    libplds4.so => /lib64/libplds4.so (0x00007fe97ea0b000) 
    libplc4.so => /lib64/libplc4.so (0x00007fe97e805000) 
    libnspr4.so => /lib64/libnspr4.so (0x00007fe97e5c7000) 
    libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fe97e3a7000) 

ho provato ad aggiornare PostgreSQL usando yum update, quindi gemma disinstallare pg e gioiello installa pg. Ma continuo ad avere lo stesso problema. La gemma stessa si installa senza errori.

Non sono sicuro di come eseguire il debug di ulteriori. Cosa devo fare per installare, aggiornare o fare riferimento alle necessarie librerie compatibili?

Il server esegue:

  • CentOS 6.7
  • psql (PostgreSQL) 8.4.20
  • rubino 2.2.3p173 (2015/08/18 revisione 51636) [x86_64-linux]
  • rotaie 4.2.4
  • pg gemma 0.18.4

Grazie

+0

Hai provato 'bundle intall - withoutout production'? Si prega di controllare http://stackoverflow.com/questions/11127486/rails-postgres-error-reason-incompatible-library-version-libpq-5-dylib-requ –

+0

eseguire 'bundle update' e quindi' bundle install' – ImranNaqvi

+0

Grazie, ma nessuno di questi lavori. La risposta contrassegnata sulla domanda collegata è un po 'oltre me. Anche gli ambienti sono diversi (era su Mac OSX, io sono su CentOS 6.7) quindi la struttura dei file della libreria è completamente diversa. Inoltre, la traccia che sto ottenendo non mi dice quale delle librerie è incompatibile per quanto posso dire che rende molto più difficile il debug. – Boxhead

risposta

1

ottengo lo stesso errore quando chiamo in console rails c. Chiamando il numero bundle exec rails c rimosso quell'errore.

5

Prova:

$ gem install pg 
$ gem pristine --all 
+1

Cosa farà e come aiuterà a risolvere il problema? – Adam

0

Dopo aver guardato la discussione sul https://bitbucket.org/ged/ruby-pg/issues/229/pg_ext-improperly-linked-when-using-rvm, l'unico modo sono riuscito a farlo funzionare su Arch Linux stava rimuovendo il rubino a livello di sistema, poi ho fatto gem uninstall pg seguito da gem install pg --version 0.18.3. Questo ha fatto sparire il problema. Dopo di ciò ho reinstallato il rubino di sistema. Nel mio setup non avevo pacchetti a seconda del ruby ​​a livello di sistema, quindi è stato corretto rimuoverlo, ma YMMV.