Instalacja klejnotu PG w systemie OS X - brak kompilacji rozszerzenia natywnego

183

Wygląda na to, że wielu innych miało problemy z instalacją klejnotu pg. Żadne z rozwiązań zaproponowanych innym nie działało dla mnie.

Próbowałem zainstalować klejnot pg i postgres.app. Klejnot PG nie zostanie zainstalowany. Pierwszy błąd, który dostaję to:

Wystąpił błąd podczas instalowania pg (0.17.0) i Bundler nie może kontynuować. Upewnić się, żegem install pg -v '0.17.0' uda przed połączeniem.

Porada instalacji dotycząca wskazania instalacji mojego klejnotu w konfiguracji dla pg kończy się niepowodzeniem i pojawia się następujący komunikat o błędzie (z którym spotkało się wiele innych osób na tym forum):

Failed to build native extensions... Results logged to /Users/melanie/.rvm/gems/ruby-1.9.3-p448/gems/pg-0.17.0/ext/gem_make.out

Nie wiem, jak znaleźć ten plik dziennika lub uzyskać do niego dostęp, aby szukać dalszych wskazówek.

Otrzymuję również komunikat o błędzie (polecenie nie znaleziono), gdy próbuję użyć polecenia sudo apt-get install. Przeszukiwałem to forum przez ostatnie 6 godzin, wypróbowując każdą radę, aby pg zaczął pracować z moim projektem szyn.

Nie mogę znaleźć porady, jak zmienić ścieżkę, a konkretnie, jaka zmiana jest wymagana. Mójwhich pg_config zwraca źródło pliku. Użyłem tego z poleceniem, aby zainstalować pg za pomocą tej konfiguracji. To nie wyszło.

Jest tak wielu ludzi, którzy mieli z tym problem. Wiele odpowiedzi sugeruje homebrew. Musiałem to usunąć, ponieważ spowodowało to inne problemy.

Mel
źródło
1
Hej, kilka pytań, które pomogą w dalszej drodze: - Jesteś na Macu, prawda? Prawda poszła nie tak z homebrew? (ps, jak zauważyłeś, apt-get jest przeznaczony tylko dla Ubuntu (i jego kuzynów opartych na Debianie)) - jaką masz wersję postgres? spróbuj uruchomić się psql -vw swojej powłoce. - z jakiej wersji ruby ​​korzystasz? Wygląda na 1.9.3, ale co ruby -vci daje?
rmosolgo
Powinienem dodać, że mój psql został dodany w: /Applications/Postgres-1.app/Contents/MacOS/bin/psql; wyjście; psql (9.3.0), ale który zwraca psql: usr / bin / psql
Mel
Cześć, wielkie dzięki za obejrzenie tego. Mój psql ma wersję 9.3.0, a ruby ​​ma wersję 1.9.3
Mel
1
Zobacz odpowiedź @ paninapress na Postgres.app. Działa świetnie dla mnie i nie wymaga instalowania kolejnej instancji Postgres.
Jamon Holmgren

Odpowiedzi:

442

Ten sam błąd dla mnie i nie doświadczyłem go, dopóki nie pobrałem OS X 10.9 (Mavericks). Westchnienie, kolejny ból głowy związany z aktualizacją systemu operacyjnego.

Oto jak to naprawiłem (z homebrew):

  • Zainstaluj kolejną wersję Xcode Tools (wpisanie brew updatew terminalu wyświetli monit o aktualizację narzędzi Xcode)
  • brew update
  • brew install postgresql

Po tym gem install pgzadziałało dla mnie.

Shicholas
źródło
7
Po dwóch dniach bólu głowy, gdy próbowałem naprawić moją bazę danych Railsów po aktualizacji Mavericks, naprawiłem to, wielkie dzięki.
Deborah
4
To też działało dla mnie - na świeżej instalacji Mavericks. Dzięki!
marcamillion,
1
Dziękuję za uratowanie mi zdrowia psychicznego!
Jim
1
Wciąż pracuje. Projekt działa na Ruby 2.2.0, aby obsługiwać starą aplikację, ale to samo DZIĘKUJEMY.
TristanZimmerman,
1
1. brew update2. brew install postgresql3. gem install pg4.bundle install
kai_onthereal
223

Jeśli używasz Ubuntu, spróbuj zainstalować następujący plik lib

sudo apt-get install libpq-dev

i wtedy

gem install pg

pracował dla mnie.

sandesh kota
źródło
4
Pracowałem też dla mnie. Korzystam z Ubuntu 13.10.
rafaelkin
4
Upewnij się tylko, że wpisałeś go poprawnie. Nie jest libpg-dev; To Q, a nie P! Ciężko było mi to 10 minut.
tir38
1
W przypadku Amazon Linux jest toyum install postgres-devel
andrewtweber
1
Pracował dla mnie na Ubuntu 14 !!
bajtów
6
Dla CentOSyum install postgresql-devel
septerr
49

Używam OS X Mavericks (wersja 10.9)

a po uruchomieniu powyższego pojawia się następujący komunikat: Jeśli kompilacje PostgreSQL 9 kończą się niepowodzeniem i masz zainstalowaną wersję 8.x.

Więc uruchamiam następujące polecenie:

ARCHFLAGS="-arch x86_64" gem install pg

i to zadziałało dla mnie, mam nadzieję, że to komuś pomoże :)

Jon
źródło
2
+1, próbowałem innych, ale w końcu zainstalowałem pg przez gem z tym rozwiązaniem.
BMW
1
+1, podobnie, było to również rozwiązanie dla mnie, gdzie mój postgresql został już zainstalowany za pośrednictwem brew. Dzięki Jon za post.
Jason Hoekstra
5
nb Jeśli instalujesz jako root (z jakiegokolwiek powodu), sudo idzie przed zmienną:sudo ARCHFLAGS="-arch x86_64" gem install pg
Noach Magedman
Właściwie potrzebuję tego za każdym razem, gdy uruchamiam, bundle installwięc umieściłem go ~/.bash_profilejako eksport :)
Ja͢ck
42

Ok, miałem również ten problem (psql w wersji 9.3.0 i ruby ​​w wersji 2.1.2), a rozwiązaniem, które mi pomogło, było najpierw ustawienie ustawień konfiguracji pakietu:

bundle config build.pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

Ta odpowiedź w końcu pomogła mi to rozgryźć: https://stackoverflow.com/a/9235107/3546680

paninapress
źródło
6
Ta metoda jest preferowana, jeśli używasz postgres.app. Korzystanie z Homebrew może rozwiązać problem rozszerzenia natywnego, ale posiadanie dwóch aplikacji postgres spowoduje konflikty (takie jak przydział portów) Zobacz także odpowiedź Sayanees na stackoverflow.com/questions/19569031/...
Epigene
4
To zdecydowanie odpowiednia odpowiedź dla Postgres.app.
Jamon Holmgren
Działa dobrze na Mojave, próbowałem kilka minut temu.
microspino,
23

Próbowałem wszystkiego przez wiele godzin, ale w końcu to naprawiłem (jestem na OS X 10.9.4):

  1. Zainstaluj narzędzia wiersza polecenia Xcode (witryna Apple Developer)
  2. odinstaluj postgresql
  3. napar zainstalować postgresql
  4. ARCHFLAGS = "- arch x86_64" instalacja klejnotów str
Ali Yazdani
źródło
Dziękuję Ci. Użyłem sudo do kroku 4, czy to źle? Jak mogę tego uniknąć?
Roy
@Roy - chętnie pomogę :) - powinno być w porządku, prawdopodobnie chcę uniknąć korzystania z sudo, ponieważ uważam, że zainstaluje go dla wszystkich użytkowników, ale jeśli jesteś jedynym użytkownikiem w systemie, to prawdopodobnie nie jest to taka wielka sprawa .
Ali Yazdani,
brew uninstall postgresqli brew install postgresqlnie są konieczne kroki w OS X 10.10 i 10.11. Po prostu gem uninstall pg(i usuń wszystkie wersje), a następnie upewnij się, że bundlelub ty gem install pg, a rozszerzenia natywne zostaną przebudowane za pomocą nowych narzędzi wiersza poleceń dla tej wersji OS X.
Olivier Lacan,
7

łatwy krok

  1. brew install postgresql
  2. gem install pg -v 'your version'
James Dela Cruz
źródło
6

Podobnie po zainstalowaniu Mavericks bundle update rzucał błąd na klejnot pg, który jest używany tylko podczas produkcji, a nie lokalnie.

Korzystam z Brew do zarządzania moimi pakietami, a postgresql jest już zainstalowany, ale wciąż pojawia się błąd „no pg_config”.

Rozwiązaniem było tylko brew uninstall postgresql, wtedy brew install postgresql. Po czym od razu udało mi się uruchomić bundle update.

Shannon Perkins
źródło
6

Wierzę, że „poprawną” odpowiedzią byłoby najpierw poprawne skonfigurowanie PATH dla Postgres.app poprzez dodanie następujących elementów ~/.profile( .zshrclub ~/.zprofilejeśli korzystasz z ZSH):

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

Następnie otwórz nową kartę lub okno w terminalu i zainstaluj pgklejnot za pomocą:

ARCHFLAGS="-arch x86_64" gem install pg

Udokumentowane tutaj:

Matias Korhonen
źródło
5

W OSX z Postgres zainstalowanym w / Applications, po prostu uruchamiam następujące polecenie (zmień 0.20 i 9.4 w zależności od wersji)

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

Powinieneś mieć :

Budowanie rozszerzeń natywnych za pomocą: '--with-pg-config = / Applications / Postgres.app / Contents / Versions / 9.4 / bin / pg_config' Może to chwilę potrwać ... Pomyślnie zainstalowano pg-0.20.

jbheren
źródło
Czy potrafisz wyjaśnić, dlaczego musieliśmy wykorzystać dodatkowy łącznik 2, zanim argument zostanie podany?
Akash Agarwal
3

Spędziłem nad tym dzień i oto jak to naprawiłem:

Odkryłem, że globalna wartość build.pg została ustawiona na: /opt/local/lib/postgresql91/bin/pg_config i to nie tam zainstalowano postgres.

Naprawiłem to poprzez zamianę wartości build.pg na: bundle config build.pg --with-pg-config=/usr/local/Cellar/postgresql/9.4.4/bin/pg_config właśnie tam jest moja instalacja postgresql.

HosseinToussi
źródło
1

Próbować:

gem install pg -- --with-pg-config=`which pg_config`
Gerry
źródło
0

Rozwiązany! Znalazłem pewien brak biblioteki dla PostgreSQL w systemie. Rozwiązały go tylko dwa kroki:

brew install postgresql

Następnie uruchomić

gem install pg

użytkownik6756462
źródło
0

Dla tych, którzy nie są zainteresowani użyciem brew.

  1. Pobierz PostgreSQLaplikację.
  2. Postępuj zgodnie z domyślną instrukcją macOS, aby ją zainstalować.
  3. Wskazane jest uruchomienie PostgreSQl.
  4. Uruchom gem install pg -- --with-pg-config=/ path / to / postgress / in / your / applications / folder / `
    • Na przykład w mojej maszynie /Applications/Postgres.app/Contents/Versions/12/bin/pg_config
Esmaeil MIRZAEE
źródło