Ошибка при установке pg gem и работающем сервере после обновления леопарда до льва

Использовал резервную копию машины времени для синхронизации файлов с моего macbook под управлением Leopard на мой macbook pro под управлением Lion. После того, как у меня возникли проблемы с переходом на heroku из-за того, что я запускал sqlite3, я попал в кроличью нору, пытаясь установить pg gem.

gem install pg

дает:

        /Users/taylorjackson/.rvm/rubies/ruby-1.9.2-p136/bin/ruby extconf.rb 
checking for pg_config... yes
Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... *** 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.

Я новичок в Unix и боюсь, что что-то не так с файловой структурой, созданной машиной времени при слиянии 32-битного леопарда с 64-битным львом. Шаги, которые я предпринял до сих пор.

Переустановил XCode

Xcode 4.3.3
Build version 4E3002

Установленные инструменты командной строки в XCode из настроек.

обновлен до rvm 1.14.6 (мастер) с

rvm get head

Ударился головой о стену, пытаясь установить postgre локально с помощью macports. удалил macports и установил homebrew

Следил за записями от

brew doctor

тогда

варить установить postgresql

столкнулся с проблемами python и последовал совету установить без python

brew install --no-python postgresql

похоже, получил чистую установку postgresql, но мой вывод из

gem install pg 

все еще:

        /Users/taylorjackson/.rvm/rubies/ruby-1.9.2-p136/bin/ruby extconf.rb 
checking for pg_config... yes
Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... *** 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.

Также пробовал

bundle install

и

bundle config build.pg --with-pg-config=/users/taylorjackson/postgresql/bin/pg_config
bundle install

с теми же результатами Моя продуктивность за последние 7 часов упала до нуля. Не удается найти соответствующий файл mkmf.log. Любые другие идеи?

РЕДАКТИРОВАТЬ:

нашел mkmf.log. Вот соответствующее содержание:

def have_devel?
  unless defined? $have_devel
    $have_devel = true
    $have_devel = try_link(MAIN_DOES_NOTHING)
  end
  $have_devel
end

def try_do(src, command, &b)
  unless have_devel?
    raise <<MSG
The complier failed to generate an executable file.
You have to install development tools first.
MSG
  end
  begin
    src = create_tmpsrc(src, &b)
    xsystem(command)
  ensure
    log_src(src)
    rm_rf 'conftest.dSYM'
  end
end

person TronSawyer    schedule 23.07.2012    source источник
comment
Есть много почти одинаковых вопросов по поиску gem install Lion. Вы искали перед публикацией, и если да, то что насчет существующего ответа не помогло?   -  person Craig Ringer    schedule 24.07.2012
comment
Я провел почти 4 часа, просматривая соответствующие темы (отсюда и мой длинный начальный пост, который в основном исходит из советов SE). Кажется, что есть много соответствующих странных непредвиденных обстоятельств файловой структуры - все зависит от машины. В моем случае каким-то образом мое место установки для postgresql создало нового локального пользователя (хотя я не менял никаких мест по умолчанию - может быть, установлено в /usr /root ??) и заставило установку gem искать локальную установку pg в неправильное место. Сброс и удаление пользователя (+ все остальное, упомянутое в исходном посте) исправляют ситуацию.   -  person TronSawyer    schedule 24.07.2012
comment
А, спасибо. Я спросил только потому, что в последнее время я видел настоящий всплеск похожих сообщений о pg jem на ruby ​​​​на OSX lion. Помогает, если вы ссылаетесь на похожие сообщения, не в последнюю очередь потому, что это поможет другим людям, которые поздно найдут ваш вопрос.r   -  person Craig Ringer    schedule 25.07.2012


Ответы (2)


Вы нашли файл mkmf.rb, а не mkmf.log. Сначала mkmf.log будет выглядеть примерно так:

find_executable: checking for pg_config... -------------------- yes

--------------------

find_header: checking for libpq-fe.h... -------------------- yes
"/usr/bin/gcc-4.2 -o conftest -I/Users/mgranger/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/x86_64-darwin11.3.0 -I/Users/mgranger/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/ruby/backward -I/Users/mgranger/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1 -I. -I/Users/mgranger/.rvm/usr/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/usr/include  -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration  -fno-common -pipe conftest.c  -L. -L/Users/mgranger/.rvm/rubies/ruby-1.9.3-p194/lib -L/Users/mgranger/.rvm/usr/lib -L. -L/usr/local/lib -L/usr/lib     -lruby.1.9.1  -lpthread -ldl -lobjc "
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: int main() {return 0;}
/* end */

Вы можете найти его в каталоге «ext» в распакованном геме. Под bash это работает для меня:

less $(dirname $(gem which pg))/../ext/mkmf.log

В OSX сбой в первом заголовке почти всегда является признаком какой-то проблемы с настройкой вашего компилятора, особенно если он нашел ваш pg_config (и похоже, что это сделал ваш). Убедитесь, что «gcc» в начале команды в кавычках действительно существует на вашем компьютере. В моем случае это /usr/bin/gcc-4.2. Если оно отсутствует, вам нужно исправить это, прежде чем какое-либо расширение будет правильно установлено из исходного кода.

Если, с другой стороны, ваш gcc существует, прикрепите файл mkmf.log, который обычно содержит подсказки, необходимые для того, чтобы указать вам правильное направление.

person Michael Granger    schedule 24.07.2012
comment
Спасибо! Возможно, это тоже было частью ответа. Я переустановил gcc. - person TronSawyer; 25.07.2012
comment
В моем случае файл mkmf.log был найден с помощью: find /usr/lib/ruby/ -name *.log - person Sylvain; 04.03.2013

Перезапустил и заметил, что каким-то образом PostgreSQL был добавлен как пользователь (!). Удалил пользователя, добавил gem 'pg' в gemfile и установил бандл, и все прошло гладко. Не уверен, что странности в процессе установки могли вызвать это. Я не менял никаких настроек по умолчанию при установке, но я предполагаю, что проблема связана с использованием устаревшей версии macports.

Для тех, кто находится в похожей ситуации, я бы порекомендовал 1) никогда не переключать ОС с помощью резервной копии машины времени. 2) Чистая установка xcode, инструменты разработчика xcode (из меню настроек xcode) и homebrew. 3) принудительно обновить rvm 4) установить postgresql локально с помощью brew install postgresql. 5) Перезапустите и попробуйте снова установить пакет pg gem. Я сделал много вещей, но я думаю, что это те шаги, которые, я думаю, сработали.

person TronSawyer    schedule 25.07.2012
comment
К вашему сведению,. обычно PostgreSQL работает под собственной учетной записью пользователя. Удалите это, и у вас могут возникнуть проблемы с запуском в конфигурации по умолчанию. - person Chris Travers; 27.09.2012