pg gem을 설치하려고 할 때 'libpq-fe.h 헤더를 찾을 수 없습니다


790

Ruby on Rails 3.1 프리 버전을 사용하고 있습니다. PostgreSQL을 사용하고 싶지만 문제는 pggem을 설치하는 것 입니다. 다음과 같은 오류가 발생합니다.

$ gem install pg
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

        /home/u/.rvm/rubies/ruby-1.9.2-p0/bin/ruby 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=/home/u/.rvm/rubies/ruby-1.9.2-p0/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 /home/u/.rvm/gems/ruby-1.9.2-p0/gems/pg-0.11.0 for inspection.
Results logged to /home/u/.rvm/gems/ruby-1.9.2-p0/gems/pg-0.11.0/ext/gem_make.out

이 문제를 어떻게 해결합니까?


pg가 설치되었음을 증명할 수 있습니까?
thenengah

답변:


1247

우분투에서 헤더는 libpq-dev패키지의 일부입니다 (적어도 다음 우분투 버전에서는 11.04 (Natty Narwhal), 10.04 (Lucid Lynx), 11.10 (Oneiric Ocelot), 12.04 (Precise Pangolin), 14.04 (Trusty Tahr)) 및 18.04 (바이오닉 비버) :

...
/usr/include/postgresql/libpq-fe.h
...

따라서 libpq-devOS에 맞는 설치 또는 이에 상응하는 것을 시도하십시오 .

  • 우분투 / 데비안 시스템 : sudo apt-get install libpq-dev
  • 레드햇 리눅스 (RHEL) 시스템 :yum install postgresql-devel
  • Mac Homebrew의 경우 :brew install postgresql
  • Mac MacPorts PostgreSQL의 경우 :gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
  • 의 경우 오픈 수세 :zypper in postgresql-devel
  • 대한 아치 리눅스 :pacman -S postgresql-libs

1
우분투 11.04에서 나를 위해 작동하지 않았다durrantm@castleLinux2011:~/Dropbox_not_syncd/webs/3/linker$ gem install libpq-dev ERROR: Could not find a valid gem 'libpq-dev' (>= 0) in any repository durrantm@castleLinux2011:~/Dropbox_not_syncd/webs/3/linker$
마이클 Durrant

1
그런 다음이 요구하는 경우 자바 스크립트 라이브러리 설치 ... 보석 'execjs'설치 및 보석 설치 'therubyracer'
닉 Woodhams

@TravisR : 업데이트에 감사드립니다. 모든 사람이 최신 정보를 쉽게 유지할 수 있도록 커뮤니티 위키로 바꿨습니다.
mu는

Ubuntu 12.10을 사용하고 있습니다. libpq-dev를 설치 한 후 pg gem을 설치할 수 없습니다
vedarthk

2
답변을 수정하여 포함 apt-get install postgres-server-dev-{pg.version} 하십시오 귀하의 답변이 더 이상 Ubuntu 14.04의 postgresql 9.4에서 작동하지 않습니다 참조 : stackoverflow.com/a/28837453/75194
Ryan Rauh

168

맥 OS (이전에 맥 OS XOS X )를 사용 브루을 적절한 헤더를 설치합니다 :

brew install postgresql

그런 다음 실행

gem install pg

작동해야합니다.

또한, 대신 전체를 설치하는 postgresql작업을 수행 할 수 있습니다 brew install libpq올바른을 수출 PATHPKG_CONFIG_PATH같은 '주의 사항'섹션에 설명


5
Postgres.app를 사용하는 경우 문제가 발생합니까?
iconoclast

3
나를 위해 실행 후 brew install postgressql나는 실행 ARCHFLAGS="-arch x86_64" gem install pg하고 잘 작동합니다.
전체적으로 duka

5
또는 brew install libpqxxMac OSX에서 실행 하면 충분합니다
Ricardo Saporta

4
@RicardoSaporta libpqxxpostgresql의존성으로 설치 되므로 기본적으로brew install postgresql
Troggy

3
대신 전체를 설치하는 postgresql작업을 수행 할 수 있습니다 brew install libpq올바른을 수출 PATHPKG_CONFIG_PATH같은 '주의 사항'섹션에서 설명했다.
goetzc

118

또한 시도했지만 gem install libpq-dev이 오류가 발생했습니다.

Can't find the 'libpq-fe.h header
*** extconf.rb failed ***

그러나 sudo apt-get(Ruby on Rails와 함께 사용하지 않으려 는) 설치가 작동한다는 것을 알았습니다.

sudo apt-get install libpq-dev
# or
apt-get install postgres-server-dev-{pg.version}
# for postgresql 9.4 on Ubuntu 14.04

그때 나는 할 수 있었다

gem install pg

문제없이.


3
Ruby pg gem은 Ubuntu / Debian / ... libpq-dev패키지 와 함께 제공되는 일반적인 PostgreSQL C 라이브러리를 포함 합니다.
mu는 너무 짧습니다

46

다른 방법으로 해결할 수 있습니다. 시스템에서 라이브러리를 찾지 못했습니다. 따라서 PostgreSQL 기본 웹 사이트의 앱을 사용하여 설치했습니다. 필자의 경우 (OS X) /Library/PostgreSQL/9.1/include/설치가 끝나면 파일이 발견되었습니다 . PostgreSQL이 이미 설치되어있는 경우 시스템에 따라 파일이 다른 곳에있을 수도 있습니다.

gem 설치를위한 추가 경로를 추가하는 방법대한 이 링크 덕분에 다음 명령으로 gem을 lib로 지정할 수 있습니다.

export CONFIGURE_ARGS="with-pg-include=/Library/PostgreSQL/9.1/include/"
gem install pg

그 후에는 누락 된 라이브러리를 찾을 위치를 알기 때문에 작동합니다. 경로를 libpq-fe.h에 적합한 위치로 바꾸십시오.


2
David의 솔루션이 나를 위해 일했습니다. libpq-fe.h를 '/Applications/Postgres.app/Contents/Versions/9.3/include'로 추적하고 해당 경로와 함께 export 명령을 사용한 다음 'gem install pg'와 gem이 성공적으로 설치되었습니다.
Ryan Spears

감사합니다. 다음을 사용하여 저를 위해 일했습니다.export CONFIGURE_ARGS="with-pg-include=/usr/local/Cellar/postgresql/9.3.1/include/"
brookr

1
CentOS 6에서 Postgresql 9.3을 사용하여 pg_*스크립트를 $ PATH 에 심볼릭 링크하여 다음과 같이 해결했습니다 ln -s /usr/pgsql-9.3/bin/p* /usr/local/bin. postgres 9.3을 다음과 같이 설치했습니다.yum install http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm && yum install postgresql93 postgresql93-contrib postgresql93-server postgresql93-devel
JoePasq

1
다음과 같이 쓸 수도 있습니다gem install pg -- with-pg-include=/Library/PostgreSQL/9.1/include/
lfender6445

더 나은 아직을 사용하십시오 export CONFIGURE_ARGS="with-pg-config=/path/to/postgres/bin/pg_config". pg_config실행 파일은 필요한 모든 컴파일러 및 링커 옵션을 얻기 위해 호출 될 것이다 - 당신이 그들을보고 스스로를 실행할 수 있습니다.
skozin

29

libpq-fe.h 헤더를 찾을 수 없습니다

CentOS 7.0.1406 에서 다음 명령을 실행하여 성공했습니다 .

~ % psql --version # => psql (PostgreSQL) 9.4.1
yum install libpqxx-devel
gem install pg -- --with-pg-config=/usr/pgsql-9.4/bin/pg_config

또는pg 이 옵션 으로 항상 설치하도록 번 들러를 구성 할 수 있습니다 (배포 환경에서 번 들러를 실행하는 데 도움이 됨)

  • bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config

1
매우 도움이되었습니다. 감사합니다. 번들 구성에 관한 참고 사항을 추가하려면 다음 번들 명령을 실행할 사용자로 로그인 한 상태에서이 명령을 실행해야합니다. 번 들러 설정은 ~ / .bundle / config에 저장되어 있으므로 루트로 로그인 한 상태에서 번들 설정을 실행하면 '배치'사용자가 (예 : capistrano를 사용하여) 번 들러를 실행하면 찾을 수 없습니다.
레 Nightingill

3
bundle config build.pg --with-pg-config = / usr / pgsql-9.4 / bin / pg_config Centos 7에서 나를 위해 나를 해결
liloargana

2
번들 설정 build.pg --with-PG-설정 =는 / usr / pgSQL의-10 / 빈 / pg_config 당신이 postgresql10를 사용하는 경우
마헤 Neelakanta


17

기록만을 위해서:

PostgresApp가 포함 된 OS X의 Ruby on Rails 4 애플리케이션 (이 경우 0.17.1 버전 필요-오래된 프로젝트) :

gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

1
멋진 Postgres.app를 사용하는 경우 훌륭하게 작동합니다 . Postgres 10의 경우, 경로를 사용했습니다/Applications/Postgres.app/Contents/Versions/10/bin/pg_config
Masters Ducks

13

Mac OS X에서 다음과 같이 실행하십시오.

gem install pg -- --with-pg-config=***/path/to/pg_config***

***/path/to/pg_config*** pg_config의 경로입니다


1
공감. EnterpriseDB의 grapihcal installer 를 통해 Postgresql을 설치했습니다 . 그런 다음으로 pg-config 경로를 sudo find / -name "pg_config"찾은 다음 gem install pg -- --with-pg-config=/Library/PostgreSQL/9.4/bin/pg_config방금 찾은 경로를 사용하십시오.
Yi Zeng

12

제 경우에는 패키지였습니다 postgresql-server-dev-8.4( 64 비트 Ubuntu 11.04 (Natty Narwhal)에 있습니다).


10

Postgres.app를 사용하는 Mac 사용자에게는 정답은 libpq해당 패키지와 함께 제공되는 것입니다. 예를 들어, 9.4 릴리스 (이 글을 쓰는 현재 현재)에서는 필요한 것은 다음과 같습니다.

export CONFIGURE_ARGS="with-pg-include=/Applications/Postgres.app/Contents/Versions/9.4/include"
gem install pg

이렇게하면 pggem이 설치 한 PostgreSQL 버전과 정확하게 동기화됩니다. 이 경우 Homebrew에서 무언가를 설치하는 것은 낭비입니다.


9

Amazon Linux에서도 동일한 문제가 발생했습니다. 헤더를 찾을 수 libpq-fe.h있지만 어떻게 든 작동하지 않습니다.

시스템의 다른 사용자를 통해 설치된 다른 버전의 패키지에서 가져 왔습니다. PostgreSQL 9.2 및 PostgreSQL 9.3이 설치되었습니다. 따라서 라이브러리를 포함하기 전에 PostgreSQL 버전을 확인하십시오.

저에게있어 매직 커맨드 라인은 다음과 같습니다.

sudo yum install postgresql93 postgresql93-server postgresql93-libs postgresql93-contrib postgresql93-devel

출처 : PostgreSQL 9.3, PostGIS 2.1 및 Yum으로 pgRouting을 설치하는 거의 바보 가이드


라이브러리를 설치 한 후에는 "make distclean", "make clean", "./configure"를 정리하고 컴파일을 시작하십시오!
mzalazar

8

데비안 기반 배포판 (Ubuntu 포함)에 대한보다 일반적인 대답은 다음과 같습니다. 먼저 apt-file루트로 실행되는 패키지를 설치하십시오 :

apt-get install apt-file

파일을 포함하는 패키지를 검색 할 수 있습니다. 그런 다음 다음을 사용하여 데이터베이스를 업데이트하십시오.

apt-file update

(이는 일반 사용자로 실행할 수 있습니다). 그런 다음 다음을 사용하여 누락 된 헤더를 찾으십시오.

apt-file search libpq-fe.h

내 컴퓨터에서 이것은 다음을 제공합니다.

libpq-dev: /usr/include/postgresql/libpq-fe.h
postgres-xc-server-dev: /usr/include/postgres-xc/server/gtm/libpq-fe.h

당신은 간다!


"libpq-dev : /usr/include/postgresql/libpq-fe.h"는 있지만 "postgres-xc-server-dev : /usr/include/postgres-xc/server/gtm/libpq-fe.h"는 존재하지 않습니까? 내가 뭘 놓치고 있니?
furiabhavesh

파일 내용이 변경되었을 수 있습니다. 이것은 postgres -... 패키지에 libpq-fe.h의 개인 사본이있는 것처럼 보입니다. 어쨌든 libXXX-dev는 컴파일하려는 경우 찾고있는 것입니다.
Vincent Fourmond

7

대한 맥 OS PostgreSQL 서버를 설치하지 않고 :

brew install libpq
gem install pg -- --with-pg-config="/usr/local/Cellar/libpq/9.6.6/bin/pg_config"

5

Mac에서는 다음 코드를 사용하여 해결했습니다.

gem install pg -v '0.18.4' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config

4

Mac에서 Postgres.app를 실행 중이며

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin

먼저. 그때

bundle install

나를 위해 일했다.


4

Mac OS에서도 같은 문제가 있었지만 터미널에서 다음을 사용하여 PostgreSQL gem을 쉽게 설치했습니다.

ARCHFLAGS="-arch x86_64" gem install pg

(PostgreSQL을 먼저 설치했습니다 brew install postgresql.)


4

나는이 답변을 찾았으며 약 2 일 동안 연구 한 후에 나에게 도움이 된 유일한 사람이었습니다 (Mac OS).

$ sudo su

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

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

스택 오버플로 질문 PostgreSQL 클라이언트 라이브러리를 찾을 수 없음 (libpq)을 참조하십시오 .


4

최근에 Mac OS X v10.10 (Yosemite)으로 업그레이드 했으며 pg보석을 만드는 데 어려움이있었습니다 .

보고 된 오류는 다음과 같습니다.

Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... *** extconf.rb failed ***

내 솔루션이었다 gem uninstall pgbundle update pg최신와 보석을 대체 할 수 있습니다. brew update; brew upgradeYosemite 설치 후 이전에 설치 한 최신 버전의 패키지를 얻기 위해 실행했습니다 .


4

Ubuntu에서 "libpq-dev"를 설치하여이 문제를 해결하십시오.

sudo apt-get install libpq-dev

충분하지 않다면, sudo apt-get install postgresql전에 추가하십시오libpq-dev
Alex Poca

3

CentOS에서 libpq-dev package아래 명령을 사용하여 설치했습니다.

yum install postgresql-devel

실행시 gem install pg" No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config" 와 동일한 오류가 반환되었습니다 .

아래와 같이 보석을 설치하면 문제가 해결되었습니다.

gem install pg -- --with-pg-config=/usr/pgsql-x.x/bin/pg_config

2

FreeBSD (9.1)에서 필요한 패키지는 / usr / ports / database / postgresql-server *이며 설치시 "pg"의 gem 설치를 실패하게하는 필수 헤더 파일도 설치합니다. 이 답변은 해결책을 찾는 데 도움이되었지만 패키지 이름의 차이는 약간의 검색이 필요했습니다.

바라건대 이것은 FreeBSD 시스템에서 "-dev"패키지를 검색 할 때 약간의 헤드 스크래치를 피하는 데 도움이되기를 바랍니다.


2

데비안 7.0, 64 비트 (위지), 단지 실행

sudo apt-get install libpq-dev

libpq-dev를 성공적으로 설치 한 후 다음을 실행하십시오.

bundle install

2

CentOS 6.5 (Squeeze)에서 파일을 만들었습니다.

$ sudo touch /etc/profile.d/psql.sh

내용으로 :

pathmunge /usr/pgsql-9.3/bin

여기서 pg_config 파일로 PostgreSQL 경로를 설정해야합니다. 다음 명령으로이를 찾을 수 있습니다.

$ sudo find / -iname pg_config

파일을 저장하십시오.

$ sudo chmod +x /etc/profile.d/ruby.sh

명령을 다시 실행하십시오.

참고 : Bash 구성 을 변경할 때마다 ( profile.d 구성 변경) Bash를 다시로드해야합니다.


postgres를 어떻게 설치 했습니까? pg_*스크립트를 다음과 같이 경로에 심볼릭 링크했습니다 ln -s /usr/pgsql-9.3/bin/p* /usr/local/bin. 그 후 추가 스크립트 나 환경 변수가 필요하지 않았습니다.
JoePasq

2

위치는 libpq-fe.hPostgreSQL 설치 위치에 따라 다릅니다 (설치 방법에 따라 다름). locate( http://en.wikipedia.org/wiki/Locate_%28Unix%29 )를 사용 libpq-fe.h하여 컴퓨터 에서 파일 을 찾으십시오 . 존재하는 경우 includePostgreSQL 설치 디렉토리에 있습니다.

$ locate libpq-fe.h
/Library/PostgreSQL/9.1/include/libpq-fe.h

bin포함 된 pg_config디렉토리는 include디렉토리 와 동일한 디렉토리에 있습니다. 오류에서 알 수 있듯이 --with-pg-config 옵션을 사용하여 gem을 설치하십시오.

$ gem install pg --with-pg-config="/Library/PostgreSQL/9.1/bin/pg_config"

PostgreSQL을 설치 한 후 updatedb사용하지 않았 locate거나 업데이트하지 않은 경우 실행해야 할 수도 있습니다 .


없이 --전과 --with-pg-config=...: 나는 오류가 발생 ERROR : 보석을 실행하는 동안 (OptionParser :: InvalidOption) 잘못된 옵션 : --with-PG-설정 =는 / usr / 빈 / pg_config)
알렉시스 WILKE

2

마침내이 문제를 해결했지만 앞에서 설명한 방법을 사용하지 않았습니다.

를 사용하여 brew install postgresql이미 설치되었지만 연결되지 않았 음을 알았습니다.

  1. PostgreSQL이 설치된 위치를 찾아 삭제하십시오.

  2. 그런 다음 brew install postgresql다시

  3. brew link postgresql

  4. gem install pg


"brew link --force postgresql"은 나를 위해 일했지만 'export PATH = "/ usr/local/opt/postgresql@9.4/bin : $ PATH"를 실행해야하기 때문에 >> ~ / .bash_profile
Jagdish Narayandasani

2

방금 OSX에서 brew를 실행했습니다 postgres@9.4.

내 수정은 이것이었다 :

CONFIGURE_ARGS="with-pg-include=/usr/local/opt/postgresql@9.4/include/" bundle install

2

Postgresql 9.6 에서이 문제가 발생했습니다. 나는 그것을함으로써 고칠 수 있었다 :

brew upgrade postgresql@9.6
brew link postgresql@9.6 --force
gem install pg

2

asdf를 통해 설치된 postgres와 동일한 오류가 발생했습니다. pg-config 솔루션이 작동하지 않았습니다. 대신 파일을 포함하는 postgres include 폴더를 찾아서 --with-pg-include플래그로 명령을 실행해야했습니다.

gem install pg -- --with-pg-include=/<path>/.asdf/installs/postgres/<version>/include

1

들어 AltLinux패키지 postgresqlx.x-devel(내 경우 postgresql9.5-devel)이 설치되어 있어야합니다 :

apt-get install postgresql9.5-devel

yum으로 특정 버전을 설치할 수도 있습니다
-yum

1

'postgresql-common'패키지 설치를 해결했습니다. 이 패키지는 pg_config당신이 잃어 버렸을 가능성이 큰 바이너리를 제공합니다 .

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