невозможно установить 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
Радж

Ответы:



388

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

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

sudo apt-get install libpq-dev

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


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


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/

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

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оба должны работать как положено.


Спасибо, это также работает с использованием 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 на версию, установленную в вашей системе.


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

Используйте с 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

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


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'


0

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.