Як встановити pg gem PostgreSQL на Ubuntu?


292

Я намагаюся встановити pg-дорогоцінний камінь PostgreSQL для 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 архівів. Після розпакування 5378kB буде звільнено. Ви хочете продовжити? [Y / n /?] Y Запис розширеної інформації про стан ... Готово (Читання БД ... 166183 файлів і каталогів, які наразі встановлені.) Видалення зубрів ... Видалення libnss3-dev ... Видалення libnspr4-dev ... Видалення libqt4-core ... Видалення libqt4-test ... Видалення libsqlite3-dev ... Обробка тригерів для man-db ..
palani

3
Для тих, хто насправді є новим для Ubuntu, як я, але по-справжньому нового використовую sudo apt-get install aptitudeспочатку :)
Haris Krajina,

1
спробував всілякі комбінації. навіть після перевстановлення postgres та libpq. не пощастило .. все одно та сама проблема
Krishnaprasad Varma

5
Для дистрибуторів з ароматом Cent / RedHat пакунок, який ви хочете,yum install postgresql-devel
Кирило

1
У мене є відчуття, що це може не працювати для деяких людей через їх версії Ubuntu. Мені це не вдалося 13.04 з Postgres 9.1
Rebs

40

Прочитавши 2 дні та пробуючи багато речей, знайдених в інших замітках, наступний єдиний рядок був для мене лікуванням на Ubuntu Lucid 10.04, змішаному з деякими пакунками Maverick та RVM (ruby 1.9.2-p290, rvm 1.10.2 rubygems 1.8.15, рейки 3.0.1, постгреси 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 встановити pg -v "0.14.1", і все добре зараз



25

В Ubuntu це працює для мене, сподіваюся, допоможу вам:

sudo apt-get install libpq-dev

і

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

24

Установка libpq-dev не працювала для мене. Мені також потрібно було встановити істотну збірку

sudo apt-get install libpq-dev build-essential

16

Просте рішення для користувачів ubuntu ...

Спочатку видаліть усі пакунки після пошти, а потім запустіть ці товари ...

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 у вас є).
Tommyixi

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. * З dir rvm / usr / lib):

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

Це остаточно вирішило проблему для мене на Ubunto 12.04.


Дякую за цю відповідь! Чим новіша Ubuntu і чим старша побудова рубіну, тим більше шансів на виникнення невідповідності OpenSSL.
mikeycgto

Більше нічого не працювало, окрім цього! Дякую тобі @ mike-blackwell. Я майже відмовився від надії, перш ніж ти прийшов на допомогу.
varagrawal

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, але все ще є проблеми встановити його без судо.
Нарешті я знайшов рішення - перевстановлення rvm допомогло мені. Можливо, це може заощадити час комусь іншому.


1

Ще одне рішення цієї проблеми - встановити PostgreSQL за допомогою Homebrew / linuxbrew:

brew install postgresql

Як правило, я не люблю використовувати судо, якщо не потрібно.


Homebrew призначений лише для Mac.
IIllll

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параметр необхідний, оскільки він суперечить формулі постгресів.)

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