Maneira correta de instalar o psql sem Postgres completo no macOS?

99

A página oficial não menciona tal caso. Mas muitos usuários precisam apenas psqlsem um banco de dados local (eu o tenho na AWS). Brew não tem psql.

Vitaly Zdanevich
fonte
Por que você acha que existe uma "maneira correta" de fazer isso, visto que você vinculou a página oficial de download, que diz que não existe uma maneira?
Ssswift de
Para aqueles que usam MacPorts, aqui está o que eu fiz: superuser.com/questions/305031/…
sudo
4
@Ssswift Não diz que não há um caminho, apenas não diz que há um caminho.
sudo

Respostas:

250

Você também pode usar o homebrew para instalar a libpq.

brew install libpq

Isso lhe daria psql, pg_dump e um monte de outros utilitários de cliente sem instalar o Postgres.

Em seguida, você adiciona o diretório de instalação ao seu caminho. No meu caso, o local do diretório é:

/usr/local/Cellar/libpq/10.3/bin
PPS
fonte
14
Funciona
perfeitamente
20
Você também pode fazer brew link --force libpqisso, mas criará um monte de outros links simbólicos que você pode não querer / precisar.
Dave de
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
Links simbólicos que não dependem da versão 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:$PATHadicionar todos os comandos ao seu caminho de uma vez, usando um nome de diretório que não muda com a versão libpqque você instala.
George Hawkins
42

Homebrew só tem realmente a fórmula do postgres , e não tem nenhuma fórmula específica que apenas instale a psqlferramenta.

Portanto, a "maneira correta" de obter o psqlaplicativo é instalar a fórmula do postgres , e você verá no final da seção de "advertências" que ele não executa o banco de dados, apenas coloca os arquivos em seu 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

Agora você pode usar psqlpara se conectar a servidores Postgres remotos, e não estará executando um local, embora você pudesse se realmente quisesse.

Para verificar se o postgresdaemon local não está em execução, verifique seus serviços homebrew instalados:

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

Se você não tem o Homebrew Services instalado, apenas

$ brew tap homebrew/services

... e você obterá essa funcionalidade. Para obter mais informações sobre o Homebrew Services , leia esta excelente postagem no blog que explica como funciona .

Andrew Bobulsky
fonte
1
Na verdade, isso não responde à pergunta, que se resume a "como faço para instalar o psql (e talvez outros utilitários do postgres) SEM instalar o postgres". @ A resposta do PPS stackoverflow.com/a/49689589/2469559 é a correta.
Benjamin R
2
IMO, esta é a melhor opção porque não requer a brew linketapa. Forçar o link com libpq é necessário devido à declaração keg_only na fórmula. Dada essa complicação específica , defendo essa resposta como sendo a maneira "correta" de fazer o que a pergunta pede. Reconheço que muitos usuários ainda preferem a libpqabordagem.
Andrew Bobulsky
36

libpq 11.2
MacOS & zsh ou bash

abaixo funciona

  1. instalar libpq
brew install libpq
  1. atualizar PATH

    se usar zsh:

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

    se usar bash:

    echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.bash_profile
    source ~/.bash_profile
CK
fonte
1
echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.bash_profilese você estiver usando o bash.
HenryC
1
@HenryC sim, obrigado, bash é muito mais comum, minha resposta foi baseada em zsh.
CK
10

Instale libpq:

 brew install libpq

Em seguida, crie um link simbólico:

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

Espero que ajude.

Virak
fonte
9

Se você realmente não precisa do postgresql, nem mesmo precisa alterar seu caminho para usar o libra, basta criar um link libpq. Os documentos dizem que o único motivo pelo qual não é para evitar conflitos com o pacote PostgreSQL.

brew uninstall postgresql
brew install libpq
brew link --force libpq
Josh Goebel
fonte
Eu gosto de não ter que criar o link simbólico manualmente. Esta deve ser a resposta aceita. Obrigado!
demisx
0

Achei tudo isso realmente insatisfatório, especialmente se você tiver que oferecer suporte a várias versões do postgres. Uma solução MUITO mais fácil é baixar os binários aqui:

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

E simplesmente execute a versão executável psqlque corresponde ao banco de dados com o qual você está trabalhando, sem nenhuma etapa extra.

exemplo:

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

Você poderia tentar brew install postgresql

Mas isso fornece uma interface gráfica agradável para gerenciar seus bancos de dados https://postgresapp.com

Saidur Rahman
fonte
1
brew install postgresqlinstale o psql com o próprio banco de dados :(
Vitaly Zdanevich