невозможно установить pg gem

219

Я пытался использовать, gem install pgно это не похоже на работу.

gem install pg дает эту ошибку

Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
        ERROR: Failed to build gem native extension.

C:/Ruby/bin/ruby.exe extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
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:/Ruby/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


Gem files will remain installed in C:/Ruby/lib/ruby/gems/1.8/gems/pg-0.10.1 for
inspection.
Results logged to C:/Ruby/lib/ruby/gems/1.8/gems/pg-0.10.1/ext/gem_make.out
Рохит
источник
3
Если вы на макинтош, следовать этому учебник: matthew.mceachen.us/blog/...
Ной W. Smith
1
@NatchiQ неработающая ссылка?
0112
в моем случае журнал ошибок сказал, что libpqне был найден, таким образом я установилsudo apt install postgresql postgresql-contrib libpq-dev pgadmin3 -y
Радж

Ответы:

14

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

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

Никита Барсуков
источник
388

У меня была эта проблема, это работало для меня:

Установите пакет postgresql-devel, это решит проблему отсутствия pg_config.

sudo apt-get install libpq-dev
Devaroop
источник
139
Работал для меня apt-get install libpq-dev. Спасибо за подсказку.
Райанмт
5
Подтверждение с домашней страницы pg gem Wiki : «В Ubuntu пакет / usr / bin / pg_config предоставляется пакетом libpq-dev».
Марк Берри
17
а как насчет Mac?
Fivell
23
@Fivell Позже к игре с ответом здесь, но если у вас установлен Homebrew, brew install postgresqlвы получите нужные вам пакеты.
Алекс ЛаФросия
19
@Fivell попробовать brew install postgresqlна Mac
Махаттам
91

Проблема в гем-зависимости, поэтому перед установкой pg убедитесь, что у вас установлен «libpq-dev»

Системы Ubuntu:

sudo apt-get установить libpq-dev

Системы RHEL:

yum install postgresql-devel

Mac:

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

Mahattam
источник
7
Ответ для Mac это правда. Это просто потому, что мы не установили PostgreSQL на машину.
Хоанг Ле
На Centos 7 yum install postgresql-develрешена моя ошибка, связанная с pg_config для установки 'pg' .gem. Кстати, я решил использовать только что выпущенный PostgreSQL 10
Артур
62

gem install pg -- --with-pg-config=/usr/pgsql-9.1/bin/pg_config

Flaviu
источник
3
Это помогло мне (на Centos 6.2)
TuK
14
Работал для меня на OS X, но с путем к /Applications/Postgres.app/Contents/MacOS/bin/pg_config (у меня есть автономный Postgres.app)
Мэтт
10
gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config на yosemite с приложением Postgres
twmulloy
Работал. Но на Mac предшествующая версия изменила env ARCHFLAGS="-arch x86_64"правила игры для меня.
Януш Ленар
2
Я использовал gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_configдля OSX 10.12
Тим Кринс
38

@Winfield сказал это :

Gem pg требует, чтобы клиентские библиотеки postgresql связывались друг с другом. Эта ошибка обычно означает, что она не может найти ваши библиотеки Postgres. Либо вы не установили их, либо вам, возможно, придется передать --with-pg-dir=их вашей установке gem.

Более того, вам нужно только --with-pg-config= установить его.

На Mac

Если, случайно, вы также установили postgres через пакет веб-сайтов на Mac, он будет где-то вроде /Applications/Postgres.app/Contents/Versions/9.3/bin .

Итак, либо вы передаете его на установку gem:

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

Или вы правильно установили PATH . Поскольку это может быть слишком много, чтобы временно установить PATH:

export PATH=%PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin/
cregox
источник
2
для конкретной версии:gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
Дэн Сэндленд
Внутри папки latestсодержимого Postgres.app есть папка с символической ссылкой, которая полезна в случае, если 9.3 больше не поставляется. gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config
Стивен Силбер
24

У меня не было postgresql, поэтому я просто установил его, используя

sudo apt-get install postgresql postgresql-server-dev-9.1

на Ubuntu 12.04.

Это решило это.


Обновить:

Используйте последнюю версию:

sudo apt-get install postgresql-9.3 postgresql-server-dev-9.3
Лассе Скиндстад Эберт
источник
Исправил проблему для меня, но на Mac (с homebrew) мне пришлось запустить эту команду:brew install postgresql
gMale
19

Это сработало в моем случае:

sudo apt-get install libpq-dev

Я использовал:

  • Ubuntu 14.04.2 LTS
  • Ruby 2.2.2
  • Рельсы 4.2.1
Zainal
источник
12

Если вы используете Postgres.app на Mac, вы можете решить эту проблему раз и навсегда, как это:

Во- первых gem uninstall pg, затем отредактировать ~/.bash_profileили ~/.zshrcфайл или эквивалент и добавьте:

# PostgreSQL bin path
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin

Тогда bundle installи gem install pgоба должны работать как положено.

DuArme
источник
Спасибо, это также работает с использованием brew установленного postgreSQL # Экспорт пути бина в PostgreSQL PATH = $ PATH: /usr/local/Cellar/postgresql/9.5.0/bin/
Бенуа
9
$ PATH=$PATH:/Library/PostgreSQL/9.1/bin sudo gem install pg

замените 9.1 на версию, установленную в вашей системе.

jstnno
источник
1
Это помогло мне на Mac, кто-нибудь знает, что такое путь по умолчанию и как его изменить?
Стив
Работает на OS X Maveric
Marek Kirejczyk
5

На Mac OS (Эль Капитано). Вы можете просто использовать:brew install postgresql

Джонс Агьеманг
источник
1
Да! Это было все, что мне было нужно! Установите на чистую OS X, нет Postgres.app
Lane
3

Gem pg требует, чтобы клиентские библиотеки postgresql связывались друг с другом. Эта ошибка обычно означает, что она не может найти ваши библиотеки Postgres. Либо у вас их не установлено, либо вам может потребоваться передать --with-pg-dir = вашей установке gem.

Уинфилд
источник
3

Для пользователей Mac

PATH=$PATH:/Library/PostgreSQL/9.4/bin/ gem install pg

Это должно сделать свое дело

Ронак Джайн
источник
3

Используйте с ARCHфлагом.

sudo env ARCHFLAGS="-arch x86_64" gem install pg

Это решило ту же проблему, что и у вас.

Аман Чхабра
источник
2

Я бы эту проблему на Linux Mint (Maya) 13, и я исправил это, установив postgresql и postgresql-server:

apt-get install postgresql-9.1 

sudo apt-get install postgresql-server-dev-9.1
SAIDI Belkacem
источник
2

Независимо от того, с какой ОС вы работаете, посмотрите на файл журнала, "Makefile"чтобы увидеть, что происходит, вместо того, чтобы устанавливать вслепую.

В моем случае, MAC OS, файл журнала находится здесь:

/Users/za/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/pg-1.0.0/mkmf.log

В журналах указывалось, что файл make не может быть создан из-за следующего:

Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers

Внутри mkmf.log вы увидите, что он не может найти необходимые библиотеки для завершения сборки.

checking for pg_config... no
Can't find the 'libpq-fe.h header
blah blah

После запуска "brew install postgresql"я вижу все необходимые библиотеки:

za:myapp za$ cat /Users/za/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/pg-1.0.0/mkmf.log | grep yes
find_executable: checking for pg_config... -------------------- yes
find_header: checking for libpq-fe.h... -------------------- yes
find_header: checking for libpq/libpq-fs.h... -------------------- yes
find_header: checking for pg_config_manual.h... -------------------- yes
have_library: checking for PQconnectdb() in -lpq... -------------------- yes
have_func: checking for PQsetSingleRowMode()... -------------------- yes
have_func: checking for PQconninfo()... -------------------- yes
have_func: checking for PQsslAttribute()... -------------------- yes
have_func: checking for PQencryptPasswordConn()... -------------------- yes
have_const: checking for PG_DIAG_TABLE_NAME in libpq-fe.h... -------------------- yes
have_header: checking for unistd.h... -------------------- yes
have_header: checking for inttypes.h... -------------------- yes
checking for C99 variable length arrays... -------------------- yes
зет
источник
2

Я уже несколько лет испытываю эту досадную проблему с PG. Я создал эту суть, чтобы помочь.

Следующая команда всегда работает для меня.

# Substitute Postgres.app/Contents/Versions/9.5 with appropriate version number
sudo ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config

Суть: https://gist.github.com/sharnie/5588340cf023fb177c8d

SharnieIvery
источник
1

Я должен был сделать это на CentOS 5.8. Запуск bundle installпродолжал вызывать проблемы, так как я не мог заставить его использовать определенную версию PG.

Я тоже не могу yum erase postgresql postgresql-develиз-за проблем с зависимостями (это уберет php, http и т. Д.)

Решение? Временно запутайте $ PATH, чтобы отдать предпочтение обновлению pgsql, а не по умолчанию:

export PATH=/usr/pgsql-9.2/bin:$PATH
bundle install

В основном, с помощью приведенных выше команд, он будет смотреть /usr/pgsql-9.2/bin/pg_configперед тем, как в/usr/bin/pg_config

Кристиан
источник
1

Если вы используете jruby вместо ruby, у вас будут похожие проблемы при установке гема pg. Вместо этого вам нужно установить адаптер:

gem 'activerecord-jdbcpostgresql-adapter'
Нури
источник
1

На Mac brew install postgresТОbundle install

Яр ХТУТ
источник
0

Вы просто зайдете сюда, чтобы увидеть, поддерживает ли ваша версия pg платформу Win32, затем используйте эту команду для установки:

gem install pg -v 0.14.1 --platform = x86-mingw32

revskill
источник