nie można zainstalować pg gem

218

Próbowałem użyć, gem install pgale nie działa.

gem install pg daje ten błąd

Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
        ERROR: Failed to build gem native extension.

C:/Ruby/bin/ruby.exe 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=C:/Ruby/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 C:/Ruby/lib/ruby/gems/1.8/gems/pg-0.10.1 for
inspection.
Results logged to C:/Ruby/lib/ruby/gems/1.8/gems/pg-0.10.1/ext/gem_make.out
Rohit
źródło
3
Jeśli używasz komputera Mac, postępuj zgodnie z tym samouczkiem: matthew.mceachen.us/blog/…
Noah W. Smith
1
@NatchiQ uszkodzony link?
0112
w moim przypadku dziennik błędów powiedział, że libpqnie znaleziono, więc zainstalowałemsudo apt install postgresql postgresql-contrib libpq-dev pgadmin3 -y
Raj

Odpowiedzi:

388

Miałem ten problem, to działało dla mnie:

Zainstaluj pakiet postgresql-devel, to rozwiąże problem braku pg_config.

sudo apt-get install libpq-dev
Devaroop
źródło
139
Pracował dla mnie przez apt-get install libpq-dev. Dzięki za podpowiedź.
Ryanmt,
5
Potwierdzenie ze strony głównej Wiki pg gem : „Na Ubuntu pakiet / usr / bin / pg_config jest dostarczany przez pakiet libpq-dev”.
Mark Berry
17
co z komputerem Mac?
Fivell,
23
@Fivell Późno do gry z odpowiedzią tutaj, ale jeśli masz zainstalowany Homebrew, brew install postgresqldostaniesz potrzebne pakiety.
Alex LaFroscia
19
@Fivell spróbuj brew install postgresqlna komputerze Mac
Mahattam
91

Problem jest zależny od klejnotów, więc przed instalacją pg upewnij się, że zainstalowałeś „libpq-dev”

Systemy Ubuntu:

sudo apt-get install libpq-dev

Systemy RHEL:

mniam zainstalować postgresql-devel

Prochowiec:

napar zainstalować postgresql

Mahattam
źródło
7
Odpowiedź na Maca jest prawdziwa. Po prostu dlatego, że nie zainstalowaliśmy PostgreSQL na maszynie.
Hoang Le
Na Centos 7 yum install postgresql-develrozwiązałem mój błąd związany z pg_config dla instalacji 'pg' .gem. Nawiasem mówiąc, zdecydowałem się użyć właśnie wydanego PostgreSQL 10
Arthur
62

gem install pg -- --with-pg-config=/usr/pgsql-9.1/bin/pg_config

Flaviu
źródło
3
Pomogło mi to (w
Centos
14
Pracowałem dla mnie w systemie OS X, ale ze ścieżką do /Applications/Postgres.app/Contents/MacOS/bin/pg_config (mam samodzielny Postgres.app)
Matt
10
gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config w yosemite z aplikacją Postgres
twmulloy
Pracował Ale na Macu poprzednia zmiana env ARCHFLAGS="-arch x86_64"była dla mnie zmieniaczem gier.
Janusz Lenar
2
Użyłem gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_configOSX 10.12
Tim Krins
37

@Winfield to powiedział :

Klejnot pg wymaga, aby biblioteki klienckie postgresql były powiązane. Ten błąd zwykle oznacza, że ​​nie można znaleźć bibliotek Postgres. Albo nie masz ich zainstalowanych, albo może być konieczne zaliczenie--with-pg-dir= do instalacji klejnotów.

Co więcej, potrzebujesz tylko --with-pg-config= go zainstalować.

Na komputerze Mac

Jeśli przez przypadek zainstalowałeś postgres za pośrednictwem pakietu witryny na komputerze Mac, będzie on podobny do tego /Applications/Postgres.app/Contents/Versions/9.3/bin.

Więc albo przekaż to przy instalacji klejnotów:

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

Albo ty PATH ustawione prawidłowo . Ponieważ może to być za dużo, aby tymczasowo ustawić ŚCIEŻKĘ:

export PATH=%PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin/
Cregox
źródło
2
dla konkretnej wersji:gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
Dan Sandland,
W folderze latestzawartości Postgres.app znajduje się folder dowiązania symbolicznego, który jest przydatny w przypadku, gdy 9.3 nie jest już wysyłany. gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config
Stephen Silber,
24

Nie zainstalowałem postgresql, więc po prostu zainstalowałem go za pomocą

sudo apt-get install postgresql postgresql-server-dev-9.1

na Ubuntu 12.04.

To rozwiązało.


Aktualizacja:

Użyj najnowszej wersji:

sudo apt-get install postgresql-9.3 postgresql-server-dev-9.3
Lasse Skindstad Ebert
źródło
Naprawiłem problem dla mnie, ale na komputerze Mac (z homebrew) musiałem uruchomić to polecenie:brew install postgresql
gMale
19

To zadziałało w moim przypadku:

sudo apt-get install libpq-dev

Użyłem:

  • Ubuntu 14.04.2 LTS
  • Ruby 2.2.2
  • Szyny 4.2.1
Zainal
źródło
12

Jeśli używasz Postgres.app na Macu, możesz rozwiązać ten problem raz na zawsze w ten sposób:

Po pierwsze gem uninstall pg, następnie edytować ~/.bash_profilelub ~/.zshrcplik lub równoważne i dodać:

# PostgreSQL bin path
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin

Wtedy bundle installi gem install pgpowinny działać zgodnie z oczekiwaniami.

DuArme
źródło
Dzięki, działa również przy użyciu browaru zainstalowanego postgreSQL # ścieżka eksportu bin PostgreSQL PATH = $ PATH: /usr/local/Cellar/postgresql/9.5.0/bin/
Benoit
9
$ PATH=$PATH:/Library/PostgreSQL/9.1/bin sudo gem install pg

zamień 9.1 na wersję zainstalowaną w twoim systemie.

jstnno
źródło
1
Pomogło mi to na komputerze Mac, ktoś wie, jaka jest domyślna ścieżka i jak ją zmienić?
Steve
Działa na OS X Maveric
Marek
5

W systemie Mac OS (El Capitano). Możesz po prostu użyć:brew install postgresql

Jones Agyemang
źródło
1
Tak! To wszystko, czego potrzebowałem! Zainstaluj na czystym OS X, bez Postgres.app
Lane Rettig
3

Klejnot pg wymaga, aby biblioteki klienckie postgresql były powiązane. Ten błąd zwykle oznacza, że ​​nie można znaleźć bibliotek Postgres. Albo nie masz ich zainstalowanych, albo może być konieczne przekazanie --with-pg-dir = do instalacji gem.

Winfield
źródło
3

Dla użytkowników komputerów Mac

PATH=$PATH:/Library/PostgreSQL/9.4/bin/ gem install pg

To powinno załatwić sprawę

Ronak Jain
źródło
3

Użyj z ARCHflagą.

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

Rozwiązało to ten sam problem, który masz.

Aman Chhabra
źródło
2

Chciałbym ten problem na Linux Mint (Maya) 13, i naprawiłem go, instalując postgresql i postgresql-server:

apt-get install postgresql-9.1 

sudo apt-get install postgresql-server-dev-9.1
SAIDI Belkacem
źródło
2

Bez względu na to, z jakiego systemu operacyjnego korzystasz, spójrz na plik dziennika, "Makefile"aby zobaczyć, co się dzieje, zamiast ślepo instalować rzeczy.

W moim przypadku MAC OS plik dziennika znajduje się tutaj:

/Users/za/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/pg-1.0.0/mkmf.log

Dzienniki wskazały, że nie można utworzyć pliku make z następujących powodów:

Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers

Wewnątrz pliku mkmf.log zobaczysz, że nie można znaleźć wymaganych bibliotek do ukończenia kompilacji.

checking for pg_config... no
Can't find the 'libpq-fe.h header
blah blah

Po uruchomieniu "brew install postgresql"widzę wszystkie wymagane biblioteki:

za:myapp za$ cat /Users/za/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/pg-1.0.0/mkmf.log | grep yes
find_executable: checking for pg_config... -------------------- yes
find_header: checking for libpq-fe.h... -------------------- yes
find_header: checking for libpq/libpq-fs.h... -------------------- yes
find_header: checking for pg_config_manual.h... -------------------- yes
have_library: checking for PQconnectdb() in -lpq... -------------------- yes
have_func: checking for PQsetSingleRowMode()... -------------------- yes
have_func: checking for PQconninfo()... -------------------- yes
have_func: checking for PQsslAttribute()... -------------------- yes
have_func: checking for PQencryptPasswordConn()... -------------------- yes
have_const: checking for PG_DIAG_TABLE_NAME in libpq-fe.h... -------------------- yes
have_header: checking for unistd.h... -------------------- yes
have_header: checking for inttypes.h... -------------------- yes
checking for C99 variable length arrays... -------------------- yes
Zee
źródło
2

Ten irytujący problem z PG mam od lat. Stworzyłem tę treść, aby pomóc.

Następujące polecenie zawsze działa dla mnie.

# Substitute Postgres.app/Contents/Versions/9.5 with appropriate version number
sudo ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config

gist: https://gist.github.com/sharnie/5588340cf023fb177c8d

Sharnie, bardzo
źródło
1

Musiałem to zrobić na CentOS 5.8. Uruchamianie bundle installpowodowało problemy, ponieważ nie mogłem zmusić go do użycia określonej wersji PG.

Nie mogę yum erase postgresql postgresql-devel , z powodu problemów z zależnością (usunęłoby to php, http itp.)

Rozwiązanie? Mess $ PATH tymczasowo, aby dać pierwszeństwo aktualizacji pgsql zamiast domyślnej:

export PATH=/usr/pgsql-9.2/bin:$PATH
bundle install

Zasadniczo dzięki powyższym poleceniom będzie on wyglądał /usr/pgsql-9.2/bin/pg_configprzed tym, który wprowadzono/usr/bin/pg_config

chrześcijanin
źródło
1

Jeśli używasz jruby zamiast ruby, będziesz mieć podobne problemy podczas instalowania klejnotu pg. Zamiast tego musisz zainstalować adapter:

gem 'activerecord-jdbcpostgresql-adapter'
Nuri
źródło
1

Na komputerze Mac brew install postgresTObundle install

Yar HTUT
źródło
0

Po prostu przejdź tutaj, aby sprawdzić, czy Twoja wersja pg obsługuje platformę Win32, a następnie użyj tego polecenia, aby zainstalować:

gem zainstaluj pg -v 0.14.1 --platform = x86-mingw32

revskill
źródło