gem install dm-postgres-ошибка сборки адаптера

я пытаюсь построить DM-postgres-adapter, но получаю эту ошибку.

sudo gem install dm-postgres-adapter

Building native extensions.  This could take a while...
ERROR:  Error installing dm-postgres-adapter:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
checking for main() in -lpq... yes
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for postgres.h... yes
checking for mb/pg_wchar.h... no
*** 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.

установка pg работал после установки postgresql и установки pg_config path

`bundle config build.pg --with-pg-config=/usr/local/Cellar/postgresql/9.3.1/bin/pg_config`

что меня совершенно смущает, так это то, что postgres.hнайдено, но не pg_wchar.h который находится в том же каталоге /usr/local/Cellar/postgresql/9.3.1/include

настройка параметров не помогает

--with-pgsql-server-include=/usr/local/Cellar/postgresql/9.3.1/include

я пробовал это с MacPorts postgresql раньше. после того же ошибка я полностью удалил порты mac и установил postgresql с homebrew. Я также попробовал пакет postgresql Postgres.app но я всегда получаю эту ошибку.

как я уже сказал, перед установкой pg (gem) работал.


mkmf.log

как сказано в сообщении об ошибке - " Проверьте mkmf.файл журнала для более подробной информации."

  • ок, поехали!

это не имеет абсолютно никакого смысла для меня.

conftest.c:5:57: error: use of undeclared identifier 'main'
int t(void) { void ((*volatile p)()); p = (void ((*)()))main; return 0; }

1 error generated.

checked program was:

/* begin */
1: #include "ruby.h"
2:
3: /*top*/
4: extern int t(void);
5: int t(void) { void ((*volatile p)()); p = (void ((*)()))main; return 0; }
6: int main(int argc, char **argv)
7: {
8:   if (argc > 1000000) {
9:     printf("%p", &t);
10:   }
11:
12:   return 0;
13: }
/* end */

но...

этот

/usr/local/Cellar/postgresql/9.3.1/include/server/mb/pg_wchar.h:363:14: error: function         
cannot return function type 'int (unsigned char *, int)'
typedef bool (*mbcharacter_incrementer) (unsigned char *mbstr, int len);
              ^
/usr/local/Cellar/postgresql/9.3.1/include/server/mb/pg_wchar.h:388:2: error: unknown type     
name 'uint32'

... and lot of "unknown type name 'uint32' ...

pg_wchar.h найден!!!! да! но подождите, есть ошибка.

исправлена с

typedef uint32_t uint32; // added in pg_wchat.h

но потом

/usr/local/Cellar/postgresql/9.3.1/include/server/mb/pg_wchar.h:364:14: error: function     
cannot return function type 'int (unsigned char *, int)'
typedef bool (*mbcharacter_incrementer) (unsigned char *mbstr, int len);

да, я мог бы пройти через это и попытаться исправить это, но я не думаю, что это правильный путь

я понятия не имею, куда идти дальше. Так что если кто-то может помочь буду признателен он.

ps: я использую Mac os mavericks

2 ответов


Я это исправил.

Я хотел бы дать точные шаги, но это было что-то вроде этого:

  • обновленные вручную средства командной строки с сайта разработчика apple.

  • удалить все драгоценные камни

  • установлен rbenv, ruby-build, rbenv-bundler с использованием brew

  • установлен apple-gcc42 с помощью brew

  • установлен ruby 2.1 с помощью rbenv

  • установить путь для использования Рубина rbenv.

  • Set rbenv global 2.1.0

  • Uninstalled bundle

  • установлен пакет

  • побежал rbenv rehash

  • побежал sudo bundle install успешно.


из brew info postgres попробуйте установить ARCHFLAGS при создании драгоценного камня. что-то вроде

 ARCHFLAGS="-arch x86_64" gem install pg

или

  ARCHFLAGS="-arch x86_64" gem install dm-postgres-adapter 

и посмотрим, поможет ли это.