Как установить pg gem в PostgreSQL в Ubuntu?


292

Я пытаюсь установить PostgreSQL pg gem для Ruby.

Я дал следующую команду:

gem install pg

Я установил Ruby 1.9.2 с помощью RVM.

Приведенная выше команда показывает мне следующую ошибку.

Ошибка:

Building native extensions.  This could take a while...

ERROR:  Error installing pg:

ERROR: Failed to build gem native extension.

/home/User/.rvm/rubies/ruby-1.9.2-preview3/bin/ruby extconf.rb

checking for pg_config... yes
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=/home/User/.rvm/rubies/ruby-1.9.2-preview3/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
 --enable-static-build
 --disable-static-build
 --with-pqlib
 --without-pqlib
 --with-libpqlib
 --without-libpqlib
 --with-ms/libpqlib
 --without-ms/libpqlib

Gem files will remain installed in /home/user/.rvm/gems/ruby-1.9.2-preview3/gems/pg-0.9.0 for inspection.

Results logged to /home/user/.rvm/gems/ruby-1.9.2-preview3/gems/pg-0.9.0/ext/gem_make.out

Я не знаю, в чем ошибка ...


1
apt install postgresql-server-dev-allдля Ubuntu 18.04.
Ричард Пек

Ответы:


678

Вам необходимо установить пакет разработчика postgreSQL с заголовком PostgreSQL

sudo apt-get install libpq-dev

Я сделал это в соответствии с вашим предложением ... получить следующую потребность в 0B архивов. После распаковки освободится 5378кБ. Вы хотите продолжить? [Y / n /?] Y Запись расширенной информации о состоянии ... Готово (Чтение базы данных ... 166183 установленных файлов и каталогов.) Удаление Bison ... Удаление libnss3-dev ... Удаление libnspr4-dev ... Удаление libqt4-core ... Удаление libqt4-test ... Удаление libsqlite3-dev ... Обработка триггеров для man-db ..
palani

3
Для тех, кто действительно новичок в Ubuntu, как я, но в sudo apt-get install aptitudeпервую очередь для новичков :)
Харис Краина

1
перепробовал все виды комбинаций. даже после переустановки postgres и libpq. не повезло .. все та же проблема
Кришнапрасад Варма

5
Для дистрибутивов со вкусом Cent / RedHat вам понадобится пакетyum install postgresql-devel
Kyril

1
Я чувствую, что это может не работать для некоторых людей из-за их версий Ubuntu. Для меня это не
сработало

40

После прочтения и перебора в течение 2 дней и пробуя многие вещи, найденные в других заметках, следующая единственная строка была для меня лекарством от Ubuntu Lucid 10.04, смешанного с некоторыми пакетами Maverick и RVM (ruby 1.9.2-p290, rvm 1.10.2 rubygems 1.8.15, рельсы 3.0.1, postgres 8.4.10):

gem install pg  --   --with-pg-lib=/usr/lib   

результат:

Building native extensions.  This could take a while...  
Successfully installed pg-0.13.1  
1 gem installed  
Installing ri documentation for pg-0.13.1...  
Installing RDoc documentation for pg-0.13.1...  

{да - наконец, успех} !! Обратите внимание, что в результате запуска pg_config отсутствует элемент -lpq в переменной LIBS при моей установке Ubuntu / Postresql !!

а почему переход с pq на pg в определенных местах - смущает новичка ??

вещь, которую я до сих пор не понимаю, это двойной набор - и - с (вариант, но я все равно далеко за пределами моей глубины


2
'-' обычно используется для отделения параметров первой команды от второй, в этом случае скрипт настройки extmod
Тимоти Мид

1
Спасибо. Ваше решение было идеальным.
Сид

Большое спасибо за то, что поделились этим решением. застрял на этом на один день. рад, что встретил этот пост.
свист

30

Я на Ubuntu 12.10 и запускаю эту команду:

apt-get install libpq-dev

помог мне - после этого запустил gem install pg -v "0.14.1", и теперь все хорошо




24

Установка libpq-dev у меня не сработала. Мне также нужно было установить build-essential

sudo apt-get install libpq-dev build-essential

16

Простое решение для пользователей Ubuntu ...

Сначала удалите все пакеты postgres, затем запустите эти запятые ...

sudo apt-get install postgresql
sudo apt-get install postgresql-client libpq5 libpq-dev

# for rvm (single user)
mv ~/.rvm/usr/lib ~/.rvm/usr/lib_rvm 

# for rvm (multi-user)
mv /usr/local/rvm/usr/lib /usr/local/rvm/usr/lib_rvm

gem install pg  --   --with-pg-lib=/usr/lib

Затем запустите «пакетную установку». Все будет отлично. Хорошего дня!


1
Если кому-то интересно узнать, как удалить все пакеты postgres, выполните sudo apt-get remove --purge postgresql postgresql-9.3 (или любую другую версию postgres).
Томмиикси

9

Для пользователей .RVM будет лучше:

rvmsudo gem install pg -- --with-pg-lib=/usr/lib 

у меня это сработало (после того как я увидел версию jdupont)


7

Если у вас установлен libpq-dev и у вас все еще есть эта проблема, скорее всего, это связано с конфликтующими версиями libssl и друзей OpenSSL - системной версией Ubuntu в / usr / lib (на которой построен libpq) и второй версией RVM, установленной в $ HOME / .rvm / usr / lib (или / usr / local / rvm / usr / lib, если это системная установка). Вы можете убедиться в этом, временно переименовав $ HOME / .rvm / usr / lib и посмотрев, работает ли «gem install pg».

Чтобы решить эту проблему, перестройте rvm с помощью системных библиотек OpenSSL (может потребоваться вручную удалить libssl. * И libcrypto. * Из каталога rvm / usr / lib):

rvm reinstall 1.9.3 --with-openssl-dir=/usr

Это наконец решило проблему для меня на Ubunto 12.04.


Спасибо за этот ответ! Чем новее Ubuntu и чем старше сборка ruby, тем больше вероятность несоответствия OpenSSL.
mikeycgto

Ничто другое не сработало, кроме этого! Спасибо большое @ Майк-Блэквелл. Я почти потерял надежду, прежде чем вы пришли на помощь.
Варагравал

6

Попробуй это

sudo apt-get install postgresql postgresql-contrib libpq-dev

Вы должны установить сервер базы данных PG в первую очередь для установки клиентов. После этого вы устанавливаете клиенты.

См. Этот пост в блоге, чтобы узнать о настройке PostGresSQL впервые для разработки на Ruby on Rails.


5

Это решило проблему для меня в Ubuntu 12.04 после того, как каждое предложение здесь провалилось.

rvmsudo gem install pg -v '0.12.2' -- --with-pg-lib=/usr/include/postgresql

Мое решение было почти таким же; Я использую rbenv, и у меня сработало следующее: `gem install pg - --with-pg-lib = / usr / lib / postgresql / --with-pg-include = / usr / include / postgresql /`; Мне не нужно было указывать версию.
Дэн Тененбаум

3

Я пытался настроить проект Rails в моей только что установленной Ubuntu 16.04. Я столкнулся с той же проблемой при запуске комплектации. Бег

sudo apt-get install aptitude

с последующим

sudo apt-get install libpq-dev

Решил это для меня.


3

Для тех, кто все еще испытывает проблемы после попытки ответить на все вопросы на этой странице, следующее (наконец) сработало:

sudo apt-get install libgmp3-dev
gem install pg

Это было после выполнения всего остального, упомянутого на этой странице.

postgresql 9.5.8
Ubuntu 16.10


Это было то, что мне было нужно в Ubuntu 18.04
Weston Ganger,

1

У меня была та же проблема, и я пробовал много разных вариантов. После некоторых попыток я смог sudo gem install, но все еще не могу установить его без sudo.
Наконец-то я нашел решение - переустановка rvm мне помогла. Вероятно, это может сэкономить время кого-то еще.


1

Другое решение этой проблемы - установить PostgreSQL с помощью Homebrew / linuxbrew:

brew install postgresql

По привычке я не люблю использовать sudo без необходимости.


Доморощенный только для Mac.
II-

2
Там есть форк Linux.
echristopherson

Если вы не хотите устанавливать полный PostgreSQL, у меня сработало следующее:brew install libpq && brew link libpq --force
Эндрю

1

Для тех, кто пытается установить Redmine, я пропустил sudo apt-get install ruby-all-devпосле того, как попробовал все вышеперечисленное.

Начальная ошибка mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h.



0

Другой вариант - использовать Homebrew, который работает на Linux и macOS, для установки только вспомогательных библиотек:

brew install libpq

затем

brew link libpq --force

( --forceопция обязательна, потому что она конфликтует с формулой postgres.)

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