Próbuję zainstalować PostgreSQL dla Railsów na Mac OS X 10.6. Najpierw wypróbowałem instalację MacPorts, ale nie poszło dobrze, więc wykonałem instalację DMG jednym kliknięciem. To wydawało się działać.
Podejrzewam, że muszę zainstalować pakiety programistyczne PostgreSQL, ale nie mam pojęcia, jak to zrobić na OS X.
Oto, co otrzymuję, gdy próbuję to zrobić sudo gem install pg
:
$ sudo gem install pg
Building native extensions. This could take a while...
ERROR: Error installing pg:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
checking for pg_config... yes
Using config values from /Library/PostgreSQL/8.3/bin/pg_config
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)
*** 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=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/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
--with-pqlib
--without-pqlib
--with-libpqlib
--without-libpqlib
--with-ms/libpqlib
--without-ms/libpqlib
Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/pg-0.11.0 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/pg-0.11.0/ext/gem_make.out
ruby-on-rails
ruby-on-rails-3
postgresql
rubygems
Jason Swett
źródło
źródło
pg_config
? To powinno nam ułatwić pomoc.Odpowiedzi:
PRACOWANO!
źródło
env ARCHFLAGS="-arch x86_64" gem install pg -v '0.17.1' -- --with-pg-config=/opt/local/lib/postgresql91/bin/pg_config
Wypróbowałem najlepiej ocenianą odpowiedź tutaj:
Ale kiedy ponownie spróbowałem uruchomić instalację pakietu, wystąpił ten sam błąd. Następnie wypróbowałem całą instalację pakietu z ARCHFLAGS w następujący sposób:
Pracował dla mnie! Upewnij się, że wymieniasz x86_64 na i386 w zależności od posiadanej architektury.
źródło
Miałem ten problem podczas korzystania z EnterpiseDB .dmg. Jeśli to ta sama myśl, której użyłeś, udało mi się ją uruchomić, określając odpowiednią architekturę:
W sieci jest kilka samouczków, które mówią o określaniu innej architektury (np. „-Arch x86_64” dla ludzi, którzy używali MacPorts), ale nie działało to dla mnie, ponieważ użyłem instalacji pojedynczego pliku.
źródło
Jeśli korzystasz z Yosemite:
Następnie:
I (opcjonalnie) na koniec, jeśli chcesz uruchomić autoodkurzanie ...
źródło
Może możesz spróbować tego:
Aby poznać architekturę swojej biblioteki, której możesz użyć
co dało tylko 1 architekturę w moim przypadku (zainstalowana przez homebrew):
źródło
Rozwiązanie: przeinstalowano PostgreSQL z Homebrew.
źródło
Fałsz,
gem
poprzedzając odpowiednie zmienne środowiskowe. Jeśli instalowałeś z MacPorts, powinieneś być w stanie przejść przez następującą procedurę:Stamtąd wyciągnąć
LIBDIR
,INCLUDEDIR
,CPPFLAGS
,LIBS
orazLDFLAGS
(ten, który moim zdaniem będzie Ci uruchomiony jestLIBDIR
jednak). Wtedy uciekłbyś:To powinno wystarczyć. Daj mi znać, jeśli nie.
źródło
locate pg_config
CPPFLAGS
lubLDFLAGS
(nie wiem, co to jest, przepraszam).locate pg_config
pokazał mi trochę rzeczy. Próbowałem po prostu zainstalować PostgreSQL przez MacPorts i używając twojego polecenia - nie zadziałało.LDFLAGS
nie ustawiono katalogu, który zawierałlibpq
. Szczegółowe informacje znajdują się powyżej.Problem, który mieliśmy, był dość dziwny.
ale kiedy w rzeczywistości wykonaliśmy instalację pakietową, pakiet nie był zainstalowany dla wersji Ruby, która była instalowana przez rbenv, więc kiedy wpisaliśmy instalację pakietową, używał bundlera systemu.
Dlatego przed uruchomieniem instalacji pakietu upewnij się, że zainstalowałeś pakiet, uruchamiając
źródło
Myślę, że nie potrzebujesz plików rozwojowych postgres, wszystko, czego potrzebujesz, powinno być dołączone do twojego instalatora. Bardziej prawdopodobne jest, że ścieżka, na której są instalowane, nie znajduje się w ścieżce twojego środowiska i dlatego gem nie może ich znaleźć, gdy próbuje skompilować pg.
Nie powinieneś uruchamiać się
gem install pg
jako root, w rzeczywistości, jeśli to zrobisz, prawdopodobnie twoja PATH (PATH roota, jeśli jest uruchomiona w / sudo) nie będzie zawierała niezbędnych informacji.Zwykle działa dla mnie:
źródło
gem install pg
(wraz z dwoma poprzednimi poleceniami) zamiastsudo gem install pg
nadal daje dokładnie te same wyniki./Library/PostgreSQL/...
również poprawną lokalizację, gdziekolwiek jest twoja kopia instalacji postgres?sudo port install postgresql83 postgresql83-server
, podobnie do tych instrukcji: flux88.com/2010/06/installing-postgresql-for-rails-on-mac-os-x . Wygląda na to, że samodzielny instalator jest 32-bitowy, więc chcesz ustawić flagi arch na 32-bitowe, nawet jeśli twoja maszyna jest 64-bitowa. Jeśli nie możesz go uruchomić, sugeruję odinstalowanie i ponowną instalację za pośrednictwem MacPorts, a następnie wykonanie powyższych instrukcji. Mam nadzieję, że to pomoże!Oto, co ostatecznie zrobiłem dla mnie (połączenie wielu rozwiązań dostarczonych wcześniej wraz z innymi postami):
$ sudo env ARCHFLAGS = "- arch x86_64" gem install pg - with-pg-include = / Library / PostgreSQL / 9.6 / include /
źródło
ARCHFLAGS
Odpowiedź, że inni zaproponowali nie będzie działać, jeśli jakoś skończyło się w wersji 64-bitowej wersji PostgreSQL (który będzie zainstalować homebrew) oraz w wersji 32-bitowej rubinu. Z jakiegoś powodurbenv
nalega na zbudowanie dla mnie ruby 1.9.2-p290 jako 32-bitowego, co uniemożliwia linkowanie z 64-bitowymi postgresami.Sprawdź architekturę swojego pliku binarnego Ruby za pomocą
lub jeśli używasz rbenv
I porównaj z postgresami:
Jeśli nie ma dopasowania, musisz ponownie zainstalować postgres lub ruby. Dzięki rbenv rozwiązałem to, po prostu przełączając się na inną wersję:
1.9.3-p194
zamiast1.9.2-p290
.źródło
W ten sposób udało mi się pracować na Mavericks. Uwaga: już zainstalowałem postgresql 9.3 z homebrew.
Zaktualizuj Xcode do 5.0 z App Store
Zainstaluj narzędzia programistyczne wiersza poleceń
xcode-select --install
Zgadzam się na licencję Xcode
sudo xcodebuild -license
Zainstaluj klejnot
ARCHFLAGS = "- arch x86_64" gem install pg
źródło
Więc w zasadzie zrobiłem to ;-)
źródło
Prawdopodobnie trochę się spóźniłem na imprezę tutaj, ale w moim przypadku używałem rbenv i aktualizowałem do Ruby 2.2.3. Musiałem zainstalować Bundler, aby mój działał, miałem starą wersję systemu.
gem install bundler
źródło
Jak wspomniano powyżej, ma to związek z faktem posiadania dwóch łuków rubinowych na rbenv,
/usr/bin/ruby: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [i386:Mach-O executable i386]
co musiałem zrobić, to po prostu zainstalowaćpg
klejnot wymuszającyx86_64
arch do użycia z tym poleceniem:sudo env ARCHFLAGS="-arch x86_64" gem install pg
Pamiętaj, aby mieć
bash_profile
aktualne informacjeDodaj ścieżkę do swoich postgresów, w tym przypadku używam aplikacji Postgres (
OSX
) zamiastbrew
( https://postgresapp.com/ ) domyślnie jest to lokalizacja:export PATH=/Applications/Postgres.app/Contents/Versions/10/bin:$PATH
Załaduj ponownie bash za pomocą
sudo vi ~/.bash_profile
Po wykonaniu tej czynności udało mi się w końcu pomyślnie zainstalować
pg gem
Mam nadzieję że to pomoże!
źródło
Na Macu możesz spróbować tego (działa dla mnie): gem install pg - with-pg-include = / Library / PostgreSQL / 9.5 / include Fetching: pg-1.0.0.gem (100%) Budowanie natywnych rozszerzeń z: ' with-pg-include = / Library / PostgreSQL / 9.5 / include 'Może to chwilę potrwać ... Pomyślnie zainstalowano pg-1.0.0 Analizowanie dokumentacji dla pg-1.0.0 Instalowanie dokumentacji ri dla pg-1.0.0 Zakończono instalację dokumentacji za pg po 3 sekundach zainstalowano 1 klejnot
(w tej części „/Library/PostgreSQL/9.5/include” musisz podać swoją ścieżkę do Postgres)
źródło