Korzystam z wcześniejszej wersji Ruby on Rails 3.1. Lubię używać PostgreSQL, ale problemem jest instalacja pg
klejnotu. Daje mi 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?
ruby-on-rails
ruby-on-rails-3
postgresql
rails-postgresql
pg
demonchand
źródło
źródło
Odpowiedzi:
Wygląda na to, że w Ubuntu nagłówek jest częścią
libpq-dev
pakietu (przynajmniej w następujących wersjach Ubuntu: 11.04 (Natty Narwhal), 10.04 (Lucid Lynx), 11.10 (Oneiric Ocelot), 12.04 (Precise Pangolin), 14.04 (Trusty Tahr) i 18.04 (Bionic Beaver)):Spróbuj zainstalować
libpq-dev
lub jego odpowiednik dla twojego systemu operacyjnego:sudo apt-get install libpq-dev
yum install postgresql-devel
brew install postgresql
gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
zypper in postgresql-devel
pacman -S postgresql-libs
źródło
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$
apt-get install postgres-server-dev-{pg.version}
Twoja odpowiedź nie działa już w wersji postgresql 9.4 na Ubuntu 14.04. Zobacz: stackoverflow.com/a/28837453/75194W systemie macOS (wcześniej Mac OS X i OS X ) użyj Homebrew, aby zainstalować odpowiednie nagłówki:
a następnie bieganie
powinno działać.
Alternatywnie, zamiast instalować całość
postgresql
, możnabrew install libpq
i eksportować poprawnaPATH
iPKG_CONFIG_PATH
jak wyjaśniono w sekcji „Ostrzeżenia”źródło
brew install postgressql
biegamARCHFLAGS="-arch x86_64" gem install pg
i działa dobrze.brew install libpqxx
Mac OSXlibpqxx
instaluje siępostgresql
jako zależność, więc jest zasadniczo taki sam jakbrew install postgresql
postgresql
, możeszbrew install libpq
i wyeksportować prawidłowePATH
iPKG_CONFIG_PATH
zgodnie z objaśnieniem w części „Ostrzeżenia”.Próbowałem też
gem install libpq-dev
, ale otrzymałem ten błąd:Okazało się jednak, że instalacja z
sudo apt-get
(której staram się unikać przy użyciu Ruby on Rails) działała, tjwtedy byłem w stanie to zrobić
bez problemów.
źródło
libpq-dev
pakietem Ubuntu / Debian / ...Mógłbym rozwiązać to w inny sposób. Nie znalazłem biblioteki w moim systemie. Dlatego zainstalowałem go za pomocą aplikacji z głównej strony PostgreSQL. W moim przypadku (OS X) znalazłem plik
/Library/PostgreSQL/9.1/include/
po zakończeniu instalacji. Możesz również mieć plik w innym miejscu, w zależności od systemu, jeśli masz już zainstalowany PostgreSQL.Dzięki temu linkowi, jak dodać dodatkową ścieżkę do instalacji klejnotów , mogę skierować klejnot do biblioteki lib za pomocą tego polecenia:
Potem działa, ponieważ teraz wie, gdzie znaleźć brakującą bibliotekę. Po prostu zamień ścieżkę na odpowiednią lokalizację dla swojego libpq-fe.h
źródło
export CONFIGURE_ARGS="with-pg-include=/usr/local/Cellar/postgresql/9.3.1/include/"
pg_*
skrypty w $ PATH tak:ln -s /usr/pgsql-9.3/bin/p* /usr/local/bin
. Zainstalowałem postgres 9.3 tak: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
gem install pg -- with-pg-include=/Library/PostgreSQL/9.1/include/
export CONFIGURE_ARGS="with-pg-config=/path/to/postgres/bin/pg_config"
. Plikpg_config
wykonywalny zostanie wywołany, aby uzyskać wszystkie wymagane opcje kompilatora i konsolidatora - możesz go uruchomić samodzielnie, aby je zobaczyć.miałem sukces na CentOS 7.0.1406, uruchamiając następujące polecenia:
Alternatywnie można skonfigurować program pakujący, aby zawsze instalował
pg
przy użyciu tych opcji (pomocny przy uruchamianiu programu pakującego w środowiskach wdrażania),bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config
źródło
W przypadku CentOS 6.4
działało dobrze!
źródło
sudo port install postgresql-devel
.Dla przypomnienia:
Aplikacja Ruby on Rails 4 w systemie OS X z PostgresApp (w tym przypadku wymagana wersja 0.17.1 - rodzaj starego projektu):
źródło
/Applications/Postgres.app/Contents/Versions/10/bin/pg_config
W systemie Mac OS X uruchom tak:
***/path/to/pg_config***
jest ścieżką do pg_configźródło
sudo find / -name "pg_config"
, a następniegem install pg -- --with-pg-config=/Library/PostgreSQL/9.4/bin/pg_config
użyć ścieżki, którą właśnie znalazłem.W moim przypadku była to paczka
postgresql-server-dev-8.4
(korzystam z Ubuntu 11.04 (Natty Narwhal), 64 bity).źródło
Właściwą odpowiedzią dla użytkowników komputerów Mac z Postgres.app jest kompilacja na podstawie
libpq
dostarczonego z tym pakietem. Na przykład w wersji 9.4 (aktualna w tym tekście) wszystko czego potrzebujesz to:Dzięki temu Twój
pg
klejnot będzie zsynchronizowany z dokładnie zainstalowaną wersją PostgreSQL. Instalacja czegoś z Homebrew jest marnotrawstwem w tym przypadku.źródło
Miałem ten sam problem na Amazon Linux. Mogłem znaleźć nagłówek
libpq-fe.h
, ale jakoś nie działało.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. Przed włączeniem bibliotek upewnij się, że masz swoją wersję PostgreSQL.
Dla mnie magiczna linia poleceń brzmiała:
Źródło: Niemal idiota, jak zainstalować PostgreSQL 9.3, PostGIS 2.1 i pgRouting z Yum
źródło
Bardziej ogólna odpowiedź dla każdej dystrybucji opartej na Debianie (która obejmuje Ubuntu) jest następująca. Najpierw zainstaluj
apt-file
pakiet działający jako root:Umożliwia to wyszukiwanie pakietów zawierających plik. Następnie zaktualizuj bazę danych za pomocą
(można to uruchomić jako zwykły użytkownik). Następnie poszukaj brakującego nagłówka, używając:
Na moim komputerze daje to:
Proszę bardzo !
źródło
W systemie MacOS bez instalowania serwera PostgreSQL:
źródło
Na komputerze Mac rozwiązałem go za pomocą tego kodu:
źródło
Korzystam z Postgres.app na komputerze Mac i musiałem
pierwszy. Następnie
pracował dla mnie.
źródło
Miałem ten sam problem w systemie Mac OS, ale łatwo zainstalowałem klejnot PostgreSQL, korzystając z następującego terminalu:
(Najpierw zainstalowałem PostgreSQL
brew install postgresql
.)źródło
Znalazłem tę odpowiedź i była to jedyna, która zadziałała dla mnie (Mac OS) - po około dwóch dniach badań:
Zobacz pytanie Przepełnienie stosu Nie można znaleźć biblioteki klienta PostgreSQL (libpq) .
źródło
Niedawno zaktualizowałem system do Mac OS X 10.10 (Yosemite) i miałem trudności z budowaniem
pg
klejnotu.Zgłoszony błąd był typowy:
Moje rozwiązanie było
gem uninstall pg
i wtedybundle update pg
wymienić klejnot z najnowszym. Uruchomiłembrew update; brew upgrade
po instalacji Yosemite, aby uzyskać najnowsze wersje pakietów, które wcześniej zainstalowałem.źródło
Na Ubuntu zainstaluj „libpq-dev”, aby pozbyć się tego problemu.
źródło
sudo apt-get install postgresql
wcześniejlibpq-dev
Na CentOS zainstalowałem
libpq-dev package
za pomocą polecenia poniżejWykonanie
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
”.Zainstalowanie klejnotu jak poniżej rozwiązało mój problem
źródło
W FreeBSD (9.1) niezbędnym pakietem jest / usr / porty / database / postgresql-server *, który po zainstalowaniu zainstaluje również wymagany plik nagłówka, który powoduje, że instalacja gem „pg” kończy się niepowodzeniem. Ta odpowiedź tutaj pomogła mi znaleźć rozwiązanie, ale różnica w nazwach pakietów wymagała trochę wyszukiwania.
Mam nadzieję, że pomoże to komukolwiek uniknąć zarysowania głowy podczas wyszukiwania pakietu „-dev” w systemie FreeBSD!
źródło
W systemie Debian 7.0, 64-bitowym (Wheezy), po prostu uruchom:
Po pomyślnym zainstalowaniu libpq-dev uruchom:
źródło
Pod CentOS 6.5 (Squeeze) utworzyłem plik:
z treścią:
Uwaga: tutaj należy ustawić ścieżkę PostgreSQL za pomocą pliku pg_config. Możesz to znaleźć za pomocą polecenia:
Zapisz plik:
i spróbuj ponownie wykonać polecenie.
Uwaga: Za każdym razem, gdy zmienisz konfigurację Bash - zmieniając konfigurację profilu. D - powinieneś ponownie załadować Bash.
źródło
pg_*
skrypty na ścieżce tak:ln -s /usr/pgsql-9.3/bin/p* /usr/local/bin
. Po tym nie potrzebowałem żadnych dodatkowych skryptów ani zmiennych środowiskowych.Lokalizacja
libpq-fe.h
zależy od tego, gdzie znajduje się Twoja instalacja PostgreSQL (która zależy od tego, jak ją zainstalowałeś). Użyjlocate
( http://en.wikipedia.org/wiki/Locate_%28Unix%29 ), aby znaleźćlibpq-fe.h
plik na swoim komputerze. Jeśli istnieje, będzie winclude
katalogu instalacji PostgreSQL.bin
Katalog, który zawierapg_config
, będzie w tym samym katalogu coinclude
katalogu. Jak sugeruje błąd, użyj opcji --with-pg-config, aby zainstalować klejnot:Pamiętaj, że może być konieczne uruchomienie,
updatedb
jeśli nigdy nie korzystałeślocate
lub nie zaktualizowałeś się od czasu instalacji PostgreSQL.źródło
--
wcześniej pojawia--with-pg-config=...
się błąd: BŁĄD: Podczas wykonywania gem ... (OptionParser :: InvalidOption) niepoprawna opcja: --with-pg-config = / usr / bin / pg_config)W końcu rozwiązałem ten problem, ale nie stosując wcześniej opisanych metod.
Używając
brew install postgresql
, dowiaduję się, że został już zainstalowany, ale nie jest powiązany.Dowiedz się, gdzie jest zainstalowany PostgreSQL i usuń go,
Z
brew install postgresql
drugiej stronybrew link postgresql
gem install pg
źródło
Właśnie miałem to na OSX działającym napoju i
[email protected]
.Moja poprawka była następująca:
źródło
Miałem ten problem z Postgresql 9.6. Byłem w stanie to naprawić, wykonując:
źródło
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 zawierający postgres zawierający plik i uruchomić polecenie z
--with-pg-include
flagąźródło
Ponieważ
AltLinux
pakietpostgresqlx.x-devel
(w moim przypadkupostgresql9.5-devel
) musi być zainstalowany:źródło
Rozwiązałem ten problem, instalując pakiet „postgresql-common”. Ten pakiet zawiera
pg_config
plik binarny, który najprawdopodobniej został pominięty.źródło