pg gem을 설치하려고 할 때 'libpq-fe.h 헤더를 찾을 수 없습니다.
Ruby on Rails 3.1 이전 버전을 사용하고 있습니다. PostgreSQL을 사용하고 싶지만 문제는 pg
gem을 설치하는 것 입니다. 다음과 같은 오류가 발생합니다.
$ 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
이 문제를 어떻게 해결합니까?
우분투에서는 헤더가 libpq-dev
패키지의 일부인 것처럼 보입니다 (최소한 우분투 버전 11.04 (Natty Narwhal), 10.04 (Lucid Lynx), 11.10 (Oneiric Ocelot), 12.04 (Precise Pangolin), 14.04 (Trusty Tahr)). 및 18.04 (Bionic Beaver)) :
...
/usr/include/postgresql/libpq-fe.h
...
따라서 libpq-dev
OS에 대해 또는 이와 동등한 설치를 시도하십시오 .
- Ubuntu / Debian 시스템의 경우 :
sudo apt-get install libpq-dev
- 에 레드햇 리눅스 (RHEL) 시스템 :
yum install postgresql-devel
- For Mac Homebrew:
brew install postgresql
- For Mac MacPorts PostgreSQL:
gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
- For OpenSuse:
zypper in postgresql-devel
- For ArchLinux:
pacman -S postgresql-libs
On macOS (previously Mac OS X and OS X), use Homebrew to install the proper headers:
brew install postgresql
and then running
gem install pg
should work.
Alternatively, instead of installing the whole postgresql
, you can brew install libpq
and export the correct PATH
and PKG_CONFIG_PATH
as explained in the 'Caveats' section
I had also tried doing gem install libpq-dev
, but I received this error:
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
However I found that installing with sudo apt-get
(which I try to avoid using with Ruby on Rails) worked, i.e.
sudo apt-get install libpq-dev
# or
apt-get install postgres-server-dev-{pg.version}
# for postgresql 9.4 on Ubuntu 14.04
then I was able to do
gem install pg
without issues.
I could solve this in another way. I didn't find the library on my system. Thus I installed it using an app from PostgreSQL main website. In my case (OS X) I found the file under /Library/PostgreSQL/9.1/include/
once the installation was over. You may also have the file somewhere else depending on your system if you already have PostgreSQL installed.
Thanks to this link on how to add an additional path for gem installation, I could point the gem to the lib with this command:
export CONFIGURE_ARGS="with-pg-include=/Library/PostgreSQL/9.1/include/"
gem install pg
After that, it works, because it now knows where to find the missing library. Just replace the path with the right location for your libpq-fe.h
Can't find the libpq-fe.h header
i had success on CentOS 7.0.1406 running the following commands:
~ % psql --version # => psql (PostgreSQL) 9.4.1
yum install libpqxx-devel
gem install pg -- --with-pg-config=/usr/pgsql-9.4/bin/pg_config
Alternatively, you can configure bundler to always install pg
with these options (helpful for running bundler in deploy environments),
bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config
For CentOS 6.4,
yum install postgresql-devel
gem install pg
worked well!
Just for the record:
Ruby on Rails 4 application in OS X with PostgresApp (in this case 0.17.1 version needed - kind of an old project):
gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
On Mac OS X run like this:
gem install pg -- --with-pg-config=***/path/to/pg_config***
***/path/to/pg_config***
is path to pg_config
In my case it was package postgresql-server-dev-8.4
(I am on Ubuntu 11.04 (Natty Narwhal), 64 bits).
The right answer for Mac users with Postgres.app is to build against the libpq
provided with that package. For example, with the 9.4 release (current as of this writing), all you need is:
export CONFIGURE_ARGS="with-pg-include=/Applications/Postgres.app/Contents/Versions/9.4/include"
gem install pg
This will keep your pg
gem in sync with exactly the version of PostgreSQL you have installed. Installing something from Homebrew is a waste in this case.
I had the same issue on Amazon Linux. I could find the header libpq-fe.h
, but somehow it didn't work.
It came from the different versions of the packages that were installed through the different users on the machine. PostgreSQL 9.2 and PostgreSQL 9.3 were installed. So, make sure of your PostgreSQL version before including the libraries.
For me, the magic command line was:
sudo yum install postgresql93 postgresql93-server postgresql93-libs postgresql93-contrib postgresql93-devel
Source: An almost idiot's guide to install PostgreSQL 9.3, PostGIS 2.1 and pgRouting with Yum
A more general answer for any Debian-based distribution (which includes Ubuntu) is the following. First, install the apt-file
package running as root:
apt-get install apt-file
This allows you to search for packages containing a file. Then, update its database using
apt-file update
(this can be run as normal user). Then, look for the missing header using:
apt-file search libpq-fe.h
On my machine, this gives:
libpq-dev: /usr/include/postgresql/libpq-fe.h
postgres-xc-server-dev: /usr/include/postgres-xc/server/gtm/libpq-fe.h
There you go !
I am running Postgres.app on a Mac and I had to
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin
first. Then
bundle install
worked for me.
I had the same problem on Mac OS, but I installed the PostgreSQL gem easily by using the following in a terminal:
ARCHFLAGS="-arch x86_64" gem install pg
(I installed PostgreSQL first with brew install postgresql
.)
I found this answer, and it was the only one that worked for me (Mac OS) - after researching for about two days:
$ 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...
See Stack Overflow question Can't find the PostgreSQL client library (libpq).
I recently upgraded to Mac OS X v10.10 (Yosemite) and was having difficulty building the pg
gem.
The error reported was the typical:
Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... *** extconf.rb failed ***
My solution was to gem uninstall pg
and then bundle update pg
to replace the gem with the latest. I did run brew update; brew upgrade
after the Yosemite install to get the latest versions of packages I had installed previously.
On a Mac, I solved it using this code:
gem install pg -v '0.18.4' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
For MacOS without installing PostgreSQL server:
brew install libpq
gem install pg -- --with-pg-config="/usr/local/Cellar/libpq/9.6.6/bin/pg_config"
On CentOS,I installed libpq-dev package
using below command
yum install postgresql-devel
Executing gem install pg
returned the same error as "No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config
".
Installing the gem as below solved my problem
gem install pg -- --with-pg-config=/usr/pgsql-x.x/bin/pg_config
On Ubuntu, install the "libpq-dev" to get rid of this issue.
sudo apt-get install libpq-dev
On FreeBSD (9.1) the necessary package is /usr/ports/database/postgresql-server* which when installed will also install the required header file that makes the gem install of "pg" fail. This answer here helped me find the solution but the difference in package names required a bit of searching.
Hopefully this helps someone avoid a bit of head scratching when searching for the "-dev" package on a FreeBSD system!
On Debian 7.0, 64-bit (Wheezy), just run:
sudo apt-get install libpq-dev
After you successfully installed libpq-dev, run:
bundle install
Under CentOS 6.5 (Squeeze) I created a file:
$ sudo touch /etc/profile.d/psql.sh
with content:
pathmunge /usr/pgsql-9.3/bin
Note here, you should set your PostgreSQL path with the pg_config file. You can find this with the command:
$ sudo find / -iname pg_config
Save the file:
$ sudo chmod +x /etc/profile.d/ruby.sh
and try to execute your command again.
Note: Anytime you change the Bash configuration - changing the profile.d configuration - you should reload Bash.
The location of libpq-fe.h
depends on where your PostgreSQL install is (which depends on how you installed it). Use locate
(http://en.wikipedia.org/wiki/Locate_%28Unix%29) to find the libpq-fe.h
file on your machine. If it exists, it will be in the include
directory of your PostgreSQL install.
$ locate libpq-fe.h
/Library/PostgreSQL/9.1/include/libpq-fe.h
The bin
directory, which contains pg_config
, will be in the same directory as the include
directory. As the error suggests, use the --with-pg-config option to install the gem:
$ gem install pg --with-pg-config="/Library/PostgreSQL/9.1/bin/pg_config"
Note that you may need to run updatedb
if you have never used locate
or if you haven't updated since installing PostgreSQL.
I finally solved this problem, but not using the previously described methods.
Using brew install postgresql
, I find out that it had already been installed, but not linked.
Find out where PostgreSQL is installed, and delete it,
Then
brew install postgresql
again,brew link postgresql
gem install pg
I just had this on OSX running brew and postgres@9.4
.
My fix was this:
CONFIGURE_ARGS="with-pg-include=/usr/local/opt/postgresql@9.4/include/" bundle install
I had this issue with Postgresql 9.6. I was able to fix it by doing:
brew upgrade postgresql@9.6
brew link postgresql@9.6 --force
gem install pg
For AltLinux
the package postgresqlx.x-devel
(in my case postgresql9.5-devel
) must be installed:
apt-get install postgresql9.5-devel
I solved this installing the 'postgresql-common' package. This package provides the pg_config
binary which is most likely what you were missing.
I was having a similar problem, and this fixed it for me:
gem install do_postgres -- --with-pgsql-server-dir=/Applications/Postgres.app/Contents/MacOS --with-pgsql-server-include=/Applications/Postgres.app/Contents/MacOS/include/server
Source:
'Nice programing' 카테고리의 다른 글
String.slice와 String.substring의 차이점은 무엇입니까? (0) | 2020.09.29 |
---|---|
Objective-C에서 델리게이트를 어떻게 생성합니까? (0) | 2020.09.29 |
TINYTEXT, TEXT, MEDIUMTEXT 및 LONGTEXT 최대 저장 크기 (0) | 2020.09.29 |
C ++ 11에서 T && (이중 앰퍼샌드)는 무엇을 의미합니까? (0) | 2020.09.29 |
난수 생성기는 하나의 난수 만 생성 (0) | 2020.09.29 |