Rails 3 - tidak dapat menginstal pg gem

98

Ketika saya mencoba menjalankan bundle (bundle install), saya selalu mendapatkannya

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.

Saya menggunakan Mac OS X 10.6, versi PostgreSQL yang diinstal adalah 9.1. Saya menemukan masalahnya ada di libpq-dev , bagaimana saya bisa menginstal / memperbaikinya?

pengguna984621
sumber
2
bagaimana Anda menginstal postgres di mac Anda?
shingara
1
cara ini
pengguna984621
penginstal on_click? Flink? atau MacPort?
shingara
Saya mencoba menginstalnya dengan cara ini:, sudo port install libpq-devtetapi masalah lain - Error: Port libpq-dev not found To report a bug, see <http://guide.macports.org/#project.tickets>. Itu buruk, masih ada masalah ...
pengguna984621
1
Lihat pertanyaan ini: [di sini] [1] [1]: stackoverflow.com/questions/10321189/…
banditKing

Jawaban:

78

Seperti yang dinyatakan dalam log kesalahan Anda, Anda harus meneruskan jalur ke pg_config. Coba instal permata menggunakan:

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

Jika Anda tidak yakin di mana pg_config Anda, dan dengan asumsi Anda menggunakan Linux atau Mac, Anda dapat menjalankan perintah berikut:

which pg_config

Pg-config Anda dapat berada di lokasi yang berbeda tergantung pada bagaimana Anda menginstal postgres.

Ethan
sumber
Sebagai catatan, paket biner dari situs Postgres tidak berisi header pengembangan atau pg_configprogram.
tadman
3
Paket binary dari sini: enterprisedb.com/products-services-training/pgdownload#osx pasti tidak mengandung pg_config(misalnya, di /Library/PostgreSQL/9.1/bin/pg_configuntuk 9.1.x) dan header pembangunan. Itu yang saya gunakan untuk menguji pgpermata dalam pengembangan.
Michael Granger
8
Bukankah which pg_configlebih cepat dari find / -name pg_config?
Justin D.
Membuat sedikit perubahan pada argumen baris perintah Anda. Mengganti versi dengan versi Anda saat ini seharusnya berfungsi dengan baik. Ini baris perintah saya: 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
Di OSX Anda juga dapat menggunakan brew untuk mendapatkan header brew install libpqxxdan semuanya akan baik-baik saja.
Vetsin
99

jika Anda menjalankan Linux, Anda mungkin tertarik dengan apa yang berhasil untuk saya:

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

Kemudian

gem install pg

kemudian

bundle install

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

EE33
sumber
1
terima kasih, karena dalam kasus saya - tidak perlu menjalankan bundle gem install pg
valk
21
Tidak cocok untuk OS X.
dfrankow
1
Bekerja untuk saya pada November 2013 menjalankan Ubuntu 13.04!
Starkers
mengapa ini memiliki begitu banyak suara positif padahal jelas untuk OS yang salah?
sevenseacat
1
@sevenseacat itu dengan jelas menyatakan OS yang harus digunakan. Dan jelas banyak orang dengan OS Linux menemukan jawaban ini ketika mereka meneliti masalah ini.
EE33
57

Jika Anda menggunakan Postgress.app maka Anda akan menginginkan akses ke alat baris perintahnya . Masukkan baris berikut di terminal Anda atau profil PATH Anda :

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

gem install pgsekarang harus bekerja. (Inilah yang berhasil untuk saya.)

Catatan Jalur versi baru terlihat seperti:

/Applications/Postgres.app/Contents/Versions/<version>/bin
Ari
sumber
3
Terima kasih banyak! Saya menghabiskan setengah jam melalui hal-hal yang tidak berhasil dan akhirnya menemukan ini terkubur di sini. : D
Peter Brown
1
Solusi hebat yang tidak membutuhkan minuman.
lucian303
7
Ketahuilah bahwa patch Postgre.app berubah pada versi 93. sekarang: /Applications/Postgres93.app/Contents/MacOS/bin
Alain
2
Ini berhasil untuk saya, meskipun tempat sampah saya berada di tempat yang sangat berbeda -> /Library/PostgreSQL/9.3/bin
Yeremia
5
Ini sekarang - /Applications/Postgres.app/Contents/Versions/9.3/binpada 9.3.5 jika Anda menggunakan Postgres.app
Ashley
21

Jika Anda memiliki homebrew, cukup ketik:

$ brew instal postgresql

Jika Anda tidak memilikinya, unduh ketikan ini di terminal Anda:

ruby -e "$ (curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install )"

pengguna2373148
sumber
12

Cari libpq:

brew search libpq

Haruskah keluaran libpqxx

Kemudian coba instal:

brew install libpqxx
jlucasps
sumber
8

Anda hanya perlu menginstal libpq-dev:

sudo apt-get install libpq-dev

Maka permata harus dipasang dengan baik.

Travis Reeder
sumber
8
Tidak cocok untuk OS X.
dfrankow
Dalam kasus saya, hanya ini yang membantu. Terima kasih!
kovpack
7

Ikuti petunjuk pasca-instalasi: http://postgresapp.com/documentation/configuration-ruby.html

Untuk menginstal pg gem, pastikan Anda telah mengatur $ PATH Anda dengan benar (seperti yang ditentukan di http://postgresapp.com/documentation/cli-tools.html ), lalu jalankan

sudo ARCHFLAGS="-arch x86_64" gem install pg

Saya sangat merekomendasikan membaca kedua halaman tersebut. Hanya membaca sepintas dan kehilangan 1 jam dalam hidup saya. Bacalah, masalah terpecahkan.

CGK
sumber
Bekerja pada OSX 10.9.5, versi ruby ​​default 2.0, versi lokal rbenv 1.9.3.
jlucasps
Bekerja pada OSX 10.11 THANKS
Yarin
Bekerja pada OSX 10.11.4. Terima kasih!!
Martyn Chamberlin
3

Masalah yang saya alami adalah karena suatu alasan ia mencoba mengkompilasi dengan /usr/bin/gcc-4.2. Saya mengetahuinya dengan mengubah try_cpp di mkmf.rb (yang saya lihat di pelacakan tumpukan) untuk memunculkan pengecualian dengan baris kompilasi yang gagal.

Saya menghubungkan gcc dengan lembut ke gcc-4.2 dan berhasil:

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

Mengapa mencoba menggunakan gcc-4.2? Tidak ada ide.

Baris kompilasi sebenarnya:

/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)
dfrankow.dll
sumber
3

Saya mendapat masalah yang sama tetapi Postgres saya diinstal

/Library/PostgreSQL/9.3

Memperbarui profil ~ / .bash_ dengan menambahkan:

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

Buka terminal baru, jalankan bundle updatedan juga berfungsi untuk saya. Terima kasih Ari.

Trang Tung Nguyen
sumber
tetapi bagi saya untuk bekerja perlu memeriksa versi kemudian mengekspor PATH = / Applications / Postgres.app / Contents / Versions / 9.4 / bin: $ PATH
Prateep Kul
1

Anda dapat mengatur opsi build config bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_configdan menggunakannya gem install pgtanpa opsi apa pun (jalur ke pg_config mungkin berbeda untuk Anda, yang ini untuk Postgresapp 9.3.5.0)

Konstantine Kalbazov
sumber
1

Saya memiliki masalah yang sama di mesin KDE openSUSE13.1 saya. Sebelum masalah itu saya temui, saya hanya menginstal paket postgresqldan postgresql-servermenggunakan zypperperintah. Kemudian instal lagi 2 paket lagi:

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

Lalu, saya lari lagi bundle install, dan sukses !!!

Arup Rakshit
sumber
0

Pertama, hapus instalan versi Homebrew apa pun. Opsi --force membuatnya menghapus semua versi.

brew rm postgresql --force

Ubah jalur yang sesuai untuk versi Anda.

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

Edit / etc / profile dan hapus baris yang mereferensikan "postgres".

nano /etc/profile

Instal PostgresSQL

brew update
brew install postgresql

Instal de PG GEM

gem install pg

Itu dia. Salam.

pabloverd
sumber
0

Pertama-tama Anda dapat memeriksa untuk melihat apakah Anda memiliki file postrgresql di terminal Anda dengan membuka file lib. pergi cd ~ / opt / local / lib / lalu ketik ls dan tombol enter. Ini akan menunjukkan kepada Anda daftar semua file yang terletak di direktori lib.

1.jika Anda belum memiliki postreseql, Anda dapat mendownload melalui macports. sudo port menginstal postgresql93 @ 9.3.2_1

Sekarang cd kembali ke folder Anda yang Anda coba bundel instal

  1. membuat pg Anda berfungsi dengan file postgesql yang Anda miliki atau baru saja mengunduh gem install pg - --with-pg-config = / opt / local / lib / postgresql93 / bin / pg_config

sekarang jalankan bundle install

pengguna3256740
sumber
0

Di Fedora:

dnf install postgresql-devel
Mayuresh Srivastava
sumber
0

Apa yang berhasil bagi saya di El Capitan adalah memutakhirkan ruby ​​dari default sistem ke 2.3.1 tampaknya menemukan pustaka yang benar yang pgdibutuhkan permata.

Abe Petrillo
sumber