не вдається встановити pg gem


218

Я спробував використовувати, 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
Якщо ви перебуваєте на комп'ютері Mac, дотримуйтесь цього підручника: matthew.mceachen.us/blog/…
Ной У. Сміт

1
@NatchiQ зламане посилання?
0112.

в моєму випадку журнал помилок сказав, що libpqне знайдено, тому я встановивsudo apt install postgresql postgresql-contrib libpq-dev pgadmin3 -y
Raj

Відповіді:



388

У мене була ця проблема, це спрацювало на мене:

Встановіть пакунок postgresql-devel, це вирішить проблему відсутності pg_config.

sudo apt-get install libpq-dev

139
Працював для мене apt-get install libpq-dev. Дякую за підказку.
Ryanmt

5
Підтвердження з домашньої сторінки Wiki pg gem : "На Ubuntu / usr / bin / pg_config надається пакетом libpq-dev."
Марк Беррі

17
що з mac?
Fivell

23
@Fivell Пізно до гри з відповіддю тут, але якщо у вас встановлений Homebrew, brew install postgresqlви отримаєте необхідні вам пакунки.
Alex LaFroscia

19
@Fivell приміряй brew install postgresqlна mac
Mahattam

91

Проблема - це дорогоцінна залежність, тому перед встановленням pg переконайтеся, що ви встановили "libpq-dev"

Системи Ubuntu:

sudo apt-get install libpq-dev

RHEL системи:

yum встановити postgresql-devel

Мак:

варити встановити postgresql


7
Відповідь для Mac правдива. Це лише тому, що ми не встановили PostgreSQL на машині.
Hoang Le

У 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 on yosemite with Postgres App
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
Тім Крінс

37

@Winfield сказав це :

Додаток pg вимагає, щоб бібліотеки клієнтів postgresql прив'язувались до. Ця помилка означає, що вона не може знайти ваші бібліотеки Postgres. Або у вас їх не встановлено, або, можливо, вам доведеться передати --with-pg-dir=встановлення дорогоцінного каміння.

Більше того, вам потрібно лише --with-pg-config=встановити його.

На Mac

Якщо випадково ви також встановили postgres через пакет веб-сайтів на mac, це буде десь на зразок /Applications/Postgres.app/Contents/Versions/9.3/bin.

Отже, або передавайте це на встановлення дорогоцінного каміння:

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 (з домашньою мовою) мені довелося виконати цю команду:brew install postgresql
gMale

19

У моєму випадку це спрацювало:

sudo apt-get install libpq-dev

Я використав:

  • Ubuntu 14.04.2 LTS
  • Рубін 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повинні обидва працювати, як очікувалося.


Дякую, він також працює з використанням встановленого пива postgreSQL # PostgreSQL бін шлях експорту PATH = $ PATH: /usr/local/Cellar/postgresql/9.5.0/bin/
Benoit

9
$ PATH=$PATH:/Library/PostgreSQL/9.1/bin sudo gem install pg

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


1
Це допомогло мені на mac, хтось знає, що таке шлях за замовчуванням і як його змінити?
Стів

Працює на OS X Maveric
Marek Kirejczyk

5

На Mac OS (El Capitano). Ви можете просто використовувати:brew install postgresql


1
Так! Це все, що мені було потрібно! Встановіть на чисту ОС X, без Postgres.app
Lane Rettig

3

Додаток pg вимагає, щоб бібліотеки клієнтів postgresql прив'язувались до. Ця помилка означає, що вона не може знайти ваші бібліотеки Postgres. Або у вас їх не встановлено, або вам може знадобитися передати --with-pg-dir = до вашої інсталяції дорогоцінного каміння.



3

Використовувати з ARCHпрапором.

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

Це вирішило те саме питання, що у вас є.


2

Я б випустив цю проблему на Linux Mint (Maya) 13, і вирішив її, встановивши postgresql та postgresql-сервер:

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

gist: 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. Замість цього вам потрібно встановити адаптер:

gem 'activerecord-jdbcpostgresql-adapter'


0

Ви просто перейдіть сюди, щоб побачити, чи підтримує вашу версію pg платформу Win32, а потім скористайтеся цією командою для встановлення:

встановити gem pg -v 0,14,1 --platform = x86-mingw32

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.