После обновления до версии Ruby 1.9.3 (с версии 1.9.2 с использованием системы RVM) на Ubuntu 10.04.3 я удалил все мои драгоценные камни и попытался переустановить pg (ala bundle install pg
).
Затем он сделал ошибку и сообщил мне, что я должен посмотреть на mkmf.log, оба из которых включены в этот текст: https://gist.github.com/d05a81701d968895c730
libpq-dev, libpq5 и postgresql-клиент установлены и работают правильно. Нажатие gem на pg_config, а также каталоги include и bin напрямую не меняют ничего.
Я видел несколько вопросов о похожих сообщениях об ошибках вокруг stackoverflow и остальной части Интернета, но все они кажутся простыми недостающими проблемами зависимостей (большинство из них решаются путем установки libpq-dev), поэтому я с небольшими потерями.
Различные другие свойства, которые могут быть полезными/релевантными:
- ruby 1.9.3p0 (2011-10-30 версия 33570) [i686-linux]
- rvm 1.10.1 (система)
- gem 1.8.15
- psql (PostgreSQL) 8.4.9
Спасибо заранее.
gem_make.out:
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/usr/local/rvm/rubies/ruby-1.9.3-p0/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 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.
ldd.stdout:
$ldd /usr/lib/libpq.so
linux-gate.so.1 => (0xf57fe000)
libssl.so.0.9.8 => /lib/i686/cmov/libssl.so.0.9.8 (0xb77f4000)
libcrypto.so.0.9.8 => /lib/i686/cmov/libcrypto.so.0.9.8 (0xb76a2000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0xb75f1000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0xb75ec000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0xb75bd000)
libcrypt.so.1 => /lib/tls/i686/cmov/libcrypt.so.1 (0xb758b000)
libldap_r-2.4.so.2 => /usr/lib/libldap_r-2.4.so.2 (0xb7544000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb752b000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb73d0000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb73cc000)
libz.so.1 => /lib/libz.so.1 (0xb73b7000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0xb7393000)
libkrb5support.so.0 => /usr/lib/libkrb5support.so.0 (0xb738b000)
libkeyutils.so.1 => /lib/libkeyutils.so.1 (0xb7386000)
libresolv.so.2 => /lib/tls/i686/cmov/libresolv.so.2 (0xb7372000)
/lib/ld-linux.so.2 (0xb786a000)
liblber-2.4.so.2 => /usr/lib/liblber-2.4.so.2 (0xb7365000)
libsasl2.so.2 => /usr/lib/libsasl2.so.2 (0xb734d000)
libgnutls.so.26 => /usr/lib/libgnutls.so.26 (0xb72b2000)
libtasn1.so.3 => /usr/lib/libtasn1.so.3 (0xb72a0000)
libgcrypt.so.11 => /lib/libgcrypt.so.11 (0xb722d000)
libgpg-error.so.0 => /lib/libgpg-error.so.0 (0xb7228000)
pgconfig.stdout:
$pg_config --ldflags --libs
-Wl,-Bsymbolic-functions -Wl,--as-needed -Wl,--as-needed
-lpgport -lxslt -lxml2 -lpam -lssl -lcrypto -lkrb5 -lcom_err -lgssapi_krb5 -lz -lreadline -lcrypt -ldl -lm
mkmf.log:
find_executable: checking for pg_config... -------------------- yes
--------------------
find_header: checking for libpq-fe.h... -------------------- yes
"gcc -o conftest -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/i686-linux -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/ruby/backward -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1 -I. -I/usr/local/rvm/usr/include -D_FILE_OFFSET_BITS=64 -I/usr/include/postgresql -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -fPIC conftest.c -L. -L/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -Wl,-R/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -L/usr/local/rvm/usr/lib -Wl,-R/usr/local/rvm/usr/lib -L. -rdynamic -Wl,-export-dynamic -L/usr/lib -Wl,-R -Wl,/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -L/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -lruby -lpthread -lrt -ldl -lcrypt -lm -lc"
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: int main() {return 0;}
/* end */
"gcc -E -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/i686-linux -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/ruby/backward -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1 -I. -I/usr/local/rvm/usr/include -D_FILE_OFFSET_BITS=64 -I/usr/include/postgresql -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -fPIC conftest.c -o conftest.i"
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <libpq-fe.h>
/* end */
--------------------
find_header: checking for libpq/libpq-fs.h... -------------------- yes
"gcc -E -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/i686-linux -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/ruby/backward -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1 -I. -I/usr/local/rvm/usr/include -D_FILE_OFFSET_BITS=64 -I/usr/include/postgresql -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -fPIC conftest.c -o conftest.i"
checked program was:
/* begin */
1: #include "ruby.h"
2:
3: #include <libpq/libpq-fs.h>
/* end */
--------------------
have_library: checking for PQconnectdb() in -lpq... -------------------- no
"gcc -o conftest -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/i686-linux -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/ruby/backward -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1 -I. -I/usr/local/rvm/usr/include -D_FILE_OFFSET_BITS=64 -I/usr/include/postgresql -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -fPIC conftest.c -L. -L/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -Wl,-R/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -L/usr/local/rvm/usr/lib -Wl,-R/usr/local/rvm/usr/lib -L. -rdynamic -Wl,-export-dynamic -L/usr/lib -Wl,-R -Wl,/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -L/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -lruby -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
/usr/lib/libpq.so: undefined reference to `[email protected]_0.9.8'
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/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/i686-linux -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/ruby/backward -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1 -I. -I/usr/local/rvm/usr/include -D_FILE_OFFSET_BITS=64 -I/usr/include/postgresql -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -fPIC conftest.c -L. -L/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -Wl,-R/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -L/usr/local/rvm/usr/lib -Wl,-R/usr/local/rvm/usr/lib -L. -rdynamic -Wl,-export-dynamic -L/usr/lib -Wl,-R -Wl,/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -L/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -lruby -lpq -lpthread -lrt -ldl -lcrypt -lm -lc"
conftest.c: In function 't':
conftest.c:7: error: too few arguments to function 'PQconnectdb'
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/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/i686-linux -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/ruby/backward -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1 -I. -I/usr/local/rvm/usr/include -D_FILE_OFFSET_BITS=64 -I/usr/include/postgresql -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -fPIC conftest.c -L. -L/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -Wl,-R/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -L/usr/local/rvm/usr/lib -Wl,-R/usr/local/rvm/usr/lib -L. -rdynamic -Wl,-export-dynamic -L/usr/lib -Wl,-R -Wl,/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -L/usr/local/rvm/rubies/ruby-1.9.3-p0/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/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/i686-linux -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/ruby/backward -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1 -I. -I/usr/local/rvm/usr/include -D_FILE_OFFSET_BITS=64 -I/usr/include/postgresql -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -fPIC conftest.c -L. -L/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -Wl,-R/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -L/usr/local/rvm/usr/lib -Wl,-R/usr/local/rvm/usr/lib -L. -rdynamic -Wl,-export-dynamic -L/usr/lib -Wl,-R -Wl,/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -L/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -lruby -llibpq -lpthread -lrt -ldl -lcrypt -lm -lc"
conftest.c: In function 't':
conftest.c:7: error: too few arguments to function 'PQconnectdb'
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/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/i686-linux -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/ruby/backward -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1 -I. -I/usr/local/rvm/usr/include -D_FILE_OFFSET_BITS=64 -I/usr/include/postgresql -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -fPIC conftest.c -L. -L/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -Wl,-R/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -L/usr/local/rvm/usr/lib -Wl,-R/usr/local/rvm/usr/lib -L. -rdynamic -Wl,-export-dynamic -L/usr/lib -Wl,-R -Wl,/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -L/usr/local/rvm/rubies/ruby-1.9.3-p0/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/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/i686-linux -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1/ruby/backward -I/usr/local/rvm/rubies/ruby-1.9.3-p0/include/ruby-1.9.1 -I. -I/usr/local/rvm/usr/include -D_FILE_OFFSET_BITS=64 -I/usr/include/postgresql -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration -fPIC conftest.c -L. -L/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -Wl,-R/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -L/usr/local/rvm/usr/lib -Wl,-R/usr/local/rvm/usr/lib -L. -rdynamic -Wl,-export-dynamic -L/usr/lib -Wl,-R -Wl,/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -L/usr/local/rvm/rubies/ruby-1.9.3-p0/lib -lruby -lms/libpq -lpthread -lrt -ldl -lcrypt -lm -lc"
conftest.c: In function 't':
conftest.c:7: error: too few arguments to function 'PQconnectdb'
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 */
--------------------