2012-01-07 24 views
12

Tôi muốn chạy một ứng dụng Rails trên Heroku vì vậy tôi đã cài đặt PostgreSQL trên máy Snow Leopard của mình bằng Homebrew. Hiện tại, brew cài đặt 9.1.2 vào/usr/local/Cellar/postgresql. Sau một số nghiên cứu, tôi phát hiện ra rằng phiên bản miễn phí, được chia sẻ của Heroku yêu cầu 8.3.x. Trong khi homebrew-alt không có 8,3, nó có 8.4 nên tôi đã tải nó xuống và nó được cài đặt vào/usr/local/Cellar/postgresql8. Sau đó tôi xác nhận rằng tôi có thể tạo và chạy cơ sở dữ liệu trên mỗi phiên bản. Nghĩ rằng tôi có thể sử dụng "brew [link | unlink] để chuyển đổi qua lại, tôi chạy" brew unlink postgresql8 "và sau đó" brew link postresres ". Tuy nhiên, chạy lệnh sau sẽ dẫn đến lỗi này:Gặp sự cố khi sử dụng "brew link" để chuyển đổi giữa PostgreSQLs

Liên kết/usr/local/Cellar/postgresql/9.1.2 ... Lỗi: không thể liên kết postgresql phiên bản khác đã được liên kết: /usr/local/Cellar/postgresql/9.1.2

có cách nào để làm điều này (chuyển đổi qua lại) hoặc tôi có hiểu lầm về cách sử dụng liên kết bia/hủy liên kết được sử dụng không?

Bằng cách này, "danh sách bia" hiển thị "postgresql" và "postgresql8" vì vậy tôi không nghĩ đó là trường hợp rằng tôi shoul d nói "brew link postgresql9".

Cảm ơn.

+0

0 chấp nhận câu trả lời, 0 upvotes, đó không phải là hợp tác chính xác. –

+0

Xin lỗi nhưng tôi mới sử dụng Stackoverflow và tôi thấy giao diện khá khó hiểu khi hoạt động. – William

Trả lời

29

Sử dụng brew switch, là phần mở rộng được giao hàng với Homebrew. Trong trường hợp của bạn, bạn có thể sử dụng 8,4 bằng cách chạy

$ brew switch postgresql 8.4 
+0

FYI, đối với tôi, brew không liên kết tất cả các lệnh liên quan đến Postgres. Ví dụ, pg_ctl sẽ chuyển đổi từ phiên bản này sang phiên bản khác, nhưng psql thì không. Tôi đã phải thay đổi psql bằng tay để sử dụng lệnh của phiên bản mới, từ /usr/local/Cellar/postgresql/9.2.4/bin/psql –

+0

Vì tôi chưa bao giờ cài đặt vanilla 'postgres', tôi phải thực hiện việc này để chuyển đổi:' brew hủy liên kết postgresql95 && brew link postgresql94 --force' –

7

Cảm ơn, mipadi! Điều đó đã làm các trick. Chỉ có một điều bổ sung mà tôi cần phải làm. Lệnh 'brew switch' giả định tất cả các phiên bản của postgresql được cài đặt trong /usr/local/Cellar/postgresql. Đó không phải là trường hợp với phiên bản 8.4.8 vì nó đã được cài đặt trong /usr/local/Cellar/postgresql8. Do đó tôi đã phải tạo ra một liên kết tượng trưng để trỏ đến phiên bản cũ này:

cd /usr/local/Cellar/postgresql 
ln -s ../postgresql8/8.4.8 8.4.8 

Đương nhiên, nó cũng làm cho tinh thần để giữ cụm cơ sở dữ liệu của bạn trong thư mục riêng biệt:

/usr/local/var/postgres/8.4.8 
/usr/local/var/postgres/9.1.2 
Các vấn đề liên quan