Niemożliwe jest zainstalowanie PG gem na moim Macu z Mavericks

103

Próbuję zainstalować pg gem, aby ponownie pracować z moimi projektami rails. Ale pojawia się ten błąd:

Tworzenie rozszerzeń natywnych. To może chwilę potrwać ... BŁĄD: Błąd podczas instalacji pg: BŁĄD: Nie udało się zbudować natywnego rozszerzenia gem.

/Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/bin/ruby extconf.rb checking for pg_config... no No pg_config... trying anyway. If

budowanie nie powiodło się, spróbuj ponownie z --with-pg-config = / path / to / pg_config sprawdzając libpq-fe.h ... nie Nie można znaleźć nagłówka 'libpq-fe.h * extconf.rb failed * Nie można utworzyć pliku Makefile z jakiegoś powodu, prawdopodobnie braku niezbędnych bibliotek i / lub nagłówków. Więcej informacji można znaleźć w pliku mkmf.log. Możesz potrzebować opcji konfiguracyjnych.

Dostępne opcje konfiguracji: --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 = / Users / jeanosorio / .rvm / rubies / ruby-2.0.0-p247 / bin / ruby ​​--with-pg --without-pg --with-pg-config --without-pg -config --with-pg_config --without-pg_config --with-pg-dir --without-pg-dir --with-pg-include --without-pg-include = $ {pg-dir} / include - -with-pg-lib --without-pg-lib = $ {pg-dir} /

Pliki Gem pozostaną zainstalowane w /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0 do wglądu. Wyniki zarejestrowane w /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0/ext/gem_make.out

Wypróbowałem wszystko, co znalazłem w stackoverflow, ale nadal otrzymuję ten błąd.

Jeśli spróbuję zainstalować postgresql za pomocą brew, otrzymuję następujące ostrzeżenie:

Ostrzeżenie: postgresql-9.2.4 jest już zainstalowany, po prostu nie jest połączony

Jeśli spróbuję połączyć

brew link postgresql Linking /usr/local/Cellar/postgresql/9.2.4 ... Ostrzeżenie: nie można połączyć postgresql. Odłączam ...

Błąd: nie można pobrać pliku dowiązania symbolicznego: /usr/local/Cellar/postgresql/9.2.4/share/man/man7/WITH.7 / usr / local / share / man / man7 nie jest zapisywalny. Powinieneś zmienić jego uprawnienia.

Prosimy o pomoc

UWAGA: już zainstalowałem narzędzia wiersza poleceń dla mavericks.


Jeśli odinstaluję za pomocą homebrew i spróbuję zainstalować ponownie, pojawia się ten błąd:

==> Pobieranie http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.bz2

################################################# ################ 100,0%

==> Plik poprawek src / pl / plpython / Makefile Plik poprawek contrib / uuid-ossp / uuid-ossp.c ==> ./configure --prefix = / usr / local / Cellar / postgresql / 9.2.4 - datadir = / usr / local / Cellar / postgresql / 9.2.4 / share / postgresql --docdir = / usr / local / Cellar / p ==> make install-world ==> Ostrzeżenia

Tworzenie notatek

Jeśli kompilacje PostgreSQL 9 zawodzą i masz zainstalowaną wersję 8.x, być może będziesz musiał najpierw usunąć poprzednią wersję. Zobacz:
https://github.com/mxcl/homebrew/issues/issue/2510

Utwórz / uaktualnij bazę danych

Jeśli jest to Twoja pierwsza instalacja, utwórz bazę danych z: initdb / usr / local / var / postgres -E utf8

Aby przeprowadzić migrację istniejących danych z poprzedniej głównej wersji (sprzed 9.2) PostgreSQL, zobacz:
http://www.postgresql.org/docs/9.2/static/upgrading.html

Ładowanie rozszerzeń

Domyślnie Homebrew tworzy wszystkie dostępne rozszerzenia Contrib. Aby zobaczyć listę wszystkich dostępnych rozszerzeń, z wiersza poleceń psql, uruchom:
SELECT * FROM pg_available_extensions;

Aby załadować dowolne nazwy rozszerzeń, przejdź do żądanej bazy danych i uruchom: CREATE EXTENSION [nazwa rozszerzenia];

Na przykład, aby załadować rozszerzenie tablefunc do bieżącej bazy danych, uruchom: CREATE EXTENSION tablefunc;

Więcej informacji na temat polecenia CREATE EXTENSION można znaleźć pod
adresem : http://www.postgresql.org/docs/9.2/static/sql-createextension.html Więcej informacji na temat rozszerzeń można znaleźć pod adresem :
http://www.postgresql.org/ docs / 9.2 / static / contrib.html

Inny

Niektóre maszyny mogą wymagać udostępnienia pamięci współdzielonej:
http://www.postgresql.org/docs/9.2/static/kernel-resources.html#SYSVIPC Podczas instalowania klejnotu postgres, w tym ARCHFLAGS jest zalecane: ARCHFLAGS = "- arch x86_64" gem install str

Aby zainstalować klejnoty bez sudo, zobacz wiki Homebrew.

Aby uruchomić uruchamianie postgresql przy logowaniu: ln -sfv /usr/local/opt/postgresql/*.plist ~ / Library / LaunchAgents Następnie, aby załadować postgresql teraz: launchctl load ~ / Library / LaunchAgents / homebrew.mxcl.postgresql.plist Lub , jeśli nie chcesz / potrzebujesz launchctl, możesz po prostu uruchomić: pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log start Ostrzeżenie: Nie można połączyć postgresql. Odłączanie ... Błąd: brew linkKrok nie został ukończony pomyślnie Formuła została zbudowana, ale nie jest dowiązana symbolicznie do / usr / local Możesz spróbować ponownie używając `brew link postgresql '==> Summary 🍺 /usr/local/Cellar/postgresql/9.2 .4: 2831 plików, 38 MB, zbudowany w 4,9 minuty


ROZWIĄZANIE:

Wykonuję to polecenie, aby zmienić uprawnienia do folderu:

sudo chown jeanosorio / usr / local / share / man / man7

Następnie

brew link postgresql Linking /usr/local/Cellar/postgresql/9.3.1 ... Utworzono 421 linków symbolicznych

I w końcu:

sudo ARCHFLAGS = "- arch x86_64" gem install pg

Pobieranie: pg-0.17.0.gem (100%) Tworzenie rozszerzeń natywnych. Może to chwilę potrwać ... Pomyślnie zainstalowano pg-0.17.0

Drelich
źródło

Odpowiedzi:

252

Jeśli chcesz uniknąć korzystania z MacPorts, możesz pobrać aplikację Postgres i umieścić ją w katalogu aplikacji.

Następnie określ lokalizację nowo pobranych pg_config:

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

Jeśli napotkasz problem z brakującymi nagłówkami, spróbuj określić includekatalog aplikacji:

gem install pg -- --with-pg-include='/Applications/Postgres.app/Contents/Versions/latest/include/'
Yuri
źródło
11
Tylko uwaga, że ​​nadal możesz korzystać z pakietu, ustawiając zmienną konfiguracyjną env:export CONFIGURE_ARGS="with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config"
film42
8
Jeśli używasz Postgres 9.3 (najnowszy na dzień dzisiejszy), możesz to zrobić: gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
cavneb
Korzystanie z Postgres93.app działało, ale trzeba było dodać ścieżkę bin do zmiennej PATH env, aby zainstalować pakiet.
mkhatib,
5
Musiałem to uruchomić, używając gem install pg -- --with-pg-config=/Applications//Postgres.app/Contents/Versions/9.3/bin/pg_config
StevenNunez,
1
Dzięki! Otrzymałem Ostrzeżenie: nie można połączyć postgresql. Odłączanie ... Błąd: nie można pobrać pliku dowiązania symbolicznego: ... nie można zapisać. Powinieneś zmienić jego uprawnienia. I wszystko jest winą brew, po tym, jak brew install / link postgresql Instalacja idzie do: Linking /usr/local/Cellar/postgresql/9.3.4 ... co jest w moim przypadku BARDZO KONFLIKTYWNYM FOLDEREM, pobierając pg i gem install za pomocą rozwiązuje problem DZIĘKI !!!!!!
d1jhoni1b
74

Użyj naparu, aby się dostać postgresql

brew install postgresql

Sprawdź, czy masz pg_config w zainstalowanym pliku brew. Znalazłem swoje w

/usr/local/Cellar/postgresql/9.3.3/bin/pg_config

Sprawdź przez:

$ ls /usr/local/Cellar/postgresql/9.3.3/bin/pg_config
> /usr/local/Cellar/postgresql/9.3.3/bin/pg_config

Po zakończeniu zainstaluj pgklejnot za pomocą

env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/Cellar/postgresql/9.3.3/bin/pg_config
Ayush Goel
źródło
2
pracował dla mnie po próbie wielu różnych rzeczy. po prostu musiałem się upewnić, że używam prawidłowego numeru wersji (w moim przypadku 9.3.5_1)!
HK
1
Użyj, ls /usr/local/Cellar/postgresql/9.*/bin/pg_configaby znaleźć prawdziwą ścieżkę i połączenv ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=$(ls /usr/local/Cellar/postgresql/9.*/bin/pg_config)
Jesper Grann Laursen
Nieco bardziej szczegółowy opis tego, co się tutaj dzieje deveiate.org/code/pg/README-OS_X_rdoc.html
Julia Usanova
35

Nie mogłem zainstalować postgres przez MacPorts. Zamiast tego zainstalowałem Postgress.app . i zadzwonił

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

Uwaga: w nowszych wersjach (przynajmniej w wersji 9.3) ścieżka jest w rzeczywistości: /Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

iceui2
źródło
2
To działa, ale pamiętaj, że czasami Postgres.app jest instalowany jako Postgres <NN> .app, gdzie NN to numer wersji.
nimrodm
11

Jeśli masz homebrew, po prostu wpisz:

$ brew zainstaluj postgresql

user2373148
źródło
1
To zadziałało dla mnie - miałem już zainstalowany PostgreSQL, ale chyba musiałem go zainstalować ponownie, aby odświeżyć nagłówki (?) Wtedy mogłem zrobićgem install pg
Crimbo
10

Oto kolejna alternatywa na wypadek, gdybyś chciał bezpośrednio użyć instalatora postgresql. Po przejściu na Mavericks musisz przejść przez kilka obręczy. Oto co zrobiłem:

Najpierw zainstaluj narzędzia wiersza poleceń xcode:

xcode-select --install

Pobierz i zainstaluj najnowszą wersję PostgreSQL (9.3.1), w moim przypadku użyłem tylko graficznego instalatora. Oto link do strony pobierania:

http://www.enterprisedb.com/products-services-training/pgdownload#osx

Po prostu wybierz wszystkie podane wartości domyślne. W moim przypadku zainstalował postgres w następującym katalogu, jeśli zainstalowałeś go w innym katalogu, po prostu zapamiętaj wybraną ścieżkę, ponieważ będziesz jej wkrótce potrzebować.

/Library/PostgreSQL/9.3

Jeśli teraz spróbujesz zainstalować najnowszą pg gem (0.17.0), będziesz musiał podać kilka opcji w linii poleceń. Oto, czego użyłem:

ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config

Jeśli zainstalowałeś postgres w innej lokalizacji, musisz naprawić ścieżkę do pliku pg_config.

Jeśli narzeka na brakujący plik „libpq.5.dylib” podczas próby instalacji pg gem, musisz utworzyć dowiązanie symboliczne wskazujące na rzeczywistą lokalizację tego pliku. Postgres szuka go w twoim katalogu / usr / local / lib /, więc utwórz tam dowiązanie symboliczne i przekieruj je do jego rzeczywistej lokalizacji. W moim przypadku musiałem biec:

sudo ln -s /Library/PostgreSQL/9.3/lib/libpq.5.dylib /usr/local/lib/libpq.5.dylib

Gdy to zrobisz, spróbuj ponownie zainstalować klejnot i miejmy nadzieję, że zadziała to tak samo, jak u mnie.

2potatocakes
źródło
9

Dla mnie w Yosemite nie musiałem określać pg_configścieżki. Wykonano to następująco.

brew install postgresql
sudo env ARCHFLAGS="-arch x86_64" gem install pg

Wygląda na to, że kluczem jest flaga architektury.

dinigo
źródło
5

W moim przypadku (potrzebowałem PG 0.16.0 na Mavericks), zainstalowałem postgresql przez MacPorts

sudo port install postgresql90

i wtedy

gem install pg -v '0.16.0' -- --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config

W przypadku najnowszej wersji musisz odjąć -v '0.16.0'

gem install pg -- --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config

Jeśli masz zainstalowany program Homebrew, nie instaluj MacPorts, zanim przeczytasz o ich współistnieniu

Gi0
źródło
5

Umieść brakujące --with-pg-configw pliku konfiguracyjnym Bundlera: /Users/<your_user>/.bundle/configaby ułatwić sobie życie.

---
BUNDLE_BUILD__PG: --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
BUNDLE_BUILD__EXAMPLE_GEM: --other-configs
BUNDLE_BUILD__OTHER_EXAMPLE_GEM: --other-configs

Następnie biegnij bundle installponownie.

Bruno Buccolo
źródło
5

To działa dla mnie! (Postgres 93, Mac ox 10.9.1) 1. pobierz @ http://postgresapp.com/ i niż

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
meck373
źródło
4

Utknąłem na instalacji pakietu na 3 dni. Próbowałem Wszystko jak dodanie env ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-config = / usr / local / Cellar / postgresql / 9.3.5_1 / bin / pg_config

Mogłem zobaczyć, jak pg gem instaluje się po tym poleceniu, ale nadal nie instalował się z instalacji pakietu, co było uciążliwe, ponieważ nie wiem, co napisać w Gemfile z wyjątkiem gem 'pg'

Rzeczą, która ostatecznie pracował dla mnie było stwierdzić, że mój pg_config był w /Library/PostgreSQL/9.3/bin/pg_config i domyślnie Gemfile Bundle zainstalować spojrzenia w / usr / local / bin / pg_config

Po prostu uruchomiłem następujące polecenie i magia się wydarzyła. bundle config build.pg --with-pg-config = / Library / PostgreSQL / 9.3 / bin / pg_config

Neeraj Gupta
źródło
4

W moim przypadku nie zadziałało, jeśli nie określisz flag arch, OS X 10.10.3 i plakatów App 9.4

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

Najłatwiejszym sposobem rozwiązania tego problemu było użycie Postgres.app i skonfigurowanie moich zmiennych env, aby gem install pgpo prostu działały (zamiast wymagać --with-pg-configflagi).

Używając Homebrew Cask ,

brew cask install postgres
echo 'export PG_HOME=/Applications/Postgres.app/Contents/Versions/latest' >> ~/.bash_profile
echo 'export PATH="$PATH:$PG_HOME/bin"' >> ~/.bash_profile
source ~/.bash_profile

# now it just works
gem install pg
smoll
źródło
2

Oto, co mi się udało:

gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config
tokhi
źródło
2

W moim przypadku odinstalowałem wersję zainstalowaną przez homebrew i przerzuciłem się na Postgres.app (wersja 9.3.4.2 w momencie pisania).

Wydawało się, że działa tylko podczas dodawania flag architektury środowiska i określania ścieżki do pg_config. Twój przebieg może się różnić, więc ta odpowiedź może pomóc w różnicach w pg_configlokalizacji.

Oto ostatnie, kompletne polecenie, które zadziałało dla mnie:

env ARCHFLAGS="-arch x86_64" gem install pg -- \
--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config 
Marius Butuc
źródło
2

sudo ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-config = / usr / local / bin / pg_config

Taysky
źródło
zadziałało to również dla mnie z instalacją pakietu, tak jak to:ARCHFLAGS="-arch x86_64" bundle install
d4n3
1

Otrzymałem ten sam błąd podczas uruchamiania instalacji pakietu dotyczącej pg gem (używając Mac OS X Mavericks). Po godzinach poszukiwań znalazłem rozwiązanie. Zainstalowałem postgres za pomocą homebrew

brew install postgres

Po zainstalowaniu tego utworzyłem nową aplikację railsową przy użyciu postgres. Pobiegłem

bundle install

bezskutecznie (otrzymałem ten sam błąd co pytanie). użyłem

which psql

aby dowiedzieć się, gdzie został zainstalowany mój postgres, zwrócił

/usr/local/bin/psql

Przed ponownym uruchomieniem instalacji pakietu musiałem zmienić ścieżkę globalną na build.pg, uruchamiając następujące polecenie

bundle config build.pg --with-pg-config=/usr/local/bin/pg_config

Następnie ponownie uruchomiłem instalację pakietu i voila! Użyłem postgresów, w których zainstalowałem brew.

Rav Johal
źródło
1

W systemie OS X Mavericks z najnowszą aplikacją Postgres wykonaj następujące czynności z uprawnieniami sudo

env ARCHFLAGS="-arch x86_64" gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
Vailancio Rodrigues
źródło
1

To, co działało dla mnie w 10.9.3 z Xcode 5.1.1, było następujące:

brew update
brew install postgresql 
gem install pg -v '0.17.1'

Potrzebowałem pg 0.17.1

Tom Andersen
źródło
1

Dla każdej zagubionej duszy, która nadal ma ten problem bez rozwiązania i ma brewzainstalowany rubin i postgres . Oto następujące kroki, aby upewnić się, że:

  • Upewnij się, że Twoja wersja rubynie została zainstalowana z --universalflagą.
    • To była najtrudniejsza rzecz do ustalenia, --universalco było ostatecznym źródłem problemu.
  • Upewnij się, że zainicjowałeś postgresqlpoprawnie za pomocą poleceń initdbi createdb(poszukaj innych kroków, aby to zrobić).
  • Upewnij się, że Xcode(opcjonalnie) i command line toolsjest zainstalowany; na terminalu:
    • xcode-select --install
    • sudo xcodebuild -license (jeśli zainstalowano Xcode) lub otwórz aplikację i zaakceptuj umowę licencyjną.
    • Restart komputera
  • which ruby, which gemI which postgrespowinien pokazać /usr/local/bin/ruby, /usr/local/bin/gemi /usr/local/bin/postgresszacunkiem.
  • Na trasie terminalu:

    • gem install pg -- --with-pg-config=/usr/local/bin/pg_config
    • lub
    • env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/bin/pg_config
  • Upewniając się, że wszystkie te kroki są spełnione, udało mi się rozwiązać następujące błędy:

    • ruby.h błąd nagłówka
    • developer tools installed first błąd
link_boy
źródło
1

Przede wszystkim znajdź lokalizację pg_config

sudo find / -name "pg_config" -print

Odpowiedź to /Library/PostgreSQL/9.1/bin/pg_config w mojej konfiguracji (MAC Maverick)

Następnie spróbuj zainstalować coś takiego jak poniżej

gem install pg - --with-pg-config = / Library / PostgreSQL / 9.3 / bin / pg_config

jeśli to nie zadziała, spróbuj sprawdzić, w jaki sposób zainstalowałeś postgresql

brew / mac port / setup

wtedy musisz wypróbować odpowiednią opcję do tego samego.

Dziękuję Ci.

Baran

Rameshwar Vyevhare
źródło
0

Miałem ten sam problem, to było rozwiązanie, które znalazłem.

Jeśli uruchomisz brew doctor, powie ci, że prawdopodobnie zainstalowałeś coś bez naparu, co zmieniło uprawnienia w niektórych folderach, więc musisz zmienić uprawnienia z powrotem do tego folderu.

Wewnątrz /usr/local/share/manmożesz wykonać następujące czynności:

sudo chown [yourusername] man7

I wtedy:

brew link postgres

Mam nadzieję, że to pomoże!

Gustavo Semião-Lobo
źródło
0

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

Używam Brew do zarządzania moimi pakietami, a postgresql jest już zainstalowany, ale nadal otrzymuję błąd „no pg_config”.

Rozwiązaniem było po prostu „zaparz odinstalować postgresql”, a następnie „zaparzyć instalację postgresql”. Po czym od razu mogłem pomyślnie przeprowadzić „aktualizację pakietu”

Shannon Perkins
źródło
0
sudo su 

następnie

ARCHFLAGS="-arch x86_64" gem install pg -v '0.18'

pracował na 10.10.2

Keaton Burleson
źródło
0

Jeśli po wypróbowaniu wszystkiego tutaj nadal nie można zainstalować, spróbuj otworzyć Xcode i zaakceptować umowę licencyjną.

hattenn
źródło
0

U mnie komunikat błędu wyglądał tak:

Installing pg 0.18.4 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

...

checking for pg_config... no

No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config

Jak pokazuje komunikat o błędzie, program próbuje wykonać polecenie / skrypt „pg_config”. Więc po prostu dodaj go do ścieżki z dowolnego miejsca instalacji Postgres. W moim przypadku zrobiłem:

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

następnie

bundle

Otóż ​​to.

paneer_tikka
źródło
-1

Postgres 9.4:

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/Versions/9.4/bin/pg_config
MDD
źródło
Małe wyjaśnienie byłoby miłe, aby uniknąć zagubienia się w zalewie 19 innych odpowiedzi.
Brad Koch,