在macOS上没有完整Postgres的情况下安装psql的正确方法?


99

官方页面上没有提及这种情况。但是许多用户只psql需要一个本地数据库(我在AWS上就可以了)。酿造没有psql


考虑到您链接到官方下载页面(说没有办法),为什么您认为存在“正确方法”来做到这一点?
Ssswift

对于MacPorts上的计算机,这是我的工作:superuser.com/questions/305031/…–
sudo

4
@Ssswift它没有说没有办法,只是没有说有办法。
sudo

Answers:


249

您也可以使用自制软件安装libpq。

brew install libpq

这将为您提供psql,pg_dump和许多其他客户端实用程序,而无需安装Postgres。

然后,将安装目录添加到路径。就我而言,目录位置是:

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

14
创建符号链接后,其工作
原理

20
您也可以这样做,brew link --force libpq但这会创建许多您可能不需要的符号链接。
戴夫

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

不依赖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安装版本的变化而一次性将所有命令添加到路径中。
乔治·霍金斯

42

Homebrew实际上仅具有postgres公式,并且没有仅安装该psql工具的任何特定公式。

因此,获取psql应用程序的“正确方法” 的确是安装postgres公式,您将在“ caveats”部分的底部看到它实际上并没有运行数据库,只是将文件放在系统中:

$  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服务器,而不必运行本地服务器,尽管您确实可以这样做。

要验证本地postgres守护程序未运行,请检查已安装的自制软件服务:

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

如果您没有安装Homebrew Services,只需

$ brew tap homebrew/services

...您将获得此功能。有关Homebrew Services的更多信息,请阅读这篇出色的博客文章,其中介绍了它的工作原理


1
这实际上并不能回答这个问题,归结为“我如何在不安装postgres的情况下安装psql(可能还有其他postgres实用程序)”。@PPS的答案stackoverflow.com/a/49689589/2469559是正确的。
本杰明·R

2
IMO,这是更好的选择,因为它不需要brew link步骤。由于公式中的keg_only声明,必须使用libpq强制链接。鉴于这种特殊的复杂性,我坚持认为答案是做问题所要求的“正确”方法。我认识到,libpq尽管如此,许多用户仍然会喜欢这种方法。
安德鲁·博布尔斯基

36

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如果您正在使用bash。
HenryC

1
@HenryC是的,谢谢,bash更为常见,我的答案是基于zsh的。
CK

10

安装libpq:

 brew install libpq

然后,创建一个符号链接:

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

希望能帮助到你。


9

如果您确实不需要postgresql,那么您甚至不必更改使用libra的路径,只需链接即可libpq。文档说不是它的唯一原因是避免与PostgreSQL软件包冲突。

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

我喜欢我不必手动创建符号链接。这应该是公认的答案。谢谢!
demisx

0

我发现所有这些都不令人满意,尤其是当您必须支持多个版本的postgres时。一个更简单的解决方案是在此处下载二进制文件:

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

只需运行psql与您要使用的数据库匹配的可执行版本,而无需任何其他步骤。

例:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.