Rails 3 - nie można zainstalować pg gem


98

Kiedy próbuję uruchomić pakiet (instalacja pakietu), cały czas otrzymuję

Installing pg (0.13.2) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/ryan/.rvm/rubies/ruby-1.9.2-p290/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.

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=/Users/ryan/.rvm/rubies/ruby-1.9.2-p290/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


Gem files will remain installed in /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2 for inspection.
Results logged to /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2/ext/gem_make.out
An error occured while installing pg (0.13.2), and Bundler cannot continue.
Make sure that `gem install pg -v '0.13.2'` succeeds before bundling.

Używam Mac OS X 10.6, zainstalowana wersja PostgreSQL to 9.1. Znalazłem problem w libpq-dev , jak mogę to zainstalować / naprawić?


2
jak zainstalowałeś postgres na swoim Macu?
shingara

1
w ten sposób
user984621

instalator on_click? Flink? lub MacPort?
shingara

Próbowałem to zainstalować w ten sposób: sudo port install libpq-devale inny problem - Error: Port libpq-dev not found To report a bug, see <http://guide.macports.org/#project.tickets>. To okropne, wciąż są problemy ...
user984621

1
Zobacz to pytanie: [tutaj] [1] [1]: stackoverflow.com/questions/10321189/…
banditKing

Odpowiedzi:


78

Jak stwierdzono w dzienniku błędów, musisz podać ścieżkę do pliku pg_config. Spróbuj zainstalować klejnot za pomocą:

gem install pg -- --with-pg-config= 'PATH_TO_YOUR_PG_CONFIG'

Jeśli nie jesteś pewien, gdzie znajduje się twój pg_config i zakładając, że korzystasz z systemu Linux lub Mac, możesz uruchomić następujące polecenie:

which pg_config

Twój pg-config może znajdować się w różnych lokalizacjach, w zależności od tego, jak zainstalowałeś postgres.


Uwaga: pakiet binarny ze strony Postgres nie zawiera nagłówków pg_configprogramistycznych ani programu.
tadman

3
Pakiet binarny stąd: enterprisedb.com/products-services-training/pgdownload#osx pewno robi zawierać zarówno pg_config(na przykład co /Library/PostgreSQL/9.1/bin/pg_configdo 9.1.x) i nagłówki rozwojowe. To jest to, czego używam do testowania pgklejnotu w fazie rozwoju.
Michael Granger

8
Nie which pg_configbyłoby szybsze niż find / -name pg_config?
Justin D.

Dokonałem drobnych poprawek w argumentach wiersza poleceń. Zastąpienie wersji aktualną powinno działać poprawnie. Oto moja linia poleceń: sudo env ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-include = / Library / PostgreSQL / 9.1 / include / --with-pg-lib = / Library / PostgreSQL / 9.1 / lib /
Rod Paddock

13
Na OSX możesz również użyć brew, aby przejść przez nagłówki brew install libpqxxi wszystko pójdzie dobrze.
Vetsin

99

jeśli używasz Linuksa, możesz być zainteresowany tym, co zadziałało dla mnie:

sudo apt-get install postgresql
sudo apt-get install libpq-dev

Następnie

gem install pg

następnie

bundle install

src: http://wikimatze.de/installing-postgresql-gem-under-ubuntu-and-mac


1
dziękuję, tak jak w moim przypadku - nie ma potrzeby uruchamiania pakietu gem install pg
valk

21
Nie nadaje się do OS X.
dfrankow

1
Pracował dla mnie od listopada 2013 roku na Ubuntu 13.04!
Starkers

dlaczego ma to tak wiele głosów pozytywnych, skoro wyraźnie dotyczy niewłaściwego systemu operacyjnego?
sevenseacat

1
@sevenseacat jasno określa system operacyjny, na którym powinien być używany. I oczywiście wiele osób z systemami Linux znajduje tę odpowiedź, badając ten problem.
EE33

57

Jeśli używasz Postgress.app, będziesz chciał mieć dostęp do jego narzędzi wiersza poleceń . Wprowadź następujący wiersz w swoim terminalu lub w profilu PATH :

 PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"

gem install pgpowinno teraz działać. (To właśnie zadziałało dla mnie.)

Uwaga Ścieżka do nowych wersji wygląda następująco:

/Applications/Postgres.app/Contents/Versions/<version>/bin

3
Dzięki wielkie! Spędziłem pół godziny przeglądając rzeczy, które nie działały i w końcu znalazłem to zakopane tutaj. : D
Peter Brown

1
Świetne rozwiązanie, które nie wymaga naparu.
lucian303

7
Należy tylko pamiętać, że poprawka Postgre.app zmieniła się w wersji 93. jest teraz: /Applications/Postgres93.app/Contents/MacOS/bin
Alain

2
To zadziałało dla mnie, chociaż mój kosz był w zupełnie innym miejscu -> /Library/PostgreSQL/9.3/bin
Jeremiah

5
To jest teraz - /Applications/Postgres.app/Contents/Versions/9.3/binod 9.3.5, jeśli używasz Postgres.app
Ashley


12

Wyszukaj libpq:

brew search libpq

Powinien wyjść libpqxx

Następnie spróbuj go zainstalować:

brew install libpqxx

8

Wystarczy zainstalować libpq-dev:

sudo apt-get install libpq-dev

Następnie klejnot powinien zainstalować się dobrze.


8
Nie nadaje się do OS X.
dfrankow

W moim przypadku tylko to pomogło. Dzięki!
kovpack

7

Postępuj zgodnie z instrukcjami poinstalacyjnymi: http://postgresapp.com/documentation/configuration-ruby.html

Aby zainstalować pg gem, upewnij się, że poprawnie skonfigurowałeś $ PATH (jak określono w http://postgresapp.com/documentation/cli-tools.html ), a następnie uruchom

sudo ARCHFLAGS="-arch x86_64" gem install pg

Ja zdecydowanie polecam czytania obu stron. Po prostu je przejrzałem i straciłem godzinę życia. Przeczytaj je, problem rozwiązany.


Działa na OSX 10.9.5, domyślna wersja Ruby 2.0, lokalna wersja rbenv 1.9.3.
jlucasps

Działa na OSX 10.11 THANKS
Yarin

Działa na OSX 10.11.4. Dzięki!!
Martyn Chamberlin

3

Problem, który miałem, polegał na tym, że z jakiegoś powodu próbował się skompilować z /usr/bin/gcc-4.2. Odkryłem to, zmieniając try_cpp w mkmf.rb (co widziałem w śladzie stosu), aby zgłosić wyjątek z linią kompilacji, która kończyła się niepowodzeniem.

Miękko podłączyłem gcc do gcc-4.2 i zadziałało:

sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

Dlaczego próbował użyć gcc-4.2? Brak pomysłu.

Rzeczywista linia kompilacji:

/usr/bin/gcc-4.2 -E -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/x86_64-darwin11.4.0 -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/ruby/backward -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/usr/local/Cellar/postgresql/9.1.4/include  -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration  -fno-common -pipe  conftest.c -o conftest.i (RuntimeError)

3

Mam ten sam problem, ale mój Postgres został zainstalowany w

/Library/PostgreSQL/9.3

Zaktualizowano ~ / .bash_profile, dodając:

export PATH=/Library/PostgreSQL/9.3/bin:$PATH

Otwórz nowy terminal, uruchom, bundle updatea także zadziałał dla mnie. Dzięki Ari.


ale do pracy muszę sprawdzić wersję, a następnie wyeksportować PATH = / Applications / Postgres.app / Contents / Versions / 9.4 / bin: $ PATH
Prateep Kul

1

Możesz ustawić opcję konfiguracji kompilacji bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_configi używać gem install pgbez żadnych opcji (ścieżka do pg_config może być inna dla Ciebie, ta jest dla Postgresapp 9.3.5.0)


1

Miałem ten sam problem na mojej maszynie KDE openSUSE13.1. Zanim napotkałem ten problem, instalowałem tylko pakiety postgresqli postgresql-serverużywając zypperpolecenia. Następnie ponownie zainstalowałem 2 kolejne pakiety:

[arup@to_do_app]$ sudo zypper in postgresql-devel postgresql-contrib
root's password:
Loading repository data...
Reading installed packages...
Resolving package dependencies...
#....

Potem znowu pobiegłem bundle installi sukces !!!



0

Najpierw odinstaluj wszystkie wersje Homebrew. Opcja --force powoduje odinstalowanie wszystkich wersji.

brew rm postgresql --force

Zmień ścieżki odpowiednio do swojej wersji.

sudo /sbin/SystemStarter stop postgresql-8.4
sudo rm -rf /Applications/PostgreSQL\ 8.4
sudo rm -rf /etc/postgres-reg.ini
sudo rm -rf /Library/StartupItems/postgresql-8.4
sudo rm -rf /Library/PostgreSQL/8.4
sudo dscl . delete /users/postgres

Edytuj / etc / profile i usuń wszystkie wiersze, które odnoszą się do „postgres”.

nano /etc/profile

Zainstaluj PostgresSQL

brew update
brew install postgresql

Zainstaluj de PG GEM

gem install pg

Otóż ​​to. Pozdrowienia.


0

Możesz najpierw sprawdzić, czy masz plik postrgresql w terminalu, przechodząc do pliku lib. idę cd ~ / opt / local / lib /, a następnie wpisz ls i przycisk Enter. Spowoduje to wyświetlenie listy wszystkich plików znajdujących się w katalogu lib.

1. jeśli nie masz postreseql, możesz pobrać go przez macports. port sudo zainstaluj postgresql93 @ 9.3.2_1

Teraz cd z powrotem do folderu, który próbujesz zainstalować pakiet

  1. uruchomienie pg do pracy z plikiem postgesql, który posiadasz lub właśnie pobrałeś gem install pg - --with-pg-config = / opt / local / lib / postgresql93 / bin / pg_config

teraz uruchom instalację pakietu



0

To, co zadziałało dla mnie w El Capitan, to uaktualnienie ruby ​​z domyślnego systemu do 2.3.1. Wydawało się, że znalazłem właściwe biblioteki, których pgpotrzebował klejnot.

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.