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ć?


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

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

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.


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


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


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.


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

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


3

Dla użytkowników CentOS:

sudo yum install postgresql-devel

i

gem install pg

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.

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


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.


0

Musiałem użyć sudo

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

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

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.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.