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.