Cách chính xác để cài đặt psql mà không có Postgres đầy đủ trên macOS?


99

Trang chính thức không đề cập đến trường hợp như vậy. Nhưng nhiều người dùng chỉ psqlcần mà không cần cơ sở dữ liệu cục bộ (tôi có trên AWS). Brew không có psql.


Bạn nghĩ tại sao lại tồn tại một "cách đúng" để làm điều này, với điều kiện là bạn đã liên kết với trang tải xuống chính thức, trang này cho biết không có cách nào?
Ssswift

Đối với những người sử dụng MacPorts, đây là những gì tôi đã làm: superuser.com/questions/305031/…
sudo

4
@Ssswift Nó không nói là không có cách, chỉ không nói là có cách.
sudo

Câu trả lời:


250

Bạn cũng có thể sử dụng homebrew để cài đặt libpq.

brew install libpq

Điều này sẽ cung cấp cho bạn psql, pg_dump và một loạt các tiện ích khách khác mà không cần cài đặt Postgres.

Sau đó, bạn thêm thư mục cài đặt vào đường dẫn của mình. Trong trường hợp của tôi, vị trí thư mục là:

/usr/local/Cellar/libpq/10.3/bin

14
Hoạt động như một sự quyến rũ sau khi tạo liên kết tượng trưng: ln -s /usr/local/Cellar/libpq/10.3/bin/psql / usr / local / bin / psql
Engrost,

20
Bạn cũng có thể làm brew link --force libpqnhưng điều đó sẽ tạo ra một loạt các liên kết tượng trưng khác mà bạn có thể không muốn / cần.
Dave

2
symlink du jour ln -s /usr/local/Cellar/libpq/11.3/bin/psql /usr/local/bin/psql/ ln -s /usr/local/Cellar/libpq/11.3/bin/pg_dump /usr/local/bin/pg_dump/ln -s /usr/local/Cellar/libpq/11.3/bin/pg_restore /usr/local/bin/pg_restore
hotzen

Các liên kết tượng trưng không phụ thuộc vào phiên bản libpq:for cmd in psql pg_dump pg_restore; do ln -s ../opt/libpq/bin/$cmd /usr/local/bin/$cmd; done
David Hull.

PATH=/usr/local/opt/libpq/bin:$PATHđể thêm tất cả các lệnh vào đường dẫn của bạn trong một lần sử dụng tên thư mục không thay đổi theo phiên bản libpqmà bạn cài đặt.
George Hawkins

42

Homebrew chỉ thực sự có công thức postgres và không có bất kỳ công thức cụ thể nào chỉ cài đặt psqlcông cụ.

Vì vậy, "cách chính xác" để tải psqlứng dụng thực sự là cài đặt công thức postgres , và bạn sẽ thấy ở cuối phần "cảnh báo" rằng nó không thực sự chạy cơ sở dữ liệu, nó chỉ đặt các tệp trên hệ thống của bạn. :

$  brew install postgres
==> Downloading https://homebrew.bintray.com/bottles/postgresql-9.6.5.sierra.bottle.tar.gz
######################################################################## 100.0%
==> Pouring postgresql-9.6.5.sierra.bottle.tar.gz
==> /usr/local/Cellar/postgresql/9.6.5/bin/initdb /usr/local/var/postgres
==> Caveats
<snip>
To have launchd start postgresql now and restart at login:
  brew services start postgresql
Or, if you don't want/need a background service you can just run:
  pg_ctl -D /usr/local/var/postgres start
==> Summary
🍺  /usr/local/Cellar/postgresql/9.6.5: 3,269 files, 36.7MB

Giờ đây, bạn có thể sử dụng psqlđể kết nối với các máy chủ Postgres từ xa và sẽ không chạy một máy chủ cục bộ, mặc dù bạn có thể nếu bạn thực sự muốn.

Để xác minh rằng postgresdaemon cục bộ không chạy, hãy kiểm tra các dịch vụ homebrew đã cài đặt của bạn:

$ brew services list
Name       Status  User Plist
mysql      stopped      
postgresql stopped      

Nếu bạn chưa cài đặt Dịch vụ Homebrew , chỉ cần

$ brew tap homebrew/services

... và bạn sẽ nhận được chức năng này. Để biết thêm thông tin về Dịch vụ Homebrew , hãy đọc bài đăng blog tuyệt vời này giải thích cách hoạt động của nó .


1
Điều này không thực sự trả lời câu hỏi, mà tóm lại là "làm cách nào để cài đặt psql (và có thể là các tiện ích postgres khác) mà KHÔNG cần cài đặt postgres". Câu trả lời của @ PPS's stackoverflow.com/a/49689589/2469559 là câu trả lời chính xác.
Benjamin R

2
IMO, đây là tùy chọn tốt hơn vì nó không yêu cầu brew linkbước. Việc buộc liên kết với libpq là cần thiết do khai báo keg_only trong công thức. Với sự phức tạp cụ thể này , tôi cho rằng câu trả lời này là cách "chính xác" để thực hiện những gì câu hỏi yêu cầu. Tôi nhận ra rằng nhiều người dùng vẫn sẽ thích libpqphương pháp này hơn.
Andrew Bobulsky

36

libpq 11.2
MacOS & zsh hoặc bash

dưới đây hoạt động

  1. Tải về libpq
brew install libpq
  1. cập nhật PATH

    nếu sử dụng zsh:

    echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.zshrc
    source ~/.zshrc
    

    nếu sử dụng bash:

    echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.bash_profile
    source ~/.bash_profile
    

1
echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.bash_profilenếu bạn đang sử dụng bash.
HenryC

1
@HenryC vâng, cảm ơn, bash phổ biến hơn nhiều, câu trả lời của tôi dựa trên zsh.
CK

10

Cài đặt libpq:

 brew install libpq

Sau đó, tạo một liên kết biểu tượng:

ln -s /usr/local/opt/libpq/bin/psql /usr/local/bin/psql

Hy vọng nó giúp.


9

Nếu bạn thực sự không cần postgresql thì bạn thậm chí không cần phải thay đổi đường dẫn để sử dụng thư viện, chỉ cần liên kết libpq. Các tài liệu cho biết lý do duy nhất không phải là để tránh xung đột với gói PostgreSQL.

brew uninstall postgresql
brew install libpq
brew link --force libpq

Tôi thích rằng tôi không phải tạo liên kết biểu tượng theo cách thủ công. Đây phải là câu trả lời được chấp nhận. Cảm ơn bạn!
demisx

0

Tôi thấy tất cả những điều này thực sự không hài lòng, đặc biệt nếu bạn phải hỗ trợ nhiều phiên bản postgres. Một giải pháp dễ dàng hơn NHIỀU là tải xuống các tệp nhị phân tại đây:

https://www.enterprisedb.com/download-postgresql-binaries

Và chỉ cần chạy phiên bản thực thi psqlphù hợp với cơ sở dữ liệu bạn đang làm việc mà không cần thực hiện thêm bất kỳ bước nào.

thí dụ:

./path/to/specific/version/bin/psql -c '\x' -c 'SELECT * FROM foo;'

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.