Cài đặt PG gem trên OS X - không thể xây dựng tiện ích mở rộng gốc


183

Có vẻ như nhiều người khác đã gặp sự cố khi cài đặt đá quý pg. Không có giải pháp nào được đặt ra cho người khác đã làm việc cho tôi.

Tôi đã cố gắng cài đặt pg gem và postgres.app. Đá quý pg sẽ không cài đặt. Lỗi đầu tiên tôi nhận được là:

Đã xảy ra lỗi khi cài đặt pg (0.17.0) và Bundler không thể tiếp tục. Đảm bảo rằnggem install pg -v '0.17.0' thành công trước khi bó.

Lời khuyên cài đặt về việc trỏ cài đặt gem của tôi vào cấu hình cho pg không thành công với thông báo lỗi sau (điều mà nhiều người khác trên diễn đàn này đã gặp phải):

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

Tôi không biết cách tìm hoặc truy cập tệp nhật ký này để tìm kiếm thêm manh mối.

Tôi cũng nhận được một thông báo lỗi (không tìm thấy lệnh) khi tôi thử sử dụng lệnh sudo apt-get install. Tôi đã truy cập diễn đàn này trong 6 giờ qua, thử từng lời khuyên để pg làm việc với dự án đường ray của tôi.

Tôi không thể tìm thấy lời khuyên về cách thay đổi đường dẫn, hoặc cụ thể, những thay đổi nào là bắt buộc. Của tôiwhich pg_config trả về một nguồn tập tin. Tôi đã sử dụng lệnh đó để cài đặt pg bằng cấu hình đó. Nó thất bại.

Có rất nhiều người đã gặp rắc rối với điều này. Nhiều câu trả lời gợi ý homebrew. Tôi đã phải loại bỏ điều đó bởi vì nó đã đưa ra các vấn đề khác.


1
Xin chào, một vài câu hỏi sẽ giúp bạn giải quyết vấn đề: - Bạn đang dùng Mac phải không? Phải đi sai với homebrew? (ps, như bạn đã lưu ý, apt-get chỉ dành cho Ubuntu (và anh em họ dựa trên Debian)) - bạn có phiên bản postgres nào? Hãy thử chạy psql -vtrong vỏ của bạn. - bạn đang chạy phiên bản ruby ​​nào? Nó trông giống như 1.9.3, nhưng những gì ruby -vmang lại cho bạn?
rmosolgo

Tôi nên thêm, rằng psql của tôi được thêm vào: /Appluggest/Postgres-1.app/Contents/MacOS/bin/psql; lối ra; psql (9.3.0) nhưng psql trả về: usr / bin / psql
Mel

Xin chào, cảm ơn rất nhiều vì đã xem xét điều này. Psql của tôi là v 9.3.0 và ruby ​​là v 1.9.3
Mel

1
Xem câu trả lời của @ paninapress cho Postgres.app. Nó hoạt động rất tốt đối với tôi và không yêu cầu cài đặt một phiên bản khác của Postgres.
Jamon Holmgren

Câu trả lời:


442

Lỗi tương tự đối với tôi và tôi đã không gặp phải nó cho đến khi tôi tải xuống OS X 10.9 (Mavericks). Thở dài, đau đầu nâng cấp hệ điều hành.

Đây là cách tôi sửa nó (với homebrew):

  • Cài đặt bản dựng khác của Công cụ Xcode (nhập brew updatevào thiết bị đầu cuối sẽ nhắc bạn cập nhật công cụ xây dựng Xcode)
  • brew update
  • brew install postgresql

Sau đó gem install pglàm việc cho tôi.


7
Sau hai ngày đau đầu cố gắng sửa lỗi Rails db của tôi sau khi nâng cấp Mavericks, điều này đã sửa nó cho tôi, cảm ơn rất nhiều.
Deborah

4
Điều này cũng làm việc với tôi - trên bản cài đặt Mavericks mới. Cảm ơn!
marcamillion

1
Cảm ơn bạn đã tiết kiệm sự tỉnh táo của tôi!
Jim

1
Vẫn đang làm việc. Project nằm trên Ruby 2.2.0 để hỗ trợ một ứng dụng cũ, nhưng tất cả đều CẢM ƠN BẠN.
TristanZimmerman

1
1. brew update2. brew install postgresql3. gem install pg4.bundle install
kai_onthereal

223

Nếu bạn đang sử dụng Ubuntu, hãy thử cài đặt tệp lib sau

sudo apt-get install libpq-dev

và sau đó

gem install pg

đã làm cho tôi.


4
Làm việc cho tôi quá. Đang sử dụng Ubuntu 13.10.
rafaelkin

4
Chỉ cần chắc chắn rằng bạn gõ nó chính xác. Nó không libpg-dev; Đó là Q chứ không phải P! Tôi mất 10 phút để tìm ra điều đó một cách khó khăn.
tir38

1
Đối với Amazon Linux, nóyum install postgres-devel
andrewtweber

1
Làm việc cho tôi trên Ubuntu 14 !!
18byte

6
Dành cho CentOSyum install postgresql-devel
septerr

49

Tôi đang sử dụng OS X Mavericks (phiên bản 10.9)

và khi tôi chạy ở trên, tôi nhận được thông báo sau: Nếu các bản dựng của PostgreQuery 9 bị lỗi và bạn đã cài đặt phiên bản 8.x.

Vì vậy, tôi chạy lệnh sau:

ARCHFLAGS="-arch x86_64" gem install pg

và điều này làm việc cho tôi, tôi hy vọng điều này sẽ giúp được ai đó :)


2
+1, tôi đã thử người khác, nhưng cuối cùng tôi đã cài đặt pg bằng gem với giải pháp này.
BMW

1
+1, tương tự, đây cũng là giải pháp cho tôi, nơi postgresql của tôi đã được cài đặt qua brew. Cảm ơn Jon cho bài viết.
Jason Hoekstra

5
nb Nếu cài đặt bằng root (vì bất kỳ lý do gì), sudo đi trước biến:sudo ARCHFLAGS="-arch x86_64" gem install pg
Noach Magedman

Trên thực tế, tôi cần điều này mỗi khi tôi chạy bundle installvì vậy tôi đã đưa nó vào bên trong ~/.bash_profilenhư một bản xuất :)
Ja͢ck

42

Ok tôi cũng gặp vấn đề này (psql là v 9.3.0 và ruby ​​là v 2.1.2) và giải pháp hiệu quả cho tôi là cài đặt cài đặt cấu hình bó trước tiên:

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

Câu trả lời này cuối cùng đã giúp tôi tìm ra nó: https://stackoverflow.com/a/9235107/3546680


6
Phương pháp này được ưa thích nếu bạn sử dụng postgres.app. Sử dụng Homebrew có thể khắc phục sự cố tiện ích mở rộng gốc, nhưng có hai ứng dụng postgres sẽ tạo ra xung đột (như phân bổ cổng) Xem thêm câu trả lời của Sayanees tại stackoverflow.com/questions/19569031/iêu
Epigene

4
Đây chắc chắn là câu trả lời đúng cho Postgres.app.
Jamon Holmgren

Hoạt động tốt trên Mojave, đã thử thành công vài phút trước.
microspino

23

Tôi đã thử mọi thứ trong nhiều giờ nhưng cuối cùng sau đó đã sửa nó (Tôi đang dùng OS X 10.9.4):

  1. Cài đặt công cụ dòng lệnh Xcode (trang web dành cho nhà phát triển của Apple)
  2. bia gỡ cài đặt postgresql
  3. bia cài đặt postgresql
  4. ARCHFLAGS = "- vòm x86_64" cài đặt đá quý pg

Cảm ơn bạn. Tôi đã sử dụng sudo cho bước 4, đó có phải là một điều xấu? Làm thế nào tôi có thể tránh nó?
Roy

@Roy - rất vui khi được giúp đỡ :) - sẽ ổn thôi, có lẽ muốn tránh sử dụng sudo vì tôi tin rằng nó sẽ cài đặt nó cho tất cả người dùng, nhưng nếu bạn là người dùng duy nhất trên hệ thống thì có lẽ không phải là vấn đề lớn .
Ali Yazdani

brew uninstall postgresqlbrew install postgresqlkhông phải là các bước cần thiết trên OS X 10.10 và 10.11. Chỉ cần gem uninstall pg(và xóa tất cả các phiên bản), sau đó đảm bảo bạn bundlehoặc gem install pgmột lần nữa và các tiện ích mở rộng gốc sẽ được xây dựng lại bằng các công cụ dòng lệnh mới cho phiên bản OS X này.
Olivier Lacan


6

Tương tự, sau khi cài đặt Mavericks bundle update đã gây ra lỗi trên pg gem, chỉ được sử dụng trong sản xuất và không cục bộ.

Tôi sử dụng Brew để quản lý các gói của mình và postgresql đã được cài đặt, nhưng tôi vẫn nhận được lỗi 'no pg_config'.

Các sửa chữa là chỉ brew uninstall postgresql, sau đó brew install postgresql. Sau đó tôi đã có thể chạy thành công ngay lập tức bundle update.


6

Tôi tin rằng câu trả lời đúng của người Viking sẽ là trước tiên định cấu hình PATH chính xác cho Postgres.app bằng cách thêm vào phần sau ~/.profile( .zshrchoặc ~/.zprofilenếu sử dụng ZSH):

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

Sau đó mở một tab hoặc cửa sổ mới trong terminal và cài đặt pggem với:

ARCHFLAGS="-arch x86_64" gem install pg

Tài liệu ở đây:


5

Trên OSX với Postgres được cài đặt trong / Ứng dụng, tôi chỉ cần chạy lệnh sau (thay đổi 0,20 & 9,4 theo phiên bản của bạn)

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

Bạn nên có:

Xây dựng các tiện ích mở rộng gốc với: '--with-pg-config = / Ứng dụng / Postgres.app / Nội dung / Phiên bản / 9.4 / bin / pg_config' Việc này có thể mất một lúc ... Đã cài đặt thành công pg-0.20.


Bạn có thể giải thích lý do tại sao chúng tôi phải sử dụng dấu gạch nối thêm 2 thời gian trước khi đối số thực sự được cung cấp không?
Akash Agarwal

3

Tôi đã dành một ngày cho việc này và đây là cách tôi sửa nó:

Tôi thấy rằng giá trị toàn cầu của build.pg đã được đặt thành: /opt/local/lib/postgresql91/bin/pg_config và đó không phải là nơi postgres được cài đặt.

Tôi đã sửa nó bằng cách thay thế giá trị của build.pg thành: bundle config build.pg --with-pg-config=/usr/local/Cellar/postgresql/9.4.4/bin/pg_config đó là nơi cài đặt postgresql của tôi.



0

Đã giải quyết! Tôi thấy một số thiếu thư viện cho PostgreSQL trên hệ thống. Chỉ có hai bước giải quyết nó:

brew install postgresql

Sau đó chạy

gem install pg


0

Đối với những người không quan tâm để sử dụng brew.

  1. Tải PostgreSQLứng dụng.
  2. Làm theo hướng dẫn mặc định macOS để cài đặt nó.
  3. Đó là khuyến khích để chạy PostgreSQl.
  4. Chạy gem install pg -- --with-pg-config=/ đường dẫn / đến / gửi qua / trong / của bạn / ứng dụng / thư mục / `
    • Ví dụ, trong máy của tôi, nó là /Applications/Postgres.app/Contents/Versions/12/bin/pg_config
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.