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
и посмотрим, поможет ли это.