Nie można znaleźć 'libpq-fe.nagłówek h podczas próby instalacji PG gem

Używam Ruby on Rails 3.1 pre version. Lubię używać PostgreSQL, ale problemem jest instalacja pg gem. Daje mi to następujący błąd:

$ 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
Jak rozwiązać ten problem?
Author: Victor Yarema, 2011-05-18

30 answers

Wygląda na to, że w Ubuntu nagłówek jest częścią libpq-dev pakiet (przynajmniej w następujących wersjach Ubuntu: 11.04 (Natty Narwhal), 10.04 (Lucid Lynx), 11.10 (Oneiric Ocelot), 12.04 (Pangolin precyzyjny), 14.04 (wierny Tahr) i 18.04 (Bóbr Bioniczny)):

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

Więc spróbuj zainstalować {[1] } lub jego odpowiednik dla Twojego systemu operacyjnego:

  • dla systemów Ubuntu / Debian: sudo apt-get install libpq-dev
  • On Czerwony Kapelusz Linux (RHEL) systemy: yum install postgresql-devel
  • Dla Mac Homebrew : brew install postgresql
  • For Mac MacPorts PostgreSQL: gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
  • Dla OpenSuse : zypper in postgresql-devel
  • Dla ArchLinux : pacman -S postgresql-libs
 1339
Author: mu is too short,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-02 01:00:48

Na macOS (poprzednio Mac OS X i OS X ), użyj Homebrew aby zainstalować odpowiednie nagłówki:

brew install postgresql

And then running

gem install pg
Powinno zadziałać.

Alternatywnie, zamiast instalować całość postgresql, możesz brew install libpq i wyeksportować poprawne PATH i PKG_CONFIG_PATH, Jak wyjaśniono w sekcji "zastrzeżenia"

 189
Author: iwasrobbed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-24 22:57:15

Próbowałem też zrobić gem install libpq-dev, ale otrzymałem ten błąd:

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

Okazało się jednak, że instalacja za pomocą sudo apt-get (którego staram się unikać używając Ruby on Rails) zadziałała, czyli

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

Wtedy byłem w stanie zrobić

gem install pg

Bez problemów.

 119
Author: Michael Durrant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 17:09:01

Mógłbym to rozwiązać w inny sposób. Nie znalazłem biblioteki w moim systemie. Tak więc zainstalowałem go za pomocą aplikacji z głównej strony PostgreSQL. W moim przypadku (OS X) znalazłem plik pod /Library/PostgreSQL/9.1/include/ po zakończeniu instalacji. Możesz również mieć plik gdzieś indziej w zależności od systemu, jeśli masz już zainstalowany PostgreSQL.

Dzięki temu linkowi na Jak dodać dodatkową ścieżkę do instalacji gem , mogłem wskazać gem do lib tym polecenie:

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

Potem działa, ponieważ teraz wie, gdzie znaleźć brakującą bibliotekę. Po prostu zastąp ścieżkę odpowiednią lokalizacją dla libpq-fe.h

 49
Author: David Pelaez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 17:07:55

Nie można znaleźć libpq-fe.H header

Odniosłem sukces na CentOS 7.0.1406 uruchamiając następujące komendy:

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

Alternatywnie , możesz skonfigurować bundler tak, aby zawsze instalował pg z tymi opcjami (pomocnymi przy uruchamianiu bundlera w środowiskach wdrażania),

  • bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config
 30
Author: lfender6445,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-08 05:47:47

Dla CentOS 6.4,

yum install postgresql-devel
gem install pg
Działa dobrze!
 25
Author: Arivarasan L,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 17:10:01

Tak dla przypomnienia:

Aplikacja Ruby on Rails 4 w OS X z PostgresApp (w tym przypadku potrzebna wersja 0.17.1 - rodzaj starego projektu):

gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
 17
Author: pablomarti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 17:26:38

Na Mac OS X Uruchom tak:

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

***/path/to/pg_config*** jest ścieżką do pg_config

 13
Author: Jiemurat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-08 09:36:16

W moim przypadku był to pakiet postgresql-server-dev-8.4 (jestem na Ubuntu 11.04 (Natty Narwhal), 64 bity).

 12
Author: Johann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 16:59:38

Właściwa odpowiedź dla użytkowników Mac z Postgres.aplikacja ma być zbudowana na podstawie libpq dostarczonego z tym pakietem. Na przykład, w wydaniu 9.4 (aktualnym w chwili pisania tego tekstu), wszystko, czego potrzebujesz, to:

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

Dzięki temu Twój gem pg będzie zsynchronizowany z dokładnie tą wersją PostgreSQL, którą zainstalowałeś. Instalacja czegoś z Homebrew jest marnotrawstwem w tym przypadku.

 10
Author: jelder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 17:20:23

Miałem ten sam problem na Amazon Linux. Mogłem znaleźć nagłówek libpq-fe.h, ale jakoś nie zadziałał.

Pochodzi z różnych wersji pakietów, które zostały zainstalowane przez różnych użytkowników na komputerze. Zainstalowano PostgreSQL 9.2 i PostgreSQL 9.3. Upewnij się więc, że masz wersję PostgreSQL przed dołączeniem bibliotek.

Dla mnie magiczna linia poleceń brzmiała:

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

Źródło: prawie idiotyczny Poradnik Instalacji PostgreSQL 9.3, PostGIS 2.1 i PGR z Mniam

 9
Author: Fab V.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 17:24:33

Bardziej ogólna odpowiedź dla każdej dystrybucji opartej na Debianie (która obejmuje Ubuntu) jest następująca. Najpierw zainstaluj pakiet apt-file działający jako root:

apt-get install apt-file

Pozwala to na wyszukiwanie pakietów zawierających plik. Następnie zaktualizuj swoją bazę danych za pomocą

apt-file update

(może być uruchamiany jako zwykły użytkownik). Następnie poszukaj brakującego nagłówka używając:

apt-file search libpq-fe.h

Na mojej maszynie daje to:

libpq-dev: /usr/include/postgresql/libpq-fe.h
postgres-xc-server-dev: /usr/include/postgres-xc/server/gtm/libpq-fe.h
Proszę bardzo !
 8
Author: Vincent Fourmond,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-29 21:16:01

Dla MacOS bez instalacji serwera PostgreSQL:

brew install libpq
gem install pg -- --with-pg-config="/usr/local/Cellar/libpq/9.6.6/bin/pg_config"
 8
Author: Michael A.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-09 10:13:12

W Ubuntu zainstaluj "libpq-dev", aby pozbyć się tego problemu.

sudo apt-get install libpq-dev
 6
Author: Raju,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-12 13:34:52

Znalazłem taką odpowiedź i tylko ta mi się sprawdziła (Mac OS) - po około dwóch dniach badań:

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

Zobacz pytanie o przepełnienie stosu nie można znaleźć biblioteki klienta PostgreSQL (libpq).

 5
Author: Cynthia Sanchez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:34:54

Na Macu rozwiązałem to używając tego kodu:

gem install pg -v '0.18.4' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
 5
Author: Mario,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 17:26:59

Prowadzę Postgres.aplikacja na Maca i musiałem

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

Pierwszy. Then

bundle install
Zadziałało dla mnie.
 4
Author: joh-mue,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-17 14:16:11

Miałem ten sam problem na Mac OS, ale zainstalowałem gem PostgreSQL łatwo, używając następującego w Terminalu:

ARCHFLAGS="-arch x86_64" gem install pg

(najpierw zainstalowałem PostgreSQL z brew install postgresql.)

 4
Author: rassom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 17:15:35

Niedawno uaktualniłem do Mac OS X v10.10 (Yosemite) i miałem problemy z zbudowaniem pg gem.

Zgłoszony błąd był typowy:

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

Moim rozwiązaniem było gem uninstall pg, a następnie bundle update pg zastąpienie klejnotu najnowszym. Uruchomiłem brew update; brew upgrade Po instalacji Yosemite, aby pobrać najnowsze wersje pakietów, które zainstalowałem wcześniej.

 4
Author: Martin Streicher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 17:18:59

Moje rozwiązanie dla Fedory 30:

sudo dnf install /usr/include/libpq-fe.h
 4
Author: Aarón Castro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-06-19 21:26:14

Na CentOS zainstalowałem libpq-dev package używając poniższego polecenia

yum install postgresql-devel

Wykonanie gem install pg zwróciło ten sam błąd co "No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config".

Instalacja klejnotu jak poniżej rozwiązała mój problem

gem install pg -- --with-pg-config=/usr/pgsql-x.x/bin/pg_config
 3
Author: user2086641,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-21 09:26:14

Na FreeBSD (9.1) niezbędnym pakietem jest / usr / ports/database / postgresql-server*, który po zainstalowaniu zainstaluje również wymagany plik nagłówkowy, co powoduje, że instalacja gem "pg" nie powiedzie się. Ta odpowiedź pomogła mi znaleźć rozwiązanie, ale różnica w nazwach pakietów wymagała trochę przeszukiwania.

Miejmy nadzieję, że pomoże to uniknąć zadrapania głowy podczas wyszukiwania pakietu "- dev " w systemie FreeBSD!

 2
Author: Claus Due,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-06 00:27:26

On Debian 7.0, 64-bit (Wheezy), po prostu uruchom:

sudo apt-get install libpq-dev

Po pomyślnym zainstalowaniu libpq-dev Uruchom:

bundle install
 2
Author: Eric Wu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 17:12:32

Pod CentOS 6.5 (Squeeze) utworzyłem plik:

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

Z treścią:

pathmunge /usr/pgsql-9.3/bin

Uwaga tutaj, powinieneś ustawić ścieżkę PostgreSQL za pomocą pliku pg_config. Można to znaleźć za pomocą polecenia:

$ sudo find / -iname pg_config

Zapisz plik:

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

I spróbuj ponownie wykonać polecenie.

Uwaga: za każdym razem, gdy zmienisz konfigurację Bash - zmiana profilu.konfiguracja d - powinieneś przeładować Basha.

 2
Author: lucianosousa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 17:14:47

Lokalizacja libpq-fe.h zależy od tego, gdzie znajduje się Twoja instalacja PostgreSQL (co zależy od tego, jak ją zainstalowałeś). Użycie locate (http://en.wikipedia.org/wiki/Locate_%28Unix%29 ), aby znaleźć libpq-fe.h plik na komputerze. Jeśli istnieje, będzie w katalogu include Twojej instalacji PostgreSQL.

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

Katalog bin, który zawiera pg_config, będzie w tym samym katalogu co katalog include. Jak sugeruje błąd, użyj opcji --with-pg-config, aby zainstalować klejnot:

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

Zauważ, że może być konieczne uruchomienie updatedb, Jeśli nigdy nie używałeś locate lub nie aktualizowałeś się od czasu instalacji PostgreSQL.

 2
Author: akbrown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 17:21:13

W końcu rozwiązałem ten problem, ale nie używając wcześniej opisanych metod.

Używając brew install postgresql, dowiaduję się, że był już zainstalowany, ale nie połączony.

  1. Dowiedz się, gdzie jest zainstalowany PostgreSQL i usuń go,

  2. Następnie brew install postgresql ponownie,

  3. brew link postgresql

  4. gem install pg

 2
Author: Chile Yang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-21 17:28:25

[[2]}Właśnie miałem to na OSX running brew i [email protected].

Moja poprawka była taka:

CONFIGURE_ARGS="with-pg-include=/usr/local/opt/[email protected]/include/" bundle install
 2
Author: Nick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-04 21:17:09

Miałem taki problem z Postgresql 9.6. Udało mi się to naprawić robiąc:

brew upgrade [email protected]
brew link [email protected] --force
gem install pg
 2
Author: mwalsher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-05 20:04:06

Napotkałem ten sam błąd z postgres zainstalowanym przez asdf. Rozwiązania pg-config nie działały dla mnie. Zamiast tego musiałem zlokalizować folder include postgres, który zawiera plik i uruchomić polecenie z flagą --with-pg-include

gem install pg -- --with-pg-include=/<path>/.asdf/installs/postgres/<version>/include
 2
Author: Matthias Michael Engh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-02-05 19:57:10

Dla AltLinux pakiet postgresqlx.x-devel (w moim przypadku postgresql9.5-devel) musi być zainstalowany:

apt-get install postgresql9.5-devel
 1
Author: Малъ Скрылевъ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-02 07:23:49