Ola tous les gens intelligents. Je suis confronté à un problème que j'essaie de résoudre mais qui échoue. J'essaye d'installer pg gem sur le serveur qui a l'installation d'Omnibus Chef sur ie http://www.opscode.com/chef/install/pg gem ne parvient pas à installer sur omnibus Chef installation
Fondamentalement le problème a été déjà signalé (http://tickets.opscode.com/browse/COOK-1406) mais I ' Je cherche une solution à ce problème s'il y en a - la solution de contournement suggérée pour installer des paquets à partir de repos Opscode Ubuntu - mais ceux qui viennent avec ruby 1.8 - J'espère que je ne dois pas continuer plus loin pourquoi je suis réticent à faire :)
l'erreur que je reçois lors de l'installation gem pg est:
$ sudo /opt/chef/embedded/bin/gem install pg
Building native extensions. This could take a while...
ERROR: Error installing pg:
ERROR: Failed to build gem native extension.
/opt/chef/embedded/bin/ruby extconf.rb
checking for pg_config... yes
Using config values from /usr/bin/pg_config
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for pg_config_manual.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)
*** 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
--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=/opt/chef/embedded/bin/ruby
--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
--with-pqlib
--without-pqlib
--with-libpqlib
--without-libpqlib
--with-ms/libpqlib
--without-ms/libpqlib
Gem files will remain installed in /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/pg-0.14.1 for inspection.
Results logged to /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/pg-0.14.1/ext/gem_make.out
Défaillant bits dans le mkmf.log est aussi fo ermet:
have_library: checking for PQconnectdb() in -lpq... -------------------- no
"gcc -o conftest -I/opt/chef/embedded/include/ruby-1.9.1/x86_64-linux -I/opt/chef/embedded/include/ruby-1.9.1/ruby/backward -I/opt/chef/embedded/include/ruby-1.9.1 -I. -I/opt/chef/embedded/include -I/usr/include/postgresql -I/opt/chef/embedded/include -fPIC conftest.c -L. -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L. -Wl,-rpath,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -rdynamic -Wl,-export-dynamic -L/usr/lib -Wl,-R -Wl,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -lruby -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
/usr/lib/libpq.so: undefined reference to `[email protected]_1.0.0'
collect2: ld returned 1 exit status
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <libpq-fe.h>
4:
5: /*top*/
6: int main() {return 0;}
7: int t() { void ((*volatile p)()); p = (void ((*)()))PQconnectdb; return 0; }
/* end */
"gcc -o conftest -I/opt/chef/embedded/include/ruby-1.9.1/x86_64-linux -I/opt/chef/embedded/include/ruby-1.9.1/ruby/backward -I/opt/chef/embedded/include/ruby-1.9.1 -I. -I/opt/chef/embedded/include -I/usr/include/postgresql -I/opt/chef/embedded/include -fPIC conftest.c -L. -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L. -Wl,-rpath,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -rdynamic -Wl,-export-dynamic -L/usr/lib -Wl,-R -Wl,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -lruby -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
conftest.c: In function ‘t’:
conftest.c:7:1: error: too few arguments to function ‘PQconnectdb’
/usr/include/postgresql/libpq-fe.h:243:16: note: declared here
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <libpq-fe.h>
4:
5: /*top*/
6: int main() {return 0;}
7: int t() { PQconnectdb(); return 0; }
/* end */
--------------------
have_library: checking for PQconnectdb() in -llibpq... -------------------- no
"gcc -o conftest -I/opt/chef/embedded/include/ruby-1.9.1/x86_64-linux -I/opt/chef/embedded/include/ruby-1.9.1/ruby/backward -I/opt/chef/embedded/include/ruby-1.9.1 -I. -I/opt/chef/embedded/include -I/usr/include/postgresql -I/opt/chef/embedded/include -fPIC conftest.c -L. -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L. -Wl,-rpath,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -rdynamic -Wl,-export-dynamic -L/usr/lib -Wl,-R -Wl,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -lruby -llibpq -lpthread -lrt -ldl -lcrypt -lm -lc"
/usr/bin/ld: cannot find -llibpq
collect2: ld returned 1 exit status
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <libpq-fe.h>
4:
5: /*top*/
6: int main() {return 0;}
7: int t() { void ((*volatile p)()); p = (void ((*)()))PQconnectdb; return 0; }
/* end */
"gcc -o conftest -I/opt/chef/embedded/include/ruby-1.9.1/x86_64-linux -I/opt/chef/embedded/include/ruby-1.9.1/ruby/backward -I/opt/chef/embedded/include/ruby-1.9.1 -I. -I/opt/chef/embedded/include -I/usr/include/postgresql -I/opt/chef/embedded/include -fPIC conftest.c -L. -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L. -Wl,-rpath,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -rdynamic -Wl,-export-dynamic -L/usr/lib -Wl,-R -Wl,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -lruby -llibpq -lpthread -lrt -ldl -lcrypt -lm -lc"
conftest.c: In function ‘t’:
conftest.c:7:1: error: too few arguments to function ‘PQconnectdb’
/usr/include/postgresql/libpq-fe.h:243:16: note: declared here
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <libpq-fe.h>
4:
5: /*top*/
6: int main() {return 0;}
7: int t() { PQconnectdb(); return 0; }
/* end */
--------------------
have_library: checking for PQconnectdb() in -lms/libpq... -------------------- no
"gcc -o conftest -I/opt/chef/embedded/include/ruby-1.9.1/x86_64-linux -I/opt/chef/embedded/include/ruby-1.9.1/ruby/backward -I/opt/chef/embedded/include/ruby-1.9.1 -I. -I/opt/chef/embedded/include -I/usr/include/postgresql -I/opt/chef/embedded/include -fPIC conftest.c -L. -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L. -Wl,-rpath,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -rdynamic -Wl,-export-dynamic -L/usr/lib -Wl,-R -Wl,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -lruby -lms/libpq -lpthread -lrt -ldl -lcrypt -lm -lc"
/usr/bin/ld: cannot find -lms/libpq
collect2: ld returned 1 exit status
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <libpq-fe.h>
4:
5: /*top*/
6: int main() {return 0;}
7: int t() { void ((*volatile p)()); p = (void ((*)()))PQconnectdb; return 0; }
/* end */
"gcc -o conftest -I/opt/chef/embedded/include/ruby-1.9.1/x86_64-linux -I/opt/chef/embedded/include/ruby-1.9.1/ruby/backward -I/opt/chef/embedded/include/ruby-1.9.1 -I. -I/opt/chef/embedded/include -I/usr/include/postgresql -I/opt/chef/embedded/include -fPIC conftest.c -L. -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L/opt/chef/embedded/lib -Wl,-R/opt/chef/embedded/lib -L. -Wl,-rpath,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -rdynamic -Wl,-export-dynamic -L/usr/lib -Wl,-R -Wl,/opt/chef/embedded/lib -L/opt/chef/embedded/lib -lruby -lms/libpq -lpthread -lrt -ldl -lcrypt -lm -lc"
conftest.c: In function ‘t’:
conftest.c:7:1: error: too few arguments to function ‘PQconnectdb’
/usr/include/postgresql/libpq-fe.h:243:16: note: declared here
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <libpq-fe.h>
4:
5: /*top*/
6: int main() {return 0;}
7: int t() { PQconnectdb(); return 0; }
/* end */
--------------------
Je pense que le problème est que gem pg est lié à une autre lib que celui postgresql a été construite contre et la compilation échoue. Je me demande simplement s'il y a quelque chose que je pourrais faire pour contourner cela? Des esprits brillants? Bravo
C'est ce que nous avons fini par faire. Mais nous n'aimons pas cela pour 2 raisons: 1.) chaque mise à niveau de Postgres signifie recompiler 2.) obtenir ce travail dans le livre de cuisine de postgres exigerait beaucoup de changements et gâcherait généralement des choses. Néanmoins, merci pour votre réponse – gyre
Oui, c'est totalement sous-optimal. C'est seulement un problème si vous voulez utiliser la gem pg dans Chef, comme dans les ressources de base de données de Opscode pour la gestion de bases de données et d'utilisateurs postgresql. Si vous utilisez pg seulement dans votre application, ce n'est pas nécessaire, il suffit d'installer la gemme sous le Ruby votre application utilise (nous ne recommandons pas le Ruby dans le paquet omnibus). – jtimberman
Autrement dit, nous ne recommandons pas le rubis du chef pour votre application, seulement pour le chef :-). – jtimberman