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


219

ฉันลองใช้gem install pgแต่ดูเหมือนจะใช้งานไม่ได้

gem install pg ให้ข้อผิดพลาดนี้

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

3
หากคุณใช้ Mac ให้ทำตามบทช่วยสอนนี้: matthew.mceachen.us/blog/ ......
Noah W. Smith เมื่อ

1
@NatchiQ ลิงก์เสียไหม
0112

ในกรณีของฉันlibpqไม่พบบันทึกข้อผิดพลาดดังนั้นฉันจึงติดตั้งsudo apt install postgresql postgresql-contrib libpq-dev pgadmin3 -y
Raj

คำตอบ:



388

ฉันมีปัญหานี้สิ่งนี้ได้ผลกับฉัน:

ติดตั้งแพ็คเกจ postgresql-devel สิ่งนี้จะแก้ปัญหาของ pg_config ที่หายไป

sudo apt-get install libpq-dev

139
apt-get install libpq-devทำงานให้ฉันด้วย ขอบคุณสำหรับคำใบ้
Ryanmt

5
การยืนยันจากหน้าแรกของ pg gem Wiki : "บน Ubuntu, / usr / bin / pg_config จัดทำโดยแพ็คเกจ libpq-dev"
Mark Berry

17
แล้ว mac ล่ะ
Fivell

23
@Fivell ช้าไปกับเกมด้วยคำตอบที่นี่ แต่ถ้าคุณติดตั้ง Homebrew คุณbrew install postgresqlจะได้รับแพ็คเกจที่คุณต้องการ
Alex LaFroscia

19
@ ไฟลองbrew install postgresqlบน mac
Mahattam

91

ปัญหาคือการพึ่งพาอัญมณีดังนั้นก่อนการติดตั้ง pg ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง "libpq-dev"

ระบบ Ubuntu:

sudo apt-get install libpq-dev

ระบบ RHEL:

yum ติดตั้ง postgresql-devel

Mac:

ชงติดตั้ง postgresql


7
คำตอบสำหรับ Mac นั้นเป็นจริง เป็นเพราะเราไม่ได้ติดตั้ง PostgreSQL ไว้ในเครื่อง
Hoang Le

บน Centos 7 yum install postgresql-develแก้ไขข้อผิดพลาดของฉันที่เกี่ยวข้องกับ pg_config สำหรับการติดตั้ง 'pg' .gem โดยวิธีการที่ผมเลือกที่จะใช้เพียงแค่เปิดตัว PostgreSQL 10
อาร์เธอร์

62

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


3
สิ่งนี้ช่วยฉัน (ใน Centos 6.2)
TuK

14
ทำงานให้ฉันใน OS X แต่มีพา ธ ไปยัง /Applications/Postgres.app/Contents/MacOS/bin/pg_config (ฉันมี Postgres.app แบบสแตนด์อโลน)
Matt

10
gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config ใน yosemite กับ Postgres App
twmulloy

ทำงาน แต่สำหรับ Mac ก่อนหน้านี้env ARCHFLAGS="-arch x86_64"เป็นตัวเปลี่ยนเกมสำหรับฉัน
Janusz Lenar

2
ฉันใช้gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_configสำหรับ OSX 10.12
Tim Krins

37

@ Winfield กล่าวว่า :

pg gem ต้องใช้ไลบรารีไคลเอ็นต์ postgresql เพื่อเชื่อมโยง ข้อผิดพลาดนี้มักจะหมายความว่าไม่พบห้องสมุด Postgres ของคุณ ไม่ว่าคุณจะไม่ได้ติดตั้งหรือคุณอาจต้องผ่านการ--with-pg-dir=ติดตั้งอัญมณีของคุณ

ยิ่งไปกว่านั้นคุณต้องการเพียง --with-pg-config=ติดตั้งมัน

บน Mac

หากมีโอกาสคุณติดตั้ง postgres ผ่านทางเว็บไซต์บันเดิลบน mac มันจะอยู่ที่ใดที่หนึ่ง /Applications/Postgres.app/Contents/Versions/9.3/binมันจะอยู่ในที่อื่นเช่น

ดังนั้นคุณจะผ่านมันในการติดตั้งพลอย:

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

หรือคุณกำหนดเส้นทางได้อย่างถูกต้อง เนื่องจากอาจมากเกินไปหากต้องการตั้งค่า PATH ชั่วคราว:

export PATH=%PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin/

2
สำหรับรุ่นเฉพาะ:gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
Dan Sandland

มีโฟลเดอร์ symlink ที่เรียกว่าlatestภายในโฟลเดอร์เนื้อหา Postgres.app ที่มีประโยชน์ในกรณีที่ 9.3 ไม่ได้จัดส่งอีกต่อไป gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config
สตีเฟ่น Silber

24

ฉันไม่ได้ติดตั้ง postgresql ดังนั้นฉันเพิ่งติดตั้งโดยใช้

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

บน Ubuntu 12.04

สิ่งนี้แก้ไขได้


ปรับปรุง:

ใช้รุ่นล่าสุด:

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

แก้ไขปัญหาให้ฉัน แต่ใช้ mac (กับ homebrew) ฉันต้องใช้คำสั่งนี้:brew install postgresql
gMale

19

สิ่งนี้ทำงานในกรณีของฉัน:

sudo apt-get install libpq-dev

ฉันใช้:

  • Ubuntu 14.04.2 LTS
  • ทับทิม 2.2.2
  • Rails 4.2.1

12

หากคุณใช้Postgres.appบน Mac คุณสามารถแก้ไขปัญหานี้ได้เพียงครั้งเดียวและเช่นนี้:

ก่อนอื่นgem uninstall pgจากนั้นแก้ไข~/.bash_profileหรือ~/.zshrcไฟล์ของคุณหรือเทียบเท่าแล้วเพิ่ม:

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

จากนั้นbundle installและgem install pgควรทำงานได้ตามที่คาดไว้


ขอขอบคุณมันยังใช้งานได้โดยใช้ brew ที่ติดตั้ง postgreSQL # เส้นทางการส่งออกถัง bin PostgreSQL PATH = $ PATH: /usr/local/Cellar/postgresql/9.5.0/bin/
เบอนัวต์

9
$ PATH=$PATH:/Library/PostgreSQL/9.1/bin sudo gem install pg

แทนที่ 9.1 สำหรับเวอร์ชันที่ติดตั้งบนระบบของคุณ


1
สิ่งนี้ช่วยฉันใน mac ใคร ๆ ก็รู้ว่าเส้นทางเริ่มต้นคืออะไรและจะเปลี่ยนอย่างไร
Steve

ทำงานบน OS X Maveric
Marek Kirejczyk

5

บน Mac OS (El Capitano) คุณสามารถใช้:brew install postgresql


1
ใช่ นี่คือทั้งหมดที่ฉันต้องการ! ติดตั้งบน OS X ที่สะอาดไม่มี Postgres.app
Lane Rettig

3

pg gem ต้องใช้ไลบรารีไคลเอ็นต์ postgresql เพื่อเชื่อมโยง ข้อผิดพลาดนี้มักจะหมายความว่าไม่พบห้องสมุด Postgres ของคุณ คุณอาจไม่ได้ติดตั้งหรือคุณอาจต้องผ่าน --with-pg-dir = ไปยังการติดตั้งอัญมณีของคุณ



3

ใช้กับARCHธง

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

วิธีนี้แก้ไขปัญหาเดียวกับที่คุณมี


2

ฉันต้องการปัญหานี้ใน Linux Mint (Maya) 13 และฉันแก้ไขด้วยการติดตั้ง postgresql และ postgresql-server:

apt-get install postgresql-9.1 

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

2

ไม่ว่าคุณใช้ระบบปฏิบัติการใดอยู่ให้ดูที่ไฟล์บันทึกของ"Makefile"เพื่อดูว่าเกิดอะไรขึ้นแทนที่จะติดตั้งสิ่งต่าง ๆ

ในกรณีของฉัน MAC OS ไฟล์บันทึกอยู่ที่นี่:

/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

บันทึกระบุว่าไม่สามารถสร้างไฟล์ make ได้เนื่องจากสาเหตุต่อไปนี้:

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

ภายใน mkmf.log คุณจะเห็นว่าไม่สามารถหาห้องสมุดที่ต้องการเพื่อสร้างงานให้เสร็จ

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

หลังจากทำงาน"brew install postgresql"ฉันจะเห็นไลบรารี่ที่จำเป็นทั้งหมดอยู่ที่นั่น:

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

2

ฉันพบปัญหาที่น่ารำคาญกับ PG มาหลายปีแล้ว ฉันสร้างส่วนสำคัญนี้เพื่อช่วย

คำสั่งต่อไปนี้ใช้งานได้สำหรับฉันเสมอ

# 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

สรุปสาระสำคัญ: https://gist.github.com/sharnie/5588340cf023fb177c8d


1

ฉันต้องทำสิ่งนี้บน CentOS 5.8 การทำงานbundle installยังคงทำให้เกิดปัญหาเนื่องจากฉันไม่สามารถบังคับให้ใช้รุ่น PG เฉพาะได้

ฉันทำไม่ได้ yum erase postgresql postgresql-develอย่างใดอย่างหนึ่งเนื่องจากปัญหาการพึ่งพา (มันจะลบ php, http ฯลฯ )

การแก้ไขปัญหา? Mess $ PATH เป็นการชั่วคราวเพื่อให้ความพึงพอใจกับการอัพเดท pgsql แทนที่จะเป็นค่าเริ่มต้น:

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

โดยทั่วไปด้วยคำสั่งข้างต้นมันจะ/usr/pgsql-9.2/bin/pg_configดูก่อนหนึ่งใน/usr/bin/pg_config


1

หากคุณใช้ jruby แทน ruby ​​คุณจะพบปัญหาที่คล้ายกันเมื่อติดตั้ง pg gem คุณต้องติดตั้งอะแดปเตอร์แทน:

gem 'activerecord-jdbcpostgresql-adapter'


0

คุณเพิ่งไปที่นี่เพื่อดูว่าเวอร์ชั่น pg ของคุณรองรับแพลตฟอร์ม Win32 หรือไม่จากนั้นใช้คำสั่งนี้เพื่อติดตั้ง:

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

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