Pg gem'i yüklemeye çalışırken 'libpq-fe.h üstbilgisi bulunamıyor


790

Ruby on Rails 3.1 ön sürümünü kullanıyorum. PostgreSQL kullanmayı seviyorum, ama sorun pggem yüklemektir . Bana şu hatayı veriyor:

$ 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

Bu sorunu nasıl çözerim?


pg'nin kurulu olduğunu kanıtlayabilir misin?
thenengah

Yanıtlar:


1247

Ubuntu başlık parçası olduğunu gibi görünüyor libpq-devpaketin : (Aşağıdaki Ubuntu sürümlerinde en az 11,04 (Natty Denizgergedanı), 10.04 (Lucid Lynx), 11.10 (Oneiric Ocelot), 12.04 (Hassas Pangolin), 14.04 (Güvenilir Tahr) ve 18.04 (Biyonik Kunduz)):

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

Bu yüzden libpq-devişletim sisteminiz için yüklemeyi veya eşdeğerini deneyin :

  • Ubuntu / Debian sistemleri için: sudo apt-get install libpq-dev
  • On Red Hat Linux (RHEL) sistemleri:yum install postgresql-devel
  • Mac Homebrew için :brew install postgresql
  • Mac MacPorts PostgreSQL için:gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
  • İçin OpenSuse :zypper in postgresql-devel
  • For Arch Linux :pacman -S postgresql-libs

1
Ubuntu'da benim için çalışmadı 11.04durrantm@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$
Michael Durrant

1
Sonra bir javascript kütüphanesi yüklü olması gerekiyorsa ... gem install 'execjs' ve gem install 'therubyracer'
Nick Woodhams

@TravisR: Güncelleme için teşekkürler, herkesin güncel kalmasını kolaylaştırmak için bunu bir topluluk wiki'sine dönüştürdüm.
mu çok kısa

Ubuntu 12.10 kullanıyorum, libpq-dev kurduktan sonra pg
gem'i yükleyemiyorum

2
İçerecek şekilde cevap revize edin apt-get install postgres-server-dev-{pg.version} : Cevabınız artık Ubuntu 14.04 üzerinde postgresql 9.4 ile çalışır bakın stackoverflow.com/a/28837453/75194
Ryan Rauh

169

Açık MacOS (daha önce Mac OS X ve OS X ), kullanmak Homebrew uygun başlıklarını yüklemek için:

brew install postgresql

ve sonra koşuyor

gem install pg

çalışmalı.

Alternatif olarak, yerine bütün yükleme postgresqlyapabilirsiniz brew install libpqve doğru ihracat PATHve PKG_CONFIG_PATHgibi 'Uyarılar' bölümünde açıklanmıştır


5
Postgres.app da kullanıyorsanız bu herhangi bir soruna neden oluyor mu?
iconoclast

3
Koştuktan sonra brew install postgressqlbenim için koşuyorum ARCHFLAGS="-arch x86_64" gem install pgve iyi çalışıyor.
overallduka

5
Alternatif olarak, sadece brew install libpqxxmac OSX üzerinde çalışıyor
Ricardo Saporta

4
@RicardoSaporta bağımlılık olarak libpqxxyüklenir postgresql, bu yüzden esasen aynıdırbrew install postgresql
Troggy

3
Bunun yerine bütün yükleme postgresqlyapabilirsiniz brew install libpqve doğru ihracat PATHve PKG_CONFIG_PATHgibi 'Uyarılar' bölümünde açıklanmıştır.
goetzc

118

Ben de yapmayı denedim gem install libpq-devama bu hatayı aldım:

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

Ancak sudo apt-get(ki Ruby on Rails ile kullanmaktan kaçınmaya çalışıyorum) ile yükleme yaptım, yani

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

sonra yapabildim

gem install pg

sorunsuz.


3
Doğru, Ruby pg gem Ubuntu / Debian / ... libpq-devpaketi ile birlikte gelen normal PostgreSQL C kütüphanelerini sarar .
mu çok kısa

46

Bunu başka bir şekilde çözebilirim. Kütüphaneyi sistemimde bulamadım. Böylece PostgreSQL ana web sitesinden bir uygulama kullanarak yükledim. Benim durumumda (OS X) /Library/PostgreSQL/9.1/include/kurulum bittiğinde dosyayı altında buldum . Zaten PostgreSQL yüklüyse, sisteminize bağlı olarak dosyayı başka bir yere de alabilirsiniz.

Gem kurulumu için ek bir yol eklemek için bu bağlantı sayesinde , gem'i bu komutla lib'e işaret edebilirim:

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

Bundan sonra, çalışıyor, çünkü şimdi eksik kütüphaneyi nerede bulacağını biliyor. Sadece yolu libpq-fe.h dosyanız için doğru konumla değiştirin.


2
David'in çözümü benim için çalıştı. Libpq-fe.h dosyasını '/Applications/Postgres.app/Contents/Versions/9.3/include' olarak izledim ve ihracat komutunu adı geçen yolla, ardından 'gem install pg' ve gem başarıyla yüklendi.
Ryan Spears

Bunun için teşekkürler, benim için çalıştı, kullanarak:export CONFIGURE_ARGS="with-pg-include=/usr/local/Cellar/postgresql/9.3.1/include/"
brookr

1
CentOS 6 PostgreSQL'i 9.3 Kullanarak ben sembolik bağlantılarını bu çözüldü pg_*şöyle $ PATH içine komut: ln -s /usr/pgsql-9.3/bin/p* /usr/local/bin. Postgres 9.3'ü şu şekilde 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
yükledim

1
Ayrıca şu şekilde yazabilirsinizgem install pg -- with-pg-include=/Library/PostgreSQL/9.1/include/
lfender6445

Daha da iyisi, kullanın export CONFIGURE_ARGS="with-pg-config=/path/to/postgres/bin/pg_config". pg_configYürütülebilir gerekli tüm derleyici ve bağlayıcı seçenekleri almak için çağrılır - onları görmek için kendiniz çalıştırabilirsiniz.
skozin

29

Libpq-fe.h üstbilgisi bulunamıyor

Aşağıdaki komutları çalıştıran CentOS 7.0.1406 üzerinde başarılı oldu :

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

Alternatif olarak , paketleyiciyi her zaman pgbu seçeneklerle yüklenecek şekilde yapılandırabilirsiniz (paketleyiciyi dağıtım ortamlarında çalıştırmak için yararlıdır),

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

1
çok yararlı, teşekkürler. Sadece paket yapılandırmasıyla ilgili bir not eklemek için ... oturum açmış durumdayken sonraki paket komutunu çalıştıracak kullanıcı olarak bu komutu çalıştırmanız gerekir. Bundler yapılandırması ~ / .bundle / config içinde saklanır, bu nedenle root olarak oturum açmışken bundle config'i çalıştırırsanız bulunamaz, ancak bundler 'deploy' kullanıcısı tarafından çalıştırılır (örn. Capistrano ile).
Les Nightingill

3
bundle config build.pg --with-pg-config = / usr / pgsql-9.4 / bin / pg_config Centos 7'de benim için
çözdüm

2
bundle config build.pg --with-pg-config = / usr / pgsql-10 / bin / pg_config , postgresql10 kullanıyorsanız
Mahesh Neelakanta


17

Sadece kayıt için:

PostgresApp ile OS X'te Ruby on Rails 4 uygulaması (bu durumda 0.17.1 sürümü gerekir - eski bir proje türü):

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

1
Harika Postgres.app kullanıyorsanız harika çalışıyor . Postgres 10 için yolu kullandım/Applications/Postgres.app/Contents/Versions/10/bin/pg_config
Master of Ducks

13

Mac OS X'te şu şekilde çalıştırın:

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

***/path/to/pg_config*** pg_config yoludur


1
Upvoted. Postgresql'i EnterpriseDB'nin grapihcal yükleyicisi aracılığıyla kurdum . Sonra pg-config yolunu bulmak sudo find / -name "pg_config", sonra gem install pg -- --with-pg-config=/Library/PostgreSQL/9.4/bin/pg_configaz önce buldum yolu kullanarak yapmak gerekir.
Yi Zeng


10

Postgres.app kullanan Mac kullanıcıları için doğru cevap libpq, bu paketle birlikte sağlananlara karşı derlemektir . Örneğin, 9.4 sürümünde (bu yazıdan itibaren geçerli) ihtiyacınız olan tek şey:

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

Bu, geminizi pgtam olarak yüklediğiniz PostgreSQL sürümüyle senkronize tutar . Homebrew'dan bir şey kurmak bu durumda bir israftır.


9

Aynı sorunu Amazon Linux'ta da yaşadım. Başlığı bulabilirdim libpq-fe.h, ama bir şekilde işe yaramadı.

Makinedeki farklı kullanıcılar tarafından yüklenen paketlerin farklı sürümlerinden geldi. PostgreSQL 9.2 ve PostgreSQL 9.3 kuruldu. Bu nedenle, kütüphaneleri eklemeden önce PostgreSQL sürümünüzden emin olun.

Benim için sihirli komut satırı:

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

Kaynak: PostgreSQL 9.3, PostGIS 2.1 ve pgRouting'i Yum ile kurmak için neredeyse aptalın kılavuzu


Kitaplıkları kurduktan sonra ... bir temizleme işlemi yapın: "distclean", "clean", "./configure" ve derlemeye başlayın!
mzalazar

8

Herhangi bir Debian tabanlı dağıtım (Ubuntu içeren) için daha genel bir cevap şudur. İlk olarak, apt-fileroot olarak çalışan paketi kurun :

apt-get install apt-file

Bu, dosya içeren paketleri aramanızı sağlar. Ardından, veritabanını kullanarak

apt-file update

(bu normal kullanıcı olarak çalıştırılabilir). Ardından, eksik başlığı aşağıdakileri kullanarak arayın:

apt-file search libpq-fe.h

Makinemde bu:

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

İşte böyle!


"libpq-dev: /usr/include/postgresql/libpq-fe.h" mevcutken "postgres-xc-server-dev: /usr/include/postgres-xc/server/gtm/libpq-fe.h" mevcut değil ? Neyi kaçırıyorum ?
furiabhavesh

Dosya içeriği değişmiş olabilir. Görünüşe göre postgres -... paketinde libpq-fe.h'nin özel bir kopyası vardı. Her durumda, bir şeyler derlemek istiyorsanız, aradığınız libXXX-dev'dir.
Vincent Fourmond

7

PostgreSQL sunucusu kurmadan MacOS için :

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

5

Mac'te, bu kodu kullanarak çözdüm:

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

4

Mac'te Postgres.app çalıştırıyorum ve

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

ilk. Sonra

bundle install

benim için çalıştı.


4

Mac OS'de aynı sorunu yaşadım, ancak PostgreSQL gemini aşağıdakileri kullanarak bir terminalde kolayca kurdum:

ARCHFLAGS="-arch x86_64" gem install pg

(Önce PostgreSQL'i kurdum brew install postgresql.)


4

Bu cevabı buldum ve benim için çalışan tek cevaptı (Mac OS) - yaklaşık iki gün boyunca araştırma yaptıktan sonra:

$ 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...

Bkz. Yığın Taşması sorusu PostgreSQL istemci kitaplığı (libpq) bulunamıyor .


4

Son zamanlarda Mac OS X v10.10'a (Yosemite) yükseltme yaptım vepg gem .

Bildirilen hata tipikti:

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

Benim çözüm oldu gem uninstall pgve daha sonra bundle update pggem en son yerine. Daha önce brew update; brew upgradekurduğum paketlerin en son sürümlerini almak için Yosemite kurulumundan sonra koştum.


4

Ubuntu'da, bu sorundan kurtulmak için "libpq-dev" i yükleyin.

sudo apt-get install libpq-dev

Yeterli değilse, daha sudo apt-get install postgresqlönce ekleyinlibpq-dev
Alex Poca

3

CentOS'ta libpq-dev packageaşağıdaki komutu kullanarak yükledim

yum install postgresql-devel

Yürütme gem install pg, "No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config " ile .

Gem aşağıdaki gibi yüklemek benim sorunum çözüldü

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

2

FreeBSD'de (9.1) gerekli paket / usr / port / database / postgresql-server * 'dır. Buradaki cevap, çözümü bulmama yardımcı oldu, ancak paket adlarındaki fark biraz arama gerektirdi.

Umarım bu bir FreeBSD sistemi üzerinde "-dev" paketi ararken birinin başını çizmekten kaçınmasına yardımcı olur!


2

On Debian 7.0, 64 bit (Wheezy), sadece çalıştırın:

sudo apt-get install libpq-dev

Libpq-dev'i başarıyla yükledikten sonra, şunu çalıştırın:

bundle install

2

CentOS 6.5 (Squeeze) altında bir dosya oluşturdum:

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

içeriği ile:

pathmunge /usr/pgsql-9.3/bin

Burada, PostgreSQL yolunuzu pg_config dosyasıyla ayarlamanız gerektiğini unutmayın. Bunu şu komutla bulabilirsiniz:

$ sudo find / -iname pg_config

Dosya 'yı kaydet:

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

ve komutunuzu tekrar çalıştırmayı deneyin.

Not: Bash yapılandırmasını her değiştirdiğinizde - profile.d yapılandırmasını değiştirdiğinizde - Bash'i yeniden yüklemelisiniz.


Postgres'i nasıl kurdunuz? Ben sembolik olarak pg_*şöyle yoluna komut: ln -s /usr/pgsql-9.3/bin/p* /usr/local/bin. Bundan sonra ek komut dosyalarına veya ortam değişkenlerine ihtiyacım yoktu.
JoePasq

2

Konumu, libpq-fe.hPostgreSQL kurulumunuzun nerede olduğuna bağlıdır (bu onu nasıl kurduğunuza bağlıdır). Makinenizdeki dosyayı bulmak için locate( http://en.wikipedia.org/wiki/Locate_%28Unix%29 ) kullanın libpq-fe.h. Varsa include, PostgreSQL kurulumunuzun dizininde olacaktır .

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

binİçeren dizin, pg_configaynı dizinde olacak includedizinde. Hatanın önerdiği gibi, gem'i yüklemek için --with-pg-config seçeneğini kullanın:

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

Çalıştırmanız gerekebileceğini unutmayın updatedb önce hiç kullanmadıysanız locateveya PostgreSQL'i kurduktan sonra güncelleme yapmadıysanız .


Bir olmadan --önce --with-pg-config=...: bir hata alıyorum ERROR: mücevher yürütülürken ... (OptionParser :: InvalidOption) geçersiz seçenek: --with-pg-config = / usr / bin / pg_config)
Alexis Wilke

2

Sonunda bu sorunu çözdüm, ancak daha önce açıklanan yöntemleri kullanmadım.

Kullanarak brew install postgresql, zaten kurulmuş olduğunu, ancak bağlı olmadığını öğrendim.

  1. PostgreSQL'in nereye kurulduğunu öğrenin ve silin,

  2. Sonra brew install postgresqltekrar,

  3. brew link postgresql

  4. gem install pg


"demlemek bağlantı --force postgresql" benim için çalıştı ama ben 'ihracat PATH = "/ usr/local/opt/postgresql@9.4/bin: $ PATH" çalıştırmak zorunda önce "~ / .bash_profile
Jagdish Narayandasani

2

Ben sadece OSX çalışan demlemek vardı ve postgres@9.4 .

Benim düzeltmem şuydu:

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

2

Postgresql 9.6 ile bu sorunu yaşadım. Bunu yaparak düzeltmeyi başardım:

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

2

Asdf üzerinden yüklenen postgres ile aynı hatayla karşılaştım. Pg-config çözümleri benim için çalışmadı. Bunun yerine ben postgres dahil dosyayı içeren klasörü bulmak ve --with-pg-includebayrağı ile komutu çalıştırmak zorunda kaldı

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

1

İçin AltLinuxpaketin postgresqlx.x-devel(benim durumumda postgresql9.5-devel) kurulması gerekir:

apt-get install postgresql9.5-devel

Ayrıca yum - yum install postgresqlxx-devel ile belirli sürümleri de yükleyebilirsiniz, örneğin yum install postgresql94-devel
dworrad 18:16

1

Bu 'postgresql-common' paketini yükleyerek çözdüm. Bu paket pg_config, büyük olasılıkla eksik olan ikiliyi sağlar .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.