Wystąpił błąd podczas instalowania pg (0.17.1) i Bundler nie może kontynuować

87

Właśnie zainstalowałem Rails 4.0.2i podczas tworzenia nowej aplikacji na etapie pakietu otrzymuję:

Installing pg (0.17.1) 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/Users/Dee/.rvm/rubies/ruby-2.0.0-p247/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.

Jak to naprawić?

Deekor
źródło
1
Możesz chcieć dodać tag osx. Rozwiązanie wydaje się, że może być związane konkretnie z twoim systemem operacyjnym.
Vince
Możesz chcieć odwiedzić. stackoverflow.com/questions/3116015/… . Mam nadzieję, że jedno z tych rozwiązań pomoże
Yana Agun Siswanto

Odpowiedzi:

144

Jestem na komputerze Mac z systemem Mavericks. Moim rozwiązaniem była instalacja Postgresa .

A następnie w instalacji terminala za pomocą homebrew z konfiguracją:

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config

Uwaga: ta odpowiedź została zmieniona, aby używać latestłącza symbolicznego, które jest obecnie zawarte w wysyłkowych wersjach aplikacji Postgres.

Sugerowane poprzednie wersje:

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
Bob O'Brien
źródło
Tak, moja też była w innym miejscu. Dziękuję za odpowiedź.
Deekor,
Prawidłowo Bob, wersja postgresapp, w której to działało, to wersja 9.2.2.0, więc musieli zmienić tę lokalizację w wydaniu 9.3.
Robertibiris
1
A teraz, od 22.01.15 patrzymy na wersję 9.4, dobrze jest widzieć, że ją aktualizują - "gem install pg - --with-pg-config = / Applications / Postgres. app / Contents / Versions / 9.4 / bin / pg_config "
corprew
3
Spieszyłem się i przegapiłem część tej odpowiedzi, która mówi „zainstaluj przy użyciu domowego naparu”. Ta odpowiedź zadziałała dla mnie po tym, jak to zrobiłembrew update; brew install postgres
Dennis
6
W swoim rozwiązaniu dodaj wersję, drugą zainstaluje najnowszy PG gem:gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
user1322092
182

Jakiś błąd został tutaj usunięty. Instalacja PG gem na OS X - niepowodzenie w zbudowaniu natywnego rozszerzenia

Aby zainstalować zależności w Ubuntu, spróbuj tego:

sudo apt-get install libpq-dev

i to

gem install pg
Talgat Medetbekov
źródło
5
Jestem na komputerze Mac, co mam zrobić?
Deekor
1
Postępując zgodnie z samouczkiem na railstutorial.org. Oto, co musisz zrobić dla Mint. Dzięki.
Christopher Schneider
railstutorial.org - płatny poradnik; jakieś inne pomysły?
Terra Ashley
21

root aplikacji:

  1. napar aktualizacja
  2. napar zainstaluj postgres
  3. gem install pg - --with-pg-config = / usr / local / Cellar / postgresql / 9.3.4 / bin / pg_config
  4. instalacja pakietu
  5. ln -sfv /usr/local/opt/postgresql/*.plist ~ / Library / LaunchAgents
  6. launchctl load ~ / Library / LaunchAgents / homebrew.mxcl.postgresql.plist
  7. createuser -s -r postgres
  8. rake db: create: all
  9. rake db: migracja
  10. szyny s

UWAGA: w razie potrzeby zmień numer wersji w kroku 3.

knice
źródło
10

Wcześniej działająca odpowiedź ze starszą wersją

Zainstalowałem pod Mac OSX Mavericks, mając zainstalowaną aplikację postgres (wersja 9.2.2.0) z www.postgresapp.com . Podstawowy problem polegał na tym, że ponieważ postgres został zainstalowany za pośrednictwem aplikacji, plik konfiguracyjny znajduje się w lokalizacji, która nie jest domyślna podczas instalowania go bez postgressapp. więc musimy wskazać gemowi, gdzie znaleźć ten plik:

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config

Mam nadzieję, że to pomoże

Robertibiris
źródło
1
To było moje rozwiązanie (OSX)
raulriera
Jeśli to nie działa dla nikogo, dla wersji 9.3 plik konfiguracyjny został przeniesiony - zobacz zaakceptowaną odpowiedź.
Deekor,
5

Jeśli gem install pg nie powiedzie się, wypróbuj następujące polecenie:

env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config

... z dokumentacji PostgreSQL.app

Vince
źródło
2
Ponieważ oficjalna aplikacja ostatnio zmieniła nazwę na „Postgres93.app”, polecenie powinno brzmieć: env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
Blackcoat
1
dla mnie działało z: env ARCHFLAGS="-arch x86_64" gem install pg
dnlcrl
4

Wygląda na to, że nie masz zainstalowanego PostgreSQL. pgKlejnot wymaga pewnych nagłówki z PostgreSQL skompilować natywnego rozszerzenia.

tungd
źródło
A co z konfiguracją Ruby / Bundler? Używasz Mac OS X lub Linux? a jeśli używasz Mac OS X, zainstalowałeś PostgreSQL przez homebrewlub PostgreSQL.app?
tungd
Jestem na Macu. Zainstalowałem przez aplikację
Deekor,
Mam zainstalowany 0.17.0. Jakieś szkody w używaniu tego z szynami 4?
Deekor
Następnie spróbuj biec bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_configi biegnij bundleponownie. Dostosuj ścieżkę konfiguracji, jeśli instalujesz aplikację ~/Applicationzamiast/Application
tungd
3

Musiałem wszystko połączyć i użyć

sudo env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
Mark Wang
źródło
3

Jeśli używasz czegoś innego niż Postgres w rozwoju i Postgres tylko w produkcji, możesz dodać pg gem do swojego gemfile w ten sposób ...

group :production do
  gem 'pg',             '0.17.1'
end

Następnie użyj bundle install --without production

j8d
źródło
3

Dla użytkowników CentOS:

sudo yum install postgresql-devel

i

gem install pg
webster
źródło
1

Właśnie skonfigurowałem nowego Macbooka Pro, który był fabrycznie zbudowany z Cataliną.

Co mi pomogło:

  1. Zainstaluj Postgres stąd: https://postgresapp.com/
  2. Dodaj export PATH="/Applications/Postgres.app/Contents/Versions/latest/bin:$PATH"do swojego .zshenv, ponieważ powłoka Z jest teraz domyślnym terminalem.
Henrik Holm
źródło
0

Po zainstalowaniu Postgresa musiałem uruchomić następujące polecenie

env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

Po tym pakiecie instalacja działa świetnie!

Mam nadzieję, że to pomoże

pochocosta
źródło
0

Sposób, w jaki udało mi się ominąć ten błąd, to:

  • cd do folderu aplikacji, a następnie ustaw lokalnie wersję Ruby. Używam Ruby 2.1.2.

rbenv local 2.1.2

  • zamiast po prostu uruchamiać instalację pakietu, zainstaluj klejnoty w dostawcy / pakiecie

instalacja pakietu - ścieżka dostawca / pakiet

To zrobiło to dla mnie.

Bogdan Nechita
źródło
0

Musiałem użyć sudo

sudo gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config
gypsyDev
źródło
0

Miałem problem z Amazon i nie mogłem użyć apt-get. Dla mojej pracy:

    sudo yum install postgresql-devel

następnie:

    bundle install

i spróbuj ponownie:

    rails serve
Maurici Abad
źródło
0

Jeśli zainstalowałeś przez Homebrew; gem install pg -- --with-pg-config=/usr/local/bin/pg_config. Działa z Ruby 2.4.6 i pg 0.20.0.

zykadelic
źródło
-2

Mi to pasuje

rvm list gemsets
rvm use ruby-2.4.1
bundle

błąd [! [rozwiązany przez rvm użyj ruby] 2

DevMasterAryan
źródło
Nie instalujesz pgtutaj klejnotu
zykadelic