Menginstal PG gem pada OS X - kegagalan membangun ekstensi asli

183

Tampaknya banyak orang lain yang mengalami masalah dalam menginstal pg gem. Tidak ada solusi yang diajukan untuk orang lain yang berhasil bagi saya.

Saya telah mencoba menginstal permata pg dan postgres.app. Permata pg tidak mau dipasang. Kesalahan pertama yang saya dapatkan adalah:

Terjadi kesalahan saat menginstal pg (0.17.0), dan Bundler tidak dapat melanjutkan. Pastikan itu gem install pg -v '0.17.0'berhasil sebelum bundling.

Saran penginstalan tentang menunjuk gem my install ke config for pg gagal dengan pesan kesalahan berikut (yang banyak dijumpai di forum ini):

Failed to build native extensions... Results logged to /Users/melanie/.rvm/gems/ruby-1.9.3-p448/gems/pg-0.17.0/ext/gem_make.out

Saya tidak tahu bagaimana menemukan atau mengakses file log ini untuk mencari petunjuk lebih lanjut.

Saya juga mendapatkan pesan kesalahan (perintah tidak ditemukan) ketika saya mencoba menggunakan perintah install sudo apt-get. Saya telah menjelajahi forum ini selama 6 jam terakhir, mencoba setiap saran untuk membuat pg bekerja dengan proyek rel saya.

Saya tidak dapat menemukan saran tentang cara mengubah jalur, atau secara khusus, perubahan apa yang diperlukan. Saya which pg_configmengembalikan sumber file. Saya telah menggunakannya dengan perintah untuk menginstal pg menggunakan konfigurasi itu. Itu gagal.

Ada begitu banyak orang yang memiliki masalah dengan ini. Banyak jawaban menyarankan homebrew. Saya harus menghapus itu karena memunculkan masalah lain.

Mel
sumber
1
Hai, beberapa pertanyaan yang akan membantu Anda: - Anda menggunakan Mac, bukan? Benar salah dengan homebrew? (ps, seperti yang Anda catat, apt-get hanya untuk Ubuntu (dan sepupu berbasis-Debiannya)) - versi postgres apa yang Anda miliki? coba jalankan psql -vdi shell Anda. - versi ruby ​​apa yang Anda jalankan? Sepertinya 1.9.3, tetapi apa yang ruby -vmemberi Anda?
rmosolgo
Saya harus menambahkan, bahwa psql saya ditambahkan di: /Applications/Postgres-1.app/Contents/MacOS/bin/psql; keluar; psql (9.3.0) tetapi mana psql kembali: usr / bin / psql
Mel
Hai, terima kasih banyak untuk melihat ini. Psql saya adalah v 9.3.0 dan ruby ​​adalah v 1.9.3
Mel
1
Lihat jawaban @ paninapress untuk Postgres.app. Ini bekerja sangat baik untuk saya dan tidak perlu menginstal instance Postgres lain.
Jamon Holmgren

Jawaban:

442

Kesalahan yang sama untuk saya dan saya tidak mengalaminya sampai saya mengunduh OS X 10.9 (Mavericks). Sigh, sakit kepala OS lainnya.

Inilah cara saya memperbaikinya (dengan homebrew):

  • Instal build Xcode Tools yang lain (mengetik brew updatedi terminal akan meminta Anda memperbarui alat build Xcode)
  • brew update
  • brew install postgresql

Setelah itu gem install pgberhasil buat saya.

shicholas
sumber
7
Setelah dua hari sakit kepala mencoba untuk memperbaiki Rails db saya setelah upgrade Mavericks, ini memperbaikinya untuk saya, terima kasih banyak.
Deborah
4
Ini bekerja untuk saya juga - pada instalasi Mavericks baru. Terima kasih!
marcamillion
1
Terima kasih telah menyelamatkan kewarasan saya!
Jim
1
Masih bekerja. Project ada di Ruby 2.2.0 untuk mendukung aplikasi old-ish, tetapi semuanya TERIMA KASIH.
TristanZimmerman
1
1. brew update2. brew install postgresql3. gem install pg4.bundle install
kai_onthereal
223

Jika Anda menggunakan Ubuntu, coba instal file lib berikut

sudo apt-get install libpq-dev

lalu

gem install pg

bekerja untukku.

kota pasir
sumber
4
Bekerja untuk saya juga. Saya menggunakan ubuntu 13.10.
rafaelkin
4
Pastikan Anda mengetiknya dengan benar. Bukan libpg-dev; Q-nya bukan P! Butuh 10 menit bagi saya untuk mencari tahu itu dengan cara yang sulit.
tir38
1
Untuk Amazon Linux, iniyum install postgres-devel
andrewtweber
1
Bekerja untuk saya di Ubuntu 14 !!
18bytes
6
Untuk CentOSyum install postgresql-devel
septerr
49

Saya menggunakan OS X Mavericks (versi 10.9)

dan ketika saya menjalankan di atas saya mendapat pesan berikut: Jika build PostgreSQL 9 gagal dan Anda memiliki versi 8.x diinstal.

Jadi saya menjalankan perintah berikut:

ARCHFLAGS="-arch x86_64" gem install pg

dan ini bekerja untuk saya, saya harap ini membantu seseorang :)

Jon
sumber
2
+1, saya mencoba yang lain, tetapi akhirnya saya menginstal pg oleh gem dengan solusi ini.
BMW
1
+1, juga, ini adalah solusi untuk saya juga, di mana postgresql saya sudah diinstal melalui minuman. Terima kasih Jon atas posnya.
Jason Hoekstra
5
nb Jika menginstal sebagai root (karena alasan apapun), sudo pergi sebelum variabel:sudo ARCHFLAGS="-arch x86_64" gem install pg
Noach Magedman
Sebenarnya, saya membutuhkan ini setiap kali saya menjalankan bundle installjadi saya memasukkannya ke dalam ~/.bash_profilesebagai ekspor :)
Ja͢ck
42

Ok saya juga punya masalah ini (psql adalah v 9.3.0 dan ruby ​​adalah v 2.1.2) dan solusi yang bekerja untuk saya adalah pengaturan pengaturan konfigurasi bundel pertama:

bundle config build.pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

Jawaban ini akhirnya membantu saya mengetahuinya: https://stackoverflow.com/a/9235107/3546680

Paninapress
sumber
6
Metode ini lebih disukai jika Anda menggunakan postgres.app. Menggunakan Homebrew dapat memperbaiki masalah ekstensi asli, tetapi memiliki dua aplikasi postgres akan menciptakan konflik (seperti alokasi port) Lihat juga jawaban Sayanees di stackoverflow.com/questions/19569031/…
Epigene
4
Ini jelas jawaban yang tepat untuk Postgres.app.
Jamon Holmgren
Bekerja dengan baik pada Mojave, mencoba dengan sukses beberapa menit yang lalu.
microspino
23

Saya mencoba semuanya selama berjam-jam, tetapi yang berikut akhirnya memperbaikinya (saya menggunakan OS X 10.9.4):

  1. Instal alat baris perintah Xcode (situs Pengembang Apple)
  2. buat uninstall postgresql
  3. buat instalasi postgresql
  4. ARCHFLAGS = "- arch x86_64" permata instal hal
Ali Yazdani
sumber
Terima kasih. Saya menggunakan sudo untuk langkah 4, apakah itu hal yang buruk? Bagaimana saya bisa menghindarinya?
Roy
@ Roy - senang membantu :) - harus baik-baik saja, mungkin ingin menghindari penggunaan sudo karena saya percaya ini akan menginstalnya untuk semua pengguna, tetapi jika Anda satu-satunya pengguna pada sistem daripada yang mungkin bukan masalah besar. .
Ali Yazdani
brew uninstall postgresqldan brew install postgresqlbukan langkah-langkah yang diperlukan pada OS X 10.10 dan 10.11. Hanya gem uninstall pg(dan hapus semua versi), lalu pastikan Anda bundleatau gem install pglagi, dan ekstensi asli akan dibangun kembali dengan alat baris perintah baru untuk versi OS X ini.
Olivier Lacan
7

langkah mudah

  1. brew install postgresql
  2. gem install pg -v 'your version'
James Dela Cruz
sumber
6

Demikian pula, setelah menginstal Mavericks bundle updatemelemparkan kesalahan pada permata pg, yang hanya digunakan pada produksi dan tidak secara lokal.

Saya menggunakan Brew untuk mengelola paket-paket saya dan postgresql sudah diinstal, tetapi saya masih mendapatkan kesalahan 'no pg_config'.

Cara mengatasinya adalah dengan adil brew uninstall postgresql, kalau begitu brew install postgresql. Setelah itu saya langsung bisa berhasil lari bundle update.

Shannon Perkins
sumber
6

Saya percaya jawaban "benar" adalah untuk terlebih dahulu mengkonfigurasi PATH dengan benar untuk Postgres.app dengan menambahkan yang berikut ke ~/.profile( .zshrcatau ~/.zprofilejika menggunakan ZSH):

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin

Kemudian buka tab atau jendela baru di terminal dan instal pgpermata dengan:

ARCHFLAGS="-arch x86_64" gem install pg

Didokumentasikan di sini:

Matias Korhonen
sumber
5

Pada OSX dengan Postgres terinstal di / Aplikasi, saya cukup menjalankan perintah berikut (ubah 0.20 & 9.4 menurut versi Anda)

gem install pg -v '0.20' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config

Kamu harus punya :

Membangun ekstensi asli dengan: '--with-pg-config = / Aplikasi / Postgres.app / Contents / Versi / 9.4 / bin / pg_config' Ini bisa memakan waktu cukup lama ... Berhasil menginstal pg-0.20.

Jheren
sumber
Bisakah Anda menjelaskan mengapa kami harus menggunakan waktu tambahan tanda hubung 2 sebelum argumen sebenarnya disediakan?
Akash Agarwal
3

Saya menghabiskan satu hari dalam hal ini dan inilah cara saya memperbaikinya:

Saya menemukan bahwa nilai global build.pg diatur ke: /opt/local/lib/postgresql91/bin/pg_config dan itu bukan tempat postgres dipasang.

Saya memperbaikinya dengan mengganti nilai build.pg ke: bundle config build.pg --with-pg-config=/usr/local/Cellar/postgresql/9.4.4/bin/pg_config yang merupakan tempat instalasi postgresql saya.

HosseinToussi
sumber
1

Mencoba:

gem install pg -- --with-pg-config=`which pg_config`
Gerry
sumber
0

Terpecahkan! Saya menemukan beberapa kekurangan library untuk PostgreSQL pada sistem. Hanya dua langkah yang menyelesaikannya:

brew install postgresql

Lalu lari

gem install pg

pengguna6756462
sumber
0

Bagi yang tidak tertarik menggunakan brew.

  1. Unduh PostgreSQL aplikasi.
  2. Ikuti instruksi default macOS untuk menginstalnya.
  3. Dianjurkan untuk dijalankan PostgreSQl.
  4. Jalankan gem install pg -- --with-pg-config=/ path / ke / postgress / di / folder / aplikasi Anda / `
    • Sebagai contoh, di mesin saya itu /Applications/Postgres.app/Contents/Versions/12/bin/pg_config
Esmaeil MIRZAEE
sumber