Подтвердить что ты не робот

Проблемы с Rails и postgres после обновления до OS X 10.9 Mavericks

После обновления до OS X 10.9 Mavericks Я попытался запустить приложение Rails 3, но соединение с базой данных PG не работало. Проверка на PGAdmin III, база данных все еще существует, и она работает нормально. Поэтому я попытался переустановить жемчуг pg:

gem uninstall pg
gem install pg

Но последняя команда не удалась и дает следующую ошибку:

Создание собственных расширений. Это может занять некоторое время... ОШИБКА: Ошибка установка pg:

ОШИБКА: Не удалось создать собственное расширение gem.

    /Users/XXX/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb checking for pg_config... yes Using config values from

/USR/локальные/бен/pg_config * extconf.rb не удалось * Не удалось создать Makefile по какой-то причине, возможно, отсутствовали необходимые библиотеки и/или заголовки. Проверьте файл mkmf.log для получения более подробной информации. Вам может потребоваться конфигурация варианты.

/Users/XXX/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:381:in `try_do ': компилятор не смог сгенерировать исполняемый файл.

(RuntimeError) Сначала вы должны установить средства разработки. из /Users/XXX/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:461:in try_link0' from /Users/XXX/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:476:in try_link 'из extconf.rb: 39: in `'

Я думаю, проблема связана с инструментами Xcode для разработчиков. Я обновил Xcode до последней версии, но это не решило проблему. Вы знаете, как это исправить?

4b9b3361

Ответ 1

Используя homebrew, исправлено это для меня:

gem uninstall pg
brew install apple-gcc42
gem install pg

EDIT: я также вручную установил "devtools"

xcode-select --install

Ответ 2

Вы правы, что проблема связана с инструментами разработчика Xcode. Неплохая идея - убедиться, что все инструменты разработчика установлены (в отличие от установки gcc, как указано в предыдущем ответе):

  • Открыть Xcode
  • В меню приложения "Xcode" выберите "Открыть инструмент разработчика" > "Дополнительные инструменты для разработчиков"...
  • Это приведет вас к сайту с пакетом программного обеспечения. Идем дальше и загружаем и устанавливаем "Инструменты командной строки (OS X Mavericks) для Xcode - конец октября 2013 года".
  • Теперь вы сможете правильно установить драгоценный камень.

Для всех, кто придет к этой проблеме из новой установки приложения Postgres 9.3.0 в Mac OS X Mavericks (т.е. вы не используете homebrew для установки Postgres), вы можете заметить, что даже если вы можете создать pg gem вы не можете запустить рейк из-за проблемы с dylib:

rake aborted!
dlopen(/Users/[USERNAME]/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/pg-0.15.1/lib/pg_ext.bundle, 9): Library not loaded: @loader_path/../lib/libpq.5.dylib
  Referenced from: /Users/[USERNAME]/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/pg-0.15.1/lib/pg_ext.bundle
  Reason: image not found - /Users/[USERNAME]/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/pg-0.15.1/lib/pg_ext.bundle

К сожалению, это проблема с текущей версией 9.3.0 Postgres. Возврат к предыдущей версии поможет вам:

  • удалить pg gem: gem uninstall pg
  • удалите приложение 9.3.0 Postgres, перетащив его в корзину и опустошив корзину
  • установите версию 9.2.2.0 приложения Postgres здесь: http://postgres-app.s3.amazonaws.com/PostgresApp-9-2-2-0.zip
  • переустановите pg gem: gem install pg

* Благодаря комментарию от jhiro009 на этой теме для указания мне в правильном направлении на этом последняя часть сообщения Postgres, хотя версия 9.2.4.3, о которой он упоминал, не работает для меня.

Ответ 3

В OS X Mavericks

sudo ln -s /usr/bin/llvm-gcc /usr/bin/gcc-4.2
gem uninstall pg; gem install pg;

работает с установкой homegrew Postgresql (9.3.1) и установками командной строки Apple (pg 0.17.0).

Ответ 4

Ни один из предыдущих решений не работал у меня (я только что обновился до Mavericks и обновил XCode). Вместо этого я установил Postgress.app. и называется

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config

Ответ 5

Ни один из решений не работал у меня, и я не хотел использовать MacPorts. Попробуйте загрузить приложение Postgres и поместите его в каталог приложения.

Затем укажите местоположение недавно загруженного pg_config, который находится внутри приложения:

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config

Если вы запустили проблему с отсутствующими заголовками, попробуйте указать каталог include приложения:

gem install pg -- --with-pg-include='/Applications/Postgres.app/Contents/MacOS/include/'

Ответ 6

Если вы ищете быстрое исправление, добавьте следующее в файл database.yml:

host: localhost

У меня была точная проблема, добавлена ​​эта строка, и теперь все хорошо.

Ответ 7

Мне повезло после этого сообщения от парней в New-Bamboo:

3 быстрых подсказки для кодирования с OS X 10.9 Mavericks

После установки инструментов xcode dev третий шаг отсортировал все:

brew tap homebrew/versions && brew install apple-gcc42
brew link --force apple-gcc42
ln -nsf $(which gcc-4.2) /usr/bin/gcc-4.2

Ответ 8

У меня была эта проблема в первый раз, когда я попытался установить pg. Через различные испытания и ошибки я нашел что-то, что сработало. К счастью, мои заметки также работали, когда Маверикс сломал все.

Надеюсь, что это поможет:

Не делайте пивоварения.

загрузите программу установки EnterpriseDB с одним щелчком мыши, установите и запустите. Если он не работает, запустите его через командную строку (автоматический режим), и он изменит настройки памяти. Перезапустите, запустите снова.

Позволяет пользователю вызывать postgres с указанным вами паролем. Также устанавливается pgadmin III.

запустите это в каталоге приложения:

env ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-include =/Library/PostgreSQL/9.2/include/--with-pg-lib =/Library/PostgreSQL/9.2 sudo env ARCHFLAGS = '- arch i386' gem install pg/lib/

Откройте pgadmin3 и создайте пользователя и пароль для рельсов, затем добавьте его в конфигурацию.

psql [имя_базы_] #, чтобы проверить свой дБ. Или используйте pgadmin III