Rails 3 - ไม่สามารถติดตั้ง pg gem


98

เมื่อฉันพยายามเรียกใช้บันเดิล (การติดตั้งบันเดิล) ฉันมักจะได้รับ

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.

ฉันใช้ Mac OS X 10.6 เวอร์ชันของ PostgreSQL ที่ติดตั้งคือ 9.1 ฉันพบปัญหาอยู่ในlibpq-devฉันจะติดตั้ง / แก้ไขได้อย่างไร


2
คุณติดตั้ง postgres บน Mac ของคุณได้อย่างไร?
shingara

1
ทางนี้
user984621

ตัวติดตั้ง on_click? ฟลิงค์? หรือ MacPort?
shingara

ฉันพยายามติดตั้งโดยวิธีนี้: sudo port install libpq-devแต่ปัญหาอื่น - Error: Port libpq-dev not found To report a bug, see <http://guide.macports.org/#project.tickets>. แย่มากยังมีปัญหาอยู่บ้าง ...
user984621

1
ดูคำถามนี้: [ที่นี่] [1] [1]: stackoverflow.com/questions/10321189/…
banditKing

คำตอบ:


78

ตามที่ระบุไว้ในบันทึกข้อผิดพลาดของคุณคุณต้องผ่านเส้นทางไปยัง pg_config ลองติดตั้งอัญมณีโดยใช้:

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

หากคุณไม่แน่ใจว่า pg_config ของคุณอยู่ที่ไหนและสมมติว่าคุณใช้ Linux หรือ Mac คุณสามารถเรียกใช้คำสั่งต่อไปนี้:

which pg_config

pg-config ของคุณอาจอยู่ในตำแหน่งต่างๆกันขึ้นอยู่กับว่าคุณติดตั้ง postgres อย่างไร


โปรดทราบว่าแพ็คเกจไบนารีจากไซต์ Postgres ไม่มีส่วนหัวของการพัฒนาหรือpg_configโปรแกรม
tadman

3
แพคเกจไบนารีจากที่นี่: enterprisedb.com/products-services-training/pgdownload#osxแน่นอนที่สุดจะมีทั้งpg_config(เช่นที่/Library/PostgreSQL/9.1/bin/pg_configสำหรับ 9.1.x) และส่วนหัวการพัฒนา มันคือสิ่งที่ฉันใช้ทดสอบpgอัญมณีในการพัฒนา
Michael Granger

8
จะไม่which pg_configเร็วกว่าfind / -name pg_configเหรอ?
Justin D.

ทำการปรับแต่งเล็กน้อยกับอาร์กิวเมนต์บรรทัดคำสั่งของคุณ การเปลี่ยนเวอร์ชันด้วยเวอร์ชันปัจจุบันของคุณน่าจะใช้ได้ นี่คือบรรทัดคำสั่งของฉัน: 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
ใน OSX คุณอาจใช้การชงเพื่อรับส่วนหัวbrew install libpqxxและทุกอย่างจะดี
Vetsin

99

หากคุณใช้งานบน Linux คุณอาจสนใจสิ่งที่ใช้ได้ผลสำหรับฉัน:

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

แล้ว

gem install pg

แล้ว

bundle install

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


1
ขอบคุณในกรณีของฉัน - ไม่จำเป็นต้องเรียกใช้ Bundle gem install pg
valk

21
ไม่เหมาะสำหรับ OS X
dfrankow

1
ทำงานให้ฉันเมื่อเดือนพฤศจิกายน 2013 ที่ใช้ Ubuntu 13.04!
Starkers

เหตุใดจึงมีการโหวตเพิ่มจำนวนมากเมื่อเห็นได้ชัดว่าเป็นระบบปฏิบัติการที่ไม่ถูกต้อง
sevenseacat

1
@sevenseacat ระบุอย่างชัดเจนถึงระบบปฏิบัติการที่ควรใช้ และเห็นได้ชัดว่าผู้คนจำนวนมากที่มีระบบปฏิบัติการ Linux กำลังค้นหาคำตอบนี้เมื่อพวกเขาค้นคว้าปัญหานี้
ศ. 33

57

หากคุณกำลังใช้Postgress.appแล้วคุณจะต้องการเข้าถึงของเครื่องมือบรรทัดคำสั่ง ป้อนบรรทัดต่อไปนี้ในเทอร์มินัลหรือโปรไฟล์เส้นทางของคุณ:

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

gem install pgตอนนี้ควรใช้งานได้แล้ว (นี่คือสิ่งที่ได้ผลสำหรับฉัน)

หมายเหตุเส้นทางเวอร์ชันใหม่ดูเหมือนว่า:

/Applications/Postgres.app/Contents/Versions/<version>/bin

3
ขอบคุณมาก! ฉันใช้เวลาครึ่งชั่วโมงไปกับสิ่งที่ไม่ได้ผลและในที่สุดก็พบว่าสิ่งนี้ถูกฝังอยู่ที่นี่ : D
Peter Brown

1
ทางออกที่ดีที่ไม่ต้องชง
lucian303

7
โปรดทราบว่าแพตช์ Postgre.app มีการเปลี่ยนแปลงในเวอร์ชัน 93 ตอนนี้: /Applications/Postgres93.app/Contents/MacOS/bin
Alain

2
สิ่งนี้ใช้ได้ผลสำหรับฉันแม้ว่าถังขยะของฉันจะอยู่คนละที่ -> /Library/PostgreSQL/9.3/bin
Jeremiah

5
นี่คือตอนนี้ - /Applications/Postgres.app/Contents/Versions/9.3/binณ 9.3.5 หากคุณใช้ Postgres.app
Ashley



8

คุณต้องติดตั้งเท่านั้นlibpq-dev:

sudo apt-get install libpq-dev

จากนั้นอัญมณีควรติดตั้งได้ดี


8
ไม่เหมาะสำหรับ OS X
dfrankow

ในกรณีของฉันสิ่งนี้ช่วยได้เท่านั้น Thanx!
kovpack

7

ทำตามคำแนะนำหลังการติดตั้ง: http://postgresapp.com/documentation/configuration-ruby.html

ในการติดตั้ง pg gem ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่า $ PATH ของคุณอย่างถูกต้อง (ตามที่ระบุในhttp://postgresapp.com/documentation/cli-tools.html ) จากนั้นเรียกใช้

sudo ARCHFLAGS="-arch x86_64" gem install pg

ฉันแนะนำอย่างยิ่งให้อ่านทั้งสองหน้า เพียงแค่กินมันและเสียชีวิตไป 1 ชั่วโมง อ่านพวกเขาแก้ไขปัญหา


ทำงานบน OSX 10.9.5, ทับทิมเริ่มต้นเวอร์ชัน 2.0, rbenv เวอร์ชันท้องถิ่น 1.9.3
jlucasps

ทำงานบน OSX 10.11 THANKS
Yarin

ทำงานบน OSX 10.11.4 ขอบคุณ !!
Martyn Chamberlin

3

ปัญหาที่ฉันมีคือด้วยเหตุผลบางอย่างมันพยายามรวบรวมด้วย /usr/bin/gcc-4.2 ฉันพบว่าโดยการเปลี่ยน try_cpp ใน mkmf.rb (ซึ่งฉันเห็นในการติดตามสแต็ก) เพื่อเพิ่มข้อยกเว้นกับบรรทัดคอมไพล์ที่ล้มเหลว

ฉันซอฟต์ลิงค์ gcc กับ gcc-4.2 และใช้งานได้:

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

เหตุใดจึงพยายามใช้ gcc-4.2 ไม่มีความเห็น.

บรรทัดคอมไพล์จริง:

/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

ฉันพบปัญหาเดียวกัน แต่ Postgres ของฉันถูกติดตั้งใน

/Library/PostgreSQL/9.3

อัปเดต ~ / .bash_profile โดยเพิ่ม:

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

เปิดเทอร์มินัลใหม่เรียกใช้bundle updateและมันก็ใช้ได้สำหรับฉัน ขอบคุณอารีย์


แต่สำหรับฉันในการทำงานต้องตรวจสอบเวอร์ชันจากนั้นส่งออก PATH = / Applications / Postgres.app / Contents / Versions / 9.4 / bin: $ PATH
Prateep Kul

1

คุณสามารถตั้งค่าตัวเลือก build config bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_configและใช้gem install pgโดยไม่มีตัวเลือกใด ๆ (พา ธ ไปยัง pg_config อาจแตกต่างกันสำหรับคุณอันนี้มีไว้สำหรับ Postgresapp 9.3.5.0)


1

ฉันมีปัญหาเดียวกันในเครื่อง openSUSE13.1 KDE ของฉัน ก่อนหน้านั้นฉันพบปัญหาฉันได้ติดตั้งเฉพาะแพ็คเกจpostgresqlและpostgresql-serverใช้zypperคำสั่ง จากนั้นติดตั้งอีก 2 แพ็คเกจเพิ่มเติม:

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

จากนั้นฉันก็วิ่งอีกครั้งbundle installและประสบความสำเร็จ !!!


0

สำหรับโซลูชัน OSX ที่ใช้งานได้โปรดดูคู่มือนี้http://krugerdavid.com/journal/how-to-install-xcode-homebrew-git-rvm-postgresql-ruby-1-9-3-on-snow-leopard/

จะแนะนำคุณตลอดการติดตั้ง PostgreSQL โดยใช้ homebrew ทดสอบและใช้งานได้สำหรับฉันบน OSX 10.8.3, PostgreSQL 9.2.3 และ Ruby 2.0.0-p0


0

ขั้นแรกให้ถอนการติดตั้ง Homebrew เวอร์ชันใดก็ได้ ตัวเลือก --force ทำให้ถอนการติดตั้งทุกเวอร์ชัน

brew rm postgresql --force

เปลี่ยนเส้นทางตามเวอร์ชันของคุณ

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

แก้ไข / etc / profile และลบบรรทัดที่อ้างอิง "postgres"

nano /etc/profile

ติดตั้ง PostgresSQL

brew update
brew install postgresql

ติดตั้ง PG GEM

gem install pg

แค่นั้นแหละ. ความนับถือ.


0

ก่อนอื่นคุณสามารถตรวจสอบว่าคุณมีไฟล์ postrgresql ในเทอร์มินัลหรือไม่โดยไปที่ไฟล์ lib ไปที่ cd ~ / opt / local / lib / จากนั้นพิมพ์ ls และปุ่ม enter นี่จะแสดงรายการไฟล์ทั้งหมดที่อยู่ในไดเร็กทอรี lib

1. หากคุณไม่มี postreseql คุณสามารถดาวน์โหลดผ่าน macports sudo port ติดตั้ง postgresql93 @ 9.3.2_1

ตอนนี้ cd กลับเข้าไปในโฟลเดอร์ของคุณซึ่งคุณกำลังพยายามรวมกลุ่มติดตั้ง

  1. ทำให้ pg ของคุณทำงานกับไฟล์ postgesql ของคุณที่คุณมีหรือเพิ่งดาวน์โหลด gem install pg - --with-pg-config = / opt / local / lib / postgresql93 / bin / pg_config

ตอนนี้รันการติดตั้งบันเดิล



0

สิ่งที่ได้ผลสำหรับฉันใน El Capitan คือการอัปเกรดทับทิมจากค่าเริ่มต้นของระบบเป็น 2.3.1 ดูเหมือนว่าจะพบไลบรารีที่ถูกต้องที่pgอัญมณีต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.