¿Forma correcta de instalar psql sin Postgres completo en macOS?

99

La página oficial no menciona tal caso. Pero muchos usuarios solo necesitan psqlsin una base de datos local (la tengo en AWS). Brew no tiene psql.

Vitaly Zdanevich
fuente
¿Por qué crees que existe una "forma correcta" de hacer esto, dado que enlazaste a la página de descarga oficial, que dice que no hay forma?
Ssswift
Para aquellos en MacPorts, esto es lo que hice: superuser.com/questions/305031/…
sudo
4
@Ssswift No dice que no haya una manera, simplemente no dice que hay una manera.
sudo

Respuestas:

250

También puede usar homebrew para instalar libpq.

brew install libpq

Esto le proporcionaría psql, pg_dump y un montón de otras utilidades de cliente sin instalar Postgres.

Luego agrega el directorio de instalación a su ruta. En mi caso, la ubicación del directorio es:

/usr/local/Cellar/libpq/10.3/bin
PPS
fuente
14
Funciona como un encanto después de crear un enlace simbólico: ln -s /usr/local/Cellar/libpq/10.3/bin/psql / usr / local / bin / psql
Engrost
20
También puede hacerlo, brew link --force libpqpero eso creará un montón de otros enlaces simbólicos que quizás no desee / necesite.
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
Enlaces simbólicos que no dependen de la versión de 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:$PATHpara agregar todos los comandos a su ruta de una sola vez, usando un nombre de directorio que no cambia con la versión libpqque instala.
George Hawkins
42

Homebrew solo tiene la fórmula de Postgres y no tiene ninguna fórmula específica que solo instale la psqlherramienta.

Entonces, la "forma correcta" de obtener la psqlaplicación es instalar la fórmula de Postgres , y verá hacia la parte inferior de la sección de "advertencias" que en realidad no ejecuta la base de datos, solo coloca los archivos en su sistema. :

$  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

Ahora puede usar psqlpara conectarse a servidores de Postgres remotos y no ejecutará uno local, aunque podría hacerlo si realmente quisiera.

Para verificar que el postgresdemonio local no se esté ejecutando, verifique sus servicios de homebrew instalados:

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

Si no tiene Homebrew Services instalado, simplemente

$ brew tap homebrew/services

... y obtendrás esta funcionalidad. Para obtener más información sobre Homebrew Services , lea esta excelente publicación de blog que explica cómo funciona .

Andrew Bobulsky
fuente
1
En realidad, esto no responde a la pregunta, que se reduce a "cómo instalo psql (y tal vez otras utilidades de postgres) SIN instalar postgres". La respuesta de @ PPS stackoverflow.com/a/49689589/2469559 es la correcta.
Benjamin R
2
En mi opinión, esta es la mejor opción porque no requiere el brew linkpaso. Forzar el enlace con libpq es necesario debido a la declaración keg_only en la fórmula. Dada esta complicación específica , defiendo esta respuesta como la forma "correcta" de hacer lo que pide la pregunta. Sin embargo, reconozco que muchos usuarios seguirán prefiriendo el libpqenfoque.
Andrew Bobulsky
36

libpq 11.2
MacOS y zsh o bash

debajo funciona

  1. Instalar en pc libpq
brew install libpq
  1. actualizar PATH

    si usa zsh:

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

    si usa bash:

    echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.bash_profile
    source ~/.bash_profile
    
CK
fuente
1
echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.bash_profilesi está usando bash.
HenryC
1
@HenryC sí, gracias, bash es mucho más común, mi respuesta se basó en zsh.
CK
10

Instale libpq:

 brew install libpq

Luego, crea un enlace simbólico:

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

Espero eso ayude.

Virak
fuente
9

Si realmente no necesita postgresql, ni siquiera tiene que alterar su ruta para usar libra, solo enlace libpq. Los documentos dicen que la única razón por la que no es así es para evitar conflictos con el paquete PostgreSQL.

brew uninstall postgresql
brew install libpq
brew link --force libpq
Josh Goebel
fuente
Me gusta que no tengo que crear el enlace simbólico manualmente. Esta debería ser la respuesta aceptada. ¡Gracias!
demisx
0

Encontré todos estos realmente insatisfactorios, especialmente si tiene que admitir varias versiones de postgres. Una solución MUCHO más sencilla es descargar los binarios aquí:

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

Y simplemente ejecute la versión ejecutable psqlque coincida con la base de datos con la que está trabajando sin ningún paso adicional.

ejemplo:

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

Tu podrías intentar brew install postgresql

Pero esto proporciona una buena GUI para administrar sus bases de datos https://postgresapp.com

Saidur Rahman
fuente
1
brew install postgresqlinstalar psql con la propia base de datos :(
Vitaly Zdanevich