Cara yang benar untuk menginstal psql tanpa Postgres lengkap di macOS?


103

Halaman resminya tidak menyebutkan kasus seperti itu. Tetapi banyak pengguna hanya perlu psqltanpa database lokal (saya memilikinya di AWS). Brew tidak punya psql.


Menurut Anda, mengapa ada "cara yang benar" untuk melakukan ini, mengingat Anda menautkan ke halaman unduhan resmi, yang menyatakan bahwa tidak ada cara?
Ssswift

Bagi mereka yang menggunakan MacPorts, inilah yang saya lakukan: superuser.com/questions/305031/…
sudo

4
@Ssswift Itu tidak mengatakan tidak ada jalan, hanya tidak mengatakan ada jalan.
sudo

Jawaban:


254

Anda juga dapat menggunakan homebrew untuk menginstal libpq.

brew install libpq

Ini akan memberi Anda psql, pg_dump dan sejumlah besar utilitas klien lainnya tanpa menginstal Postgres.

Anda kemudian menambahkan direktori instalasi ke jalur Anda. Dalam kasus saya, lokasi direktori adalah:

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

14
Berfungsi seperti mantra setelah membuat symlink: ln -s /usr/local/Cellar/libpq/10.3/bin/psql / usr / local / bin / psql
Engrost

20
Anda juga bisa melakukannya brew link --force libpqtetapi itu akan membuat banyak symlink lain yang mungkin tidak Anda inginkan / butuhkan.
Dave

2
symlinks 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

Symlinks yang tidak bergantung pada versi 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:$PATHuntuk menambahkan semua perintah ke jalur Anda sekaligus, menggunakan nama direktori yang tidak berubah dengan versi libpqyang Anda instal.
George Hawkins

42

Homebrew hanya benar-benar memiliki rumus postgres , dan tidak memiliki rumus khusus yang hanya menginstal psqlalat tersebut.

Jadi, "cara yang benar" untuk mendapatkan psqlaplikasi adalah dengan menginstal rumus postgres , dan Anda akan melihat ke bagian bawah bagian "peringatan" bahwa ia tidak benar-benar menjalankan database, itu hanya meletakkan file di sistem Anda :

$  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

Sekarang Anda dapat menggunakan psqluntuk terhubung ke server Postgres jarak jauh, dan tidak akan menjalankan server lokal, meskipun Anda bisa jika Anda benar-benar menginginkannya.

Untuk memverifikasi bahwa postgresdaemon lokal tidak berjalan, periksa layanan homebrew yang Anda instal:

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

Jika Anda belum menginstal Layanan Homebrew , cukup

$ brew tap homebrew/services

... dan Anda akan mendapatkan fungsi ini. Untuk informasi lebih lanjut tentang Layanan Homebrew , baca posting blog luar biasa ini yang menjelaskan cara kerjanya .


1
Ini sebenarnya tidak menjawab pertanyaan, yang intinya adalah "bagaimana cara menginstal psql (dan mungkin utilitas postgres lainnya) TANPA menginstal postgres". Jawaban @ PPS stackoverflow.com/a/49689589/2469559 adalah yang benar.
Benjamin R

2
IMO, ini adalah opsi yang lebih baik karena tidak memerlukan brew linklangkah. Memaksa tautan dengan libpq diperlukan karena deklarasi keg_only dalam rumus. Mengingat kerumitan khusus ini , saya berpegang pada jawaban ini sebagai cara yang "benar" untuk melakukan apa yang ditanyakan oleh pertanyaan. Saya menyadari bahwa banyak pengguna masih lebih suka libpqpendekatan ini.
Andrew Bobulsky

36

libpq 11.2
MacOS & zsh atau bash

di bawah ini bekerja

  1. Install libpq
brew install libpq
  1. perbarui PATH

    jika menggunakan zsh:

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

    jika menggunakan 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_profilejika Anda menggunakan bash.
HenryC

1
@HenryC ya, terima kasih, bash jauh lebih umum, jawaban saya didasarkan pada zsh.
CK

10

Instal libpq:

 brew install libpq

Kemudian, buat symlink:

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

Semoga membantu.


10

Jika Anda benar-benar tidak membutuhkan postgresql maka Anda bahkan tidak perlu mengubah jalur Anda untuk menggunakan libra, cukup tautkan libpq. Dokumen mengatakan satu-satunya alasan tidak ada adalah untuk menghindari konflik dengan paket PostgreSQL.

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

Saya suka bahwa saya tidak harus membuat symlink secara manual. Ini harus menjadi jawaban yang diterima. Terima kasih!
demisx

0

Saya menemukan semua ini sangat tidak memuaskan, terutama jika Anda harus mendukung banyak versi postgres. Solusi yang JAUH lebih mudah adalah mengunduh binari di sini:

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

Dan cukup jalankan versi yang dapat dieksekusi psqlyang cocok dengan database yang sedang Anda kerjakan tanpa langkah tambahan.

contoh:

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.