【问题标题】:Correct way to install psql without full Postgres on macOS?在 macOS 上安装没有完整 Postgres 的 psql 的正确方法?
【发布时间】:2017-06-20 13:18:30
【问题描述】:

Official page 不提这种情况。但是很多用户只需要psql 而没有本地数据库(我在 AWS 上有)。 brew 没有psql

【问题讨论】:

  • 鉴于您链接到官方下载页面,上面说没有办法,为什么您认为存在“正确的方法”?
  • 对于 MacPorts 上的用户,我是这样做的:superuser.com/questions/305031/…
  • @Ssswift 不是说没有办法,只是没有说有办法。

标签: macos postgresql psql macos-sierra


【解决方案1】:

你也可以使用 homebrew 来安装 libpq。

brew install libpq

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

不幸的是,由于它提供了一些与完整 postgresql 软件包中包含的相同的实用程序,brew 将其安装为“仅桶装”,这意味着它默认不在 PATH 中。 Homebrew 会吐出一些关于如何在安装后将其添加到 PATH 的信息。在我的情况下是这样的:

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

或者,您可以为所需的实用程序创建符号链接。例如:

ln -s /usr/local/Cellar/libpq/10.3/bin/psql /usr/local/bin/psql

注意:使用安装版本而不是 10.3。

或者,您可以指示自制软件“无论如何都将其所有二进制文件链接到 PATH”

 brew link --force libpq

但是您以后将无法安装postgresql 软件包。

【讨论】:

  • 创建符号链接后就像一个魅力:ln -s /usr/local/Cellar/libpq/10.3/bin/psql /usr/local/bin/psql
  • 您也可以使用brew link --force libpq,但这会创建一堆您可能不需要/不需要的其他符号链接。
  • 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
  • 不依赖于 libpq 版本的符号链接:for cmd in psql pg_dump pg_restore; do ln -s ../opt/libpq/bin/$cmd /usr/local/bin/$cmd; done
  • 现在我们在 M1 世界中,二进制文件的正确路径已经改变,因此命令是 echo 'export PATH="/opt/homebrew/opt/libpq/bin:$PATH"' >> ~/.zshrc
【解决方案2】:

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
    

【讨论】:

  • echo 'export PATH="/usr/local/opt/libpq/bin:$PATH"' >> ~/.bash_profile 如果您使用的是 bash。
  • @HenryC 是的,谢谢,bash 更常见,我的回答是基于 zsh。
【解决方案3】:

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 服务器,而不会运行本地服务器,但如果您真的想的话,您也可以这样做。

要验证本地 postgres 守护程序没有运行,请检查您安装的自制服务:

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

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

$ brew tap homebrew/services

...您将获得此功能。有关 Homebrew 服务 的更多信息,请阅读 this excellent blog post that explains how it works

【讨论】:

  • 这实际上并没有回答问题,归结为“如何在不安装 postgres 的情况下安装 psql(可能还有其他 postgres 实用程序)”。 @PPS 的回答 stackoverflow.com/a/49689589/2469559 是正确的。
  • IMO,这是更好的选择,因为它不需要 brew link 步骤。在公式中强制使用 libpq 链接是必要的 due to the keg_only declaration。鉴于这个特定的并发症,我坚持这个答案是做问题所要求的“正确”方式。我知道许多用户仍然会更喜欢libpq 方法。
  • 是的,这种方式不需要弄乱符号链接或你的路径:)
【解决方案4】:

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

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

【讨论】:

  • 我喜欢我不必手动创建符号链接。这应该是公认的答案。谢谢!
【解决方案5】:

安装 libpq:

 brew install libpq

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

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

希望对你有帮助。

【讨论】:

    【解决方案6】:

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

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

    只需运行与您正在处理的数据库匹配的psql 的可执行版本,无需任何额外步骤。

    示例:

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

    【讨论】:

      【解决方案7】:

      你可以试试brew install postgresql

      但这提供了一个很好的 GUI 来管理您的数据库https://postgresapp.com

      【讨论】:

      • brew install postgresql 用数据库本身安装 psql :(
      • 它恰好也安装了psql,但是,作为奖励,您不必弄乱 PATH 或符号链接...
      • 不安装完整的 postgress 可能有很多原因。问题是如何避免安装它
      • PostgresApp 非常棒,如果您选择从不初始化数据库并将其仅用于 CLI 工具,那么它可能是答案。
      猜你喜欢
      • 2017-10-13
      • 2013-06-04
      • 2021-07-18
      • 2011-08-03
      • 1970-01-01
      • 2022-01-11
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多