우분투에 PostgreSQL의 pg gem을 설치하는 방법은 무엇입니까?


292

Ruby 용 PostgreSQL의 pg gem을 설치하려고합니다.

나는 다음 명령을 내렸다.

gem install pg

RVM을 사용하여 Ruby 1.9.2를 설치했습니다.

위의 명령은 다음과 같은 오류를 보여줍니다.

오류는 다음과 같습니다

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우분투 18.04.
Richard Peck

답변:


678

PostgreSQL 헤더와 함께 postgreSQL dev 패키지를 설치해야합니다

sudo apt-get install libpq-dev

나는 당신의 제안에 따라 그렇게했습니다 ... 다음과 같은 자료를 얻으십시오. 포장을 풀면 5378kB가 해제됩니다. 계속 하시겠습니까? [Y / n /?] Y 확장 상태 정보 쓰기 ... 완료 (데이터베이스 읽기 ... 166183 현재 설치된 파일 및 디렉토리) 바이슨 제거 ... libnss3-dev 제거 ... libnspr4-dev 제거 ... libqt4-core ... libqt4-test 제거 ... libsqlite3-dev 제거 ... man-db에 대한 트리거 처리 ..
palani

3
나 같은 우분투 정말 새로운 사람,하지만 정말 새로운 사용을 위해 sudo apt-get install aptitude: 첫째
하리스 크라

1
모든 종류의 조합을 시도했습니다. postgres 및 libpq를 다시 설치 한 후에도. 운이 없다 .. 여전히 같은 문제
Krishnaprasad 바르 마

5
Cent / RedHat-flavored distros의 경우 원하는 패키지는 다음과 같습니다.yum install postgresql-devel
Kyril

1
우분투 버전으로 인해 일부 사람들에게는 이것이 작동하지 않을 수 있다고 생각합니다. 이 포스트 그레스 9.1과 13.04에 나를 위해 실패
남군

40

2 일 동안 읽고 쓰러 뜨리고 다른 메모에서 발견 된 많은 것들을 시도한 후 다음 단일 행은 일부 Maverick 패키지 및 RVM (ruby 1.9.2-p290, rvm 1.10.2 rubygems와 혼합 된 Ubuntu Lucid 10.04의 치료법이었습니다. 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 실행 결과에는 Ubuntu / Postresql 설치의 LIBS 변수에 -lpq 항목이 없습니다!

왜 특정 장소에서 pq에서 pg로 전환합니까?

내가 아직도 이해하지 못하는 것은-와 --with (옵션)의 이중 세트입니다. 어쨌든 나는 깊이를 넘어서고 있습니다.


2
'-'는 일반적으로 매개 변수를 첫 번째 명령과 두 번째 명령 (이 경우, extmod의 구성 스크립트
Timothy Meade

1
감사합니다. 당신의 솔루션은 완벽했습니다.
시드

이 솔루션을 공유해 주셔서 감사합니다. 이것에 하루 동안 붙어 있었다. 다행이 게시물이 발생했습니다.
9

30

우분투 12.10에 있으며이 명령을 실행 중입니다.

apt-get install libpq-dev

도움이되었습니다-그 후 gem install pg -v "0.14.1"을 실행하면 모두 좋습니다.



25

우분투에서는 이것이 나를 위해 작동합니다.

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

우분투 사용자를위한 간단한 솔루션 ...

먼저 모든 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이든).
Tommyixi

9

.RVM 사용자의 경우 더 좋습니다.

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

그것은 나를 위해 일했습니다 (jdupont 버전을 본 후)


7

libpq-dev가 설치되어 있고 여전히이 문제가 발생하는 경우 OpenSSL의 libssl 및 프렌즈의 충돌 버전 인 / usr / lib의 우분투 시스템 버전 (libpq가 빌드 된)과 두 번째 버전의 RVM이 $에 설치되어있을 수 있습니다. HOME / .rvm / usr / lib (또는 시스템 설치 인 경우 / usr / local / rvm / usr / lib) $ HOME / .rvm / usr / lib의 이름을 일시적으로 바꾸고 "gem install pg"가 작동하는지 확인하여이를 확인할 수 있습니다.

문제를 해결하려면 시스템 OpenSSL 라이브러리를 사용하여 rvm을 재 구축해야합니다 (rvm / usr / lib 디렉토리에서 libssl. * 및 libcrypto. *를 수동으로 제거해야 할 수도 있음).

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

이것은 마침내 Ubunto 12.04의 문제를 해결했습니다.


이 답변에 감사드립니다! 최신 우분투와 오래된 루비 빌드는 OpenSSL 불일치가 발생할 가능성이 높습니다.
mikeycgto

이 외에는 아무것도 효과가 없었습니다! @ mike-blackwell에게 감사합니다. 나는 당신이 구조에 오기 전에 거의 희망을 포기했습니다.
varagrawal


5

이것은 모든 제안이 실패한 후 우분투 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 /`; 버전을 지정할 필요가 없었습니다.
Dan Tenenbaum

3

새로 설치된 Ubuntu 16.04에서 Rails 프로젝트를 설정하려고했습니다. 번들을 실행하는 동안 동일한 문제가 발생했습니다. 달리는

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
우분투 16.10


이것은 내가 우분투 18.04에 필요했다
Weston Ganger

1

나는 같은 문제가 있었고 많은 다른 변형을 시도했다. 일부 시도 후 나는 할 수있게 sudo gem install되었지만 sudo없이 설치하는 데 여전히 문제가 있습니다.
마침내 나는 결정을 내 렸습니다-rvm을 다시 설치하면 도움이되었습니다. 아마 다른 사람의 시간을 절약 할 수 있습니다.


1

이 문제에 대한 또 다른 해결책은 Homebrew / linuxbrew를 사용하여 PostgreSQL을 설치하는 것입니다.

brew install postgresql

습관의 문제로, 나는 필요가 없다면 sudo를 사용하는 것을 좋아하지 않습니다.


Homebrew는 Mac 전용입니다.
IIllIIll

2
리눅스 포크가 있습니다.
echristopherson

전체 PostgreSQL을 설치하지 않으려면 다음 사항이 적용됩니다.brew install libpq && brew link libpq --force
Andrew

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

또 다른 옵션은 Linux 및 macOS에서 작동 하는 Homebrew 를 사용 하여 지원되는 라이브러리 만 설치하는 것입니다.

brew install libpq

그때

brew link libpq --force

(이 --force옵션은 postgres 수식과 충돌하기 때문에 필요합니다.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.