วิธีที่ถูกต้องในการติดตั้ง psql โดยไม่ใช้ Postgres แบบเต็มบน macOS?


107

เพจทางการไม่ได้กล่าวถึงกรณีดังกล่าว แต่ผู้ใช้จำนวนมากต้องการเพียงแค่psqlไม่มีฐานข้อมูลในเครื่อง (ฉันมีบน AWS) psqlเบียร์ไม่ได้


ทำไมคุณถึงคิดว่ามี "วิธีที่ถูกต้อง" ในการทำเช่นนี้เนื่องจากคุณเชื่อมโยงไปยังหน้าดาวน์โหลดอย่างเป็นทางการซึ่งระบุว่าไม่มีวิธี
Ssswift

สำหรับผู้ที่ใช้ MacPorts นี่คือสิ่งที่ฉันทำ: superuser.com/questions/305031/…
sudo

4
@Ssswift มันไม่ได้บอกว่าไม่มีทางเพียง แต่ไม่ได้บอกว่ามีวิธี
sudo

คำตอบ:


269

คุณยังสามารถใช้ homebrew เพื่อติดตั้ง libpq

brew install libpq

สิ่งนี้จะให้ psql, pg_dump และยูทิลิตี้ไคลเอนต์อื่น ๆ โดยไม่ต้องติดตั้ง Postgres

จากนั้นคุณเพิ่มไดเร็กทอรีการติดตั้งลงในพา ธ ของคุณ ในกรณีของฉันตำแหน่งไดเร็กทอรีคือ:

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

14
ใช้งานได้อย่างมีเสน่ห์หลังจากสร้าง symlink: ln -s /usr/local/Cellar/libpq/10.3/bin/psql / usr / local / bin / psql
Engrost

21
คุณสามารถทำได้เช่นกันbrew link --force libpqแต่จะสร้างลิงก์สัญลักษณ์อื่น ๆ ที่คุณอาจไม่ต้องการ / ต้องการ
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 ที่ไม่ขึ้นอยู่กับเวอร์ชัน 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เพื่อเพิ่มคำสั่งทั้งหมดในพา ธ ของคุณในครั้งเดียวโดยใช้ชื่อไดเร็กทอรีที่ไม่เปลี่ยนแปลงตามเวอร์ชันlibpqที่คุณติดตั้ง
George Hawkins

43

Homebrew มีเฉพาะสูตรpostgresเท่านั้นและไม่มีสูตรเฉพาะใด ๆ ที่ติดตั้งpsqlเครื่องมือเท่านั้น

ดังนั้น "วิธีที่ถูกต้อง" ในการรับpsqlแอปพลิเคชันคือการติดตั้งสูตรpostgresและคุณจะเห็นที่ด้านล่างของส่วน "คำเตือน" ว่ามันไม่ได้เรียกใช้ฐานข้อมูลจริงๆมันแค่วางไฟล์ไว้ในระบบของคุณ :

$  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

ตอนนี้คุณสามารถใช้psqlเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ Postgres ระยะไกลและจะไม่เรียกใช้เซิร์ฟเวอร์ท้องถิ่นแม้ว่าคุณจะทำได้ถ้าคุณต้องการจริงๆ

ในการตรวจสอบว่า Local postgresdaemon ไม่ทำงานให้ตรวจสอบบริการ homebrew ที่ติดตั้งไว้:

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

หากคุณไม่ได้ติดตั้งHomebrew Servicesเพียงแค่

$ brew tap homebrew/services

... และคุณจะได้รับฟังก์ชันนี้ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับบริการ Homebrewอ่านบล็อกโพสต์ที่ยอดเยี่ยมที่จะอธิบายวิธีการทำงาน


1
สิ่งนี้ไม่ได้ตอบคำถามจริงๆซึ่งกล่าวถึง "ฉันจะติดตั้ง psql ได้อย่างไร (และยูทิลิตี้ postgres อื่น ๆ ) โดยไม่ต้องติดตั้ง postgres" คำตอบของ @ PPS stackoverflow.com/a/49689589/2469559คือคำตอบที่ถูกต้อง
Benjamin R

2
IMO นี่เป็นตัวเลือกที่ดีกว่าเพราะไม่ต้องใช้brew linkขั้นตอน การบังคับให้ลิงก์กับ libpq จำเป็นเนื่องจากการประกาศ keg_onlyในสูตร จากภาวะแทรกซ้อนที่เฉพาะเจาะจงนี้ฉันยืนตามคำตอบนี้ว่าเป็นวิธีที่ "ถูกต้อง" ในการทำสิ่งที่คำถามถาม ฉันตระหนักดีว่าผู้ใช้หลายคนยังคงชอบlibpqแนวทางนี้
Andrew Bobulsky

38

libpq 11.2
MacOS & zsh หรือ bash

ด้านล่างทำงาน

  1. ติดตั้ง libpq
brew install libpq
  1. อัปเดตเส้นทาง

    ถ้าใช้ zsh:

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

    ถ้าใช้ 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_profileหากคุณใช้ทุบตี
HenryC

1
@HenryC ใช่ขอบคุณ bash เป็นเรื่องธรรมดามากคำตอบของฉันขึ้นอยู่กับ zsh
CK

12

ติดตั้ง libpq:

 brew install libpq

จากนั้นสร้างลิงก์สัญลักษณ์:

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

หวังว่าจะช่วยได้


12

ถ้าคุณอย่างแท้จริงไม่จำเป็นต้อง PostgreSQL แล้วคุณไม่ได้มีการปรับเปลี่ยนเส้นทางของคุณไปใช้ libra libpqเพียงการเชื่อมโยง เอกสารกล่าวว่าเหตุผลเดียวที่ไม่ใช่เพื่อหลีกเลี่ยงความขัดแย้งกับแพ็คเกจ PostgreSQL

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

ฉันชอบที่ฉันไม่ต้องสร้าง symlink ด้วยตนเอง นี่ควรเป็นคำตอบที่ได้รับการยอมรับ ขอบคุณ!
demisx

0

ฉันพบว่าสิ่งเหล่านี้ไม่น่าพอใจจริงๆโดยเฉพาะอย่างยิ่งหากคุณต้องรองรับ postgres หลายเวอร์ชัน ทางออกที่ง่ายกว่ามากคือดาวน์โหลดไบนารีที่นี่:

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

และเพียงแค่เรียกใช้เวอร์ชันปฏิบัติการpsqlที่ตรงกับฐานข้อมูลที่คุณกำลังดำเนินการโดยไม่มีขั้นตอนเพิ่มเติม

ตัวอย่าง:

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

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