Не удается установить pg gem на Windows

У меня есть 2 версии Ruby: 1.8.7 и 1.9.2 и PostgreSQL 8.3. Я не могу установить pg gem на любой из них. Получение этой ошибки:

C:/Development/Ruby187/bin/ruby.exe extconf.rb
checking for pg_config... yes
not recorded
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** 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=C:/Development/Ruby187/bin/ruby
 --with-pg
 --without-pg
 --with-pg-config
 --without-pg-config
 --with-pg-dir
 --without-pg-dir
 --with-pg-include
 --without-pg-include=${pg-dir}/include
 --with-pg-lib
 --without-pg-lib=${pg-dir}/lib

Я знаю, что это распространенная проблема, но я еще не нашел рабочего решения... О, я добавил C:\Program Files (x86)\PostgreSQL\8.3\bin в свой PATH.

Ответ 1

Сообщение, которое вы получаете, является ярким свидетельством того, что вам не хватает чего-то для правильной установки этого драгоценного камня:

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

Сегодня нет версии Windows для выпуска последней версии pg (0.10.0), но если вы установите 0.9.0, она должна установить двоичные файлы без проблем.

Во всяком случае, если вы хотите установить драгоценный камень, вам нужна среда сборки. Если вы используете RubyInstaller, вам понадобится DevKit

Установка драгоценного камня потребует, чтобы вы предоставили дополнительные опции для установки драгоценных камней (например, --with-pg-dir)

subst X: "C:\Program Files (x86)\PostgreSQL\8.3"
gem install pg -- --with-pg-dir=X:
subst X: /D

Ответ 2

PsAdding для пользователей Linux.

Я решил эту ошибку установить libpq-dev.

Ответ 3

Я боролся с этим два дня. Я делаю свою команду командной строки из превосходного unixy, например, командного окна, предоставленного msysgit. Я создал файл postgresql-path.bat, содержащий

@set PATH=%PATH%;C:\Progra~1\PostgreSQL\8.3\bin
@set PATH=%PATH%;C:\Progra~1\PostgreSQL\8.3\include
@set PATH=%PATH%;C:\Progra~1\PostgreSQL\8.3

В верхней части файла msys.bat я добавил

CALL postgresql-path.bat

Как только я получил пространство из своей переменной PATH для каталогов postgreSQL, мои проблемы с установкой "pg" ушли. Надеюсь, это избавит кого-то от проблем, которые у меня были.

Ответ 4

После почти двух дней проб и ошибок (и в значительной степени благодаря совету предыдущей публикации в этом потоке и в другом месте, я смог успешно установить pg 0.10.0 в Ruby 1.8.7 (для обоих моих RubyInstaller и мои версии InstantRails). В случае, если кто-либо столкнется с этой проблемой снова, я подведу итог моему окончательному успешному процессу установки.

Во-первых, мне пришлось установить DevKit, следуя инструкциям по установке. Я должен был скопировать (для безопасности), а затем удалить файл operating_system.rb в папке \Ruby187\lib\ruby ​​\ site_ruby\1.8\rubygems\defaults, чтобы установка успешно работала.

Во-вторых, я установил грабли-компилятор и rdoc gems. gem install rake-компилятор gem install rdoc (Если у вас есть проблемы с любым из них, я бы рекомендовал либеральное использование опции конфигурации --platform = win32)

Как только они были успешно установлены, окончательная установка pg была:

gem install pg --platform = mswin32 --version = 0.9.0 - - with-pg = {короткое имя каталога Postgres}\

например. gem install pg --platform = mswin32 --version = 0.9.0 - - with-pg = C:\PostgreSQL\

Окончательный "\", по-видимому, необходим для того, как установщик анализирует строки каталога. Я понимаю, что использование параметров конфигурации может быть немного больше, чем необходимо, но, по-видимому, успешная установка версии 0.10.0 (когда я исключил параметр -version) на самом деле не работал.

Еще раз спасибо тем, кто помог мне в этой последовательности.

Ответ 5

Сначала установите ruby ​​DevKit

В Windows XP и из терминала MSysGIT bash выполните следующие действия: на основе моего пути установки

subst X: "D:/Program Files/PostgreSQL/9.0"

gem install pg - --with-pg = X:

Мой драгоценный камень pg-0.10.1 был успешно установлен.

Ответ 6

Это может показаться неинтересным, но у меня была такая же ошибка с небольшим завихрением. Получив сборку, чтобы найти заголовки, она сразу же потерпела неудачу и утверждала, что не может найти libpq. Я, наконец, понял, что пытался создать против 64-битной установки postgres с 32-битным рубином. Установка 32-разрядных postgres привела к мгновенному исправлению. Просто подумал, что добавлю это, если кто-то другой с той же ошибкой наткнется на этот поток.

Ответ 7

Сообщение "Не удается найти заголовок" libpq-fe.h "означает, что установщик не может найти заголовок

  • Убедитесь, что ваша установка Postgre содержит средства разработки (папка "включить" ). Установите средства разработки postgre в случае отсутствия.
  • Проверить местоположение pg_config.exe. Вам нужно запустить установку, как, например, gem install pg -- --with-pg-config="C:/PROGRA~2/POSTGR~1/8.3/bin/pg_config.exe".
    Обратите внимание, что вам нужно использовать имена коротких.

Чтобы создать собственное расширение для pg gem, вам понадобится ruby ​​DevKit (http://rubyinstaller.org/downloads/)

Я встречаю другую проблему:

D:\app1>rake test
(in D:/app1)
rake aborted!
no such file to load -- 1.9/pg_ext

В этом случае вам нужно вручную скопировать содержимое копии C:\Ruby\192\lib\ruby\gems\1.9.1\gems\pg-0.10.0\lib\
для изображения C:\Ruby\192\lib\ruby\gems\1.9.1\gems\pg-0.10.0\lib\1.9

Ответ 8

Спасибо Луис! pg 0.9.0 установлен просто отлично.

Для последней версии (0.10.0) вам понадобится devkit и эта команда "gem install pg - --wp pg-dir = path/to/your/postgresql/dir"

Когда я оставляю дополнительные "-", это вызывает у меня ошибку: "gem install pg --with-pg-dir = C:/postgresql/9.0"

Ответ 9

У меня была та же проблема. У вас, скорее всего, есть Perl-установка на вашем пути до PostgreSQL. Наиболее распространенная установка perl для Windows имеет исполняемое имя pg_config в своем ящике, которое вызывает конфликты.

pg v0.10.0 устанавливается просто отлично с rubyinstaller + devkit, если вы указываете пути без пробелов (например, C:/PROGRA ~) - иначе nmake дроссели.

Ответ 10

Windows 7, PostgreSQL 8.4, Ruby 1.9.2:

subst X:\ "C:\Program Files\PostgreSQL\8.4"

gem install pg -- --with-pg=X:/

Это успешно установлено.

Ответ 11

Другой простой способ, в окнах

  • Установите postgresql ODBC.

  • Скопируйте libpq.dll из каталога lib pgqlODBC

  • Вставьте его в каталог lib PostgreSQL

  • Запустите эту команду (адаптируйте путь PostGreSQL в этой команде, в соответствии с вашим):

    gem install pg -- --with-pg-config="C:\Dev\Databases\PostgreSQL\9.0\bin\pg_config.exe"
    

Ответ 12

Я столкнулся с той же проблемой. Я хотел получить доступ к базе данных postgres с помощью dbi и должен был установить Pg. Мне потребовался день, чтобы успешно скомпилировать модуль с инструкциями, аналогичными другим сообщениям этого потока. Но во второй раз мне пришлось это сделать, я нашел другое решение: используя ODBC.

Это работало для меня, используя ruby ​​1.9.1 в Windows XP 32 бит. Кроме того, это не изменяет ничего в вашем коде, кроме строки DBI.connect, если вы уже используете DBI.

Ответ 13

PostgreSQL 9.0:

gem install pg --platform=mswin32 --version=0.9.0 -- '--with-pg="C:\Progra~1\PostgreSQL\"'

обратите внимание на инкапсуляцию с одним тиком. (~ 1 означает "Program Files", измените значение на ~ 2, если PostgreSQL находится в Program Files (x86) на Win64)

Ответ 14

Начиная с версии 0.13.0 драгоценного камня pg, вы должны установить его, используя следующее:

subst X: "C:\Program Files\PostgreSQL\9.0"
gem install pg -- -- with-pg=X:
subst X: /D

Затем вы можете успешно запустить bundle install и посмотреть следующую строку на выходе:

Using pg (0.13.0)

вместо ошибок.

Ответ 15

Я понял:

И ВОЛШЕБНЫЙ ТРИК:

is that you do not have this installed -- > postgres-devel

так что поймите его:

install postgresql-devel

Thats all..., а не просто gem install pg, и вот оно.