Я пытаюсь установить PostgreSQL для Rails на Mac OS X 10.6. Сначала я попробовал установить MacPorts, но это не сработало, поэтому я установил DMG в один клик. Это, казалось, сработало.
Я подозреваю, что мне нужно установить пакеты разработки PostgreSQL, но я не знаю, как это сделать на OS X.
Вот что я получаю, когда пытаюсь сделать sudo gem install pg
:
$ sudo gem install pg
Building native extensions. This could take a while...
ERROR: Error installing pg:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
checking for pg_config... yes
Using config values from /Library/PostgreSQL/8.3/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.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
--with-pg
--without-pg
--with-pg-dir
--without-pg-dir
--with-pg-include
--without-pg-include=${pg-dir}/include
--with-pg-lib
--without-pg-lib=${pg-dir}/lib
--with-pg-config
--without-pg-config
--with-pg_config
--without-pg_config
--with-pqlib
--without-pqlib
--with-libpqlib
--without-libpqlib
--with-ms/libpqlib
--without-ms/libpqlib
Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/pg-0.11.0 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/pg-0.11.0/ext/gem_make.out
ruby-on-rails
ruby-on-rails-3
postgresql
rubygems
Джейсон Светт
источник
источник
pg_config
? Это должно облегчить нам помощь.Ответы:
РАБОТАЛ!
источник
env ARCHFLAGS="-arch x86_64" gem install pg -v '0.17.1' -- --with-pg-config=/opt/local/lib/postgresql91/bin/pg_config
Я попробовал самый лучший ответ здесь:
Но когда я снова попытался запустить пакетную установку, возникла та же ошибка. Затем я попытался установить весь пакет с помощью ARCHFLAGS примерно так:
Работал на меня! Обязательно замените x86_64 на i386 в зависимости от используемой архитектуры.
источник
У меня просто была эта проблема при использовании EnterpiseDB .dmg. Если это то же самое, что вы использовали, я заставил его работать, указав правильную архитектуру:
В Интернете есть несколько учебных пособий, в которых говорится, что нужно указать другую архитектуру (например, «-arch x86_64» для людей, использующих MacPorts), но у меня не получилось, потому что я использовал установку одного файла.
источник
Если вы используете Yosemite:
Затем:
И (необязательно), наконец, если вы хотите запустить автоочистку ...
источник
Может быть, вы можете попробовать это:
Чтобы узнать архитектуру вашей библиотеки вы можете использовать
который дал только 1 архитектуру в моем случае (установленную через homebrew):
источник
Решение: переустановить PostgreSQL с помощью Homebrew.
источник
Поддельные,
gem
префикс соответствующих переменных среды. Если вы устанавливали из MacPorts, вы сможете пройти следующую процедуру:Оттуда, вытащить
LIBDIR
,INCLUDEDIR
,CPPFLAGS
,LIBS
иLDFLAGS
(тот , который я думаю , что получите вы используете этоLIBDIR
, тем не менее). Тогда вы бы запустили:Это должно сделать это для вас. Дайте мне знать, если это не так.
источник
locate pg_config
CPPFLAGS
илиLDFLAGS
(я не знаю, что это такое, извините).locate pg_config
же показал мне кое-что. И я попробовал просто установить PostgreSQL через MacPorts и использовать вашу команду - не сработало.LDFLAGS
он не был установлен в каталог, который содержалlibpq
. Смотрите выше для деталей.У нас была довольно странная проблема.
но когда мы фактически установили пакет, пакет не был установлен для версии ruby, которая была установлена с помощью rbenv, поэтому, когда мы вводили пакетную установку, он использовал пакет системы.
Поэтому, прежде чем запускать пакетную установку, убедитесь, что вы установили пакет, запустив
источник
Я не думаю, что вам нужны файлы разработки postgres, все, что вам нужно, должно быть включено в ваш установщик. Скорее всего, путь, по которому они установлены, находится не в пути к вашей среде, и поэтому gem не может найти их, когда пытается компилировать pg.
Вам не нужно запускать
gem install pg
с правами root, на самом деле, если вы это сделаете, скорее всего, ваш PATH (PATH root при запуске с sudo) не будет содержать необходимую информацию.У меня обычно работает следующее:
источник
gem install pg
(вместе с вашими двумя предыдущими командами) вместо того, чтобыsudo gem install pg
все еще давать те же самые результаты./Library/PostgreSQL/...
правильное местоположение, где находится ваша копия установки postgres?sudo port install postgresql83 postgresql83-server
, как показано в этой инструкции: flux88.com/2010/06/install-postgresql-for-rails-on-mac-os-x . Кажется, что автономный установщик является 32-битным, поэтому вы хотите установить флаги arch на 32-битные, даже если ваша машина 64-битная. Если вы не можете заставить его работать, я бы предложил удалить и переустановить через MacPorts, а затем попробовать описанные выше инструкции. Надеюсь, это поможет!Вот что наконец-то сделал для меня (комбинация нескольких решений, предоставленных ранее вместе с другими постами):
$ sudo env ARCHFLAGS = "- arch x86_64" gem install pg - with-pg-include = / Library / PostgreSQL / 9.6 / include /
источник
ARCHFLAGS
Ответ , что другие предложили не работать , если вы как - то в конечный итоге с 64-разрядной версией Postgres (который доморощенный установит) и 32-разрядную версию рубина с. Почему-тоrbenv
настаивает на сборке ruby 1.9.2-p290 как 32-битной для меня, что делает невозможным соединение с 64-битными postgres.Проверьте архитектуру вашего ruby-файла с
или если использовать rbenv
И сравните с вашими postgres:
Если есть несоответствие, вам нужно переустановить postgres или ruby. С помощью rbenv я решил эту проблему, просто переключившись на другую версию:
1.9.3-p194
вместо1.9.2-p290
.источник
Вот как я сделал это, чтобы работать на Маверикс. Примечание: я уже установил postgresql 9.3 от homebrew.
Обновите Xcode до 5.0 из App Store
Установите инструменты разработчика командной строки
xcode-select --install
Согласитесь с лицензией XCode
sudo xcodebuild -license
Установить драгоценный камень
ARCHFLAGS = "- arch x86_64" gem install pg
источник
В общем, я сделал это ;-)
источник
Вероятно, я немного опоздал на вечеринку, но в моем случае я использовал rbenv и обновился до Ruby 2.2.3. Мне пришлось установить Bundler, чтобы заставить мою работать, у меня была старая системная версия.
gem install bundler
источник
Как упомянуто выше, это связано с тем фактом, что на rbenv
/usr/bin/ruby: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [i386:Mach-O executable i386]
было две рубиновых архива, что мне нужно было просто установитьpg
gem, заставляяx86_64
arch использовать эту команду:sudo env ARCHFLAGS="-arch x86_64" gem install pg
Не забудьте
bash_profile
обновлятьДобавьте путь к вашим postgres, в этом случае я использую приложение Postgres (
OSX
) вместоbrew
( https://postgresapp.com/ ) по умолчанию это местоположение:export PATH=/Applications/Postgres.app/Contents/Versions/10/bin:$PATH
Перезагрузить Bash с
sudo vi ~/.bash_profile
После этого я смог наконец успешно установить
pg gem
Надеюсь это поможет!
источник
На Mac вы можете попробовать это (работает для меня): gem install pg - with-pg-include = / Library / PostgreSQL / 9.5 / include Fetching: pg-1.0.0.gem (100%) Создание собственных расширений с помощью: ' with-pg-include = / Library / PostgreSQL / 9.5 / include 'Это может занять некоторое время ... Успешно установленная pg-1.0.0 Разбор документации для pg-1.0.0 Установка документации ri для pg-1.0.0 Закончена установка документации для pg через 3 секунды 1 драгоценный камень установлен
(в этой части "/Library/PostgreSQL/9.5/include" вы должны указать путь к Postgres)
источник