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?


2
bagaimana Anda menginstal postgres di mac Anda?
shingara


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.


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


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

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


12

Cari libpq:

brew search libpq

Haruskah keluaran libpqxx

Kemudian coba instal:

brew install libpqxx

8

Anda hanya perlu menginstal libpq-dev:

sudo apt-get install libpq-dev

Maka permata harus dipasang dengan baik.


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.


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)

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.


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)


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 !!!



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.


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



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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.