Richtige Möglichkeit, psql ohne vollständige Postgres unter macOS zu installieren?


99

Offizielle Seite erwähnen solchen Fall nicht. Aber viele Benutzer brauchen nur psqlohne lokale Datenbank (ich habe es auf AWS). Brauen nicht haben psql.


Warum gibt es Ihrer Meinung nach einen "richtigen Weg", um dies zu tun, da Sie auf die offizielle Download-Seite verlinkt haben, die besagt, dass es keinen Weg gibt?
Ssswift

Für diejenigen auf MacPorts habe ich
sudo

4
@Ssswift Es heißt nicht, dass es keinen Weg gibt, sondern nur, dass es keinen Weg gibt.
Sudo

Antworten:


248

Sie können auch homebrew verwenden, um libpq zu installieren.

brew install libpq

Dies würde Ihnen psql, pg_dump und eine ganze Reihe anderer Client-Dienstprogramme geben, ohne Postgres zu installieren.

Anschließend fügen Sie das Installationsverzeichnis Ihrem Pfad hinzu. In meinem Fall lautet das Verzeichnis:

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

14
Funktioniert nach dem Erstellen eines Symlinks wie ein Zauber: ln -s /usr/local/Cellar/libpq/10.3/bin/psql / usr / local / bin / psql
Engrost

20
Sie können dies auch tun, brew link --force libpqaber dadurch werden eine Reihe anderer Symlinks erstellt, die Sie möglicherweise nicht möchten / benötigen.
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, die nicht von der libpq-Version abhängen: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:$PATHUm alle Befehle auf einmal zu Ihrem Pfad hinzuzufügen, verwenden Sie einen Verzeichnisnamen, der sich mit der von libpqIhnen installierten Version nicht ändert .
George Hawkins

42

Homebrew hat wirklich nur die Postgres- Formel und keine spezifische Formel, die nur das psqlTool installiert .

Der "richtige Weg", um die psqlAnwendung zu erhalten, besteht in der Tat darin, die Postgres- Formel zu installieren. Am Ende des Abschnitts "Vorbehalte" sehen Sie, dass die Datenbank nicht ausgeführt wird, sondern nur die Dateien auf Ihrem System abgelegt werden ::

$  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

Jetzt können Sie psqleine Verbindung zu Remote-Postgres-Servern herstellen und keinen lokalen Server mehr ausführen, obwohl dies möglich ist, wenn Sie dies wirklich möchten.

postgresÜberprüfen Sie Ihre installierten Homebrew-Dienste, um sicherzustellen , dass der lokale Dämon nicht ausgeführt wird:

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

Wenn Sie Homebrew Services nicht installiert haben, einfach

$ brew tap homebrew/services

... und Sie erhalten diese Funktionalität. Weitere Informationen zu Homebrew Services finden Sie in diesem ausgezeichneten Blog-Beitrag, in dem die Funktionsweise erläutert wird .


1
Dies beantwortet nicht wirklich die Frage, die sich auf "Wie installiere ich psql (und möglicherweise andere Postgres-Dienstprogramme), OHNE Postgres zu installieren" beschränkt. Die Antwort von @ PPS stackoverflow.com/a/49689589/2469559 ist die richtige.
Benjamin R

2
IMO, dies ist die bessere Option, da der brew linkSchritt nicht erforderlich ist . Das Erzwingen der Verknüpfung mit libpq ist aufgrund der Deklaration keg_only in der Formel erforderlich . Angesichts dieser spezifischen Komplikation stehe ich zu dieser Antwort als der "richtige" Weg, um das zu tun, was die Frage verlangt. Ich erkenne, dass viele Benutzer den libpqAnsatz dennoch bevorzugen werden .
Andrew Bobulsky

35

libpq 11.2
MacOS & zsh oder bash

unten funktioniert

  1. Installieren libpq
brew install libpq
  1. PATH aktualisieren

    wenn Sie zsh verwenden:

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

    Wenn Sie Bash verwenden:

    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_profilewenn Sie bash verwenden.
HenryC

1
@ HenryC yep, danke, Bash ist viel häufiger, meine Antwort basierte auf zsh.
CK

10

Installieren Sie libpq:

 brew install libpq

Erstellen Sie dann einen Symlink:

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

Ich hoffe es hilft.


9

Wenn Sie postgresql wirklich nicht benötigen, müssen Sie nicht einmal Ihren Pfad ändern, um libra zu verwenden. Verknüpfen Sie einfach libpq. Die Dokumente sagen, dass der einzige Grund, warum dies nicht der Fall ist, darin besteht, Konflikte mit dem PostgreSQL-Paket zu vermeiden.

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

Mir gefällt, dass ich den Symlink nicht manuell erstellen muss. Dies sollte die akzeptierte Antwort sein. Danke dir!
Demisx

0

Ich fand all dies wirklich unbefriedigend, besonders wenn Sie mehrere Versionen von Postgres unterstützen müssen. Eine VIEL einfachere Lösung besteht darin, die Binärdateien hier herunterzuladen:

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

Führen Sie einfach die ausführbare Version aus psql, die der Datenbank entspricht, mit der Sie arbeiten, ohne zusätzliche Schritte.

Beispiel:

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.