如何使用 MacPorts 在 OS X 上安装 Postgres 命令行客户端 (psql)?

Fre*_*eit 7 postgresql macports

我正在尝试安装 Posgtres 命令行客户端(通常是 Linux 上的 psql)。我已经通过 MacPorts(postgresql90 和 postgresql90-server)安装了 postgres,但仍然没有看到安装的客户端。

我搜索了 MacPorts,但找不到客户端的路径或单独的端口来独立安装它。

如何安装 psql 命令行客户端?

小智 10

Macports 打包了多个版本的 PosgreSQL,其中每个版本的包名称都包含版本字符串。因此,如果 XY 是主要和次要 PostgreSQL 发行版本(截至撰写本文时从 8.1 到 9.4 测试版)的串联,则包的名称如下:

  • postgresqlXY(这将安装客户端“psql”。)
  • postgresqlXY-server(这是服务器部分。)
  • postgresqlXY-doc(等等。)

您只需要激活您选择的已安装版本。如果您安装包“postgresqlXY”(任何版本),您还将获得包“postgresql_select”作为依赖项,它允许您查询 postgresql 的活动版本:

$ port select --list postgresql
    Available versions for postgresql:
    none (active)
    postgresqlXY
Run Code Online (Sandbox Code Playgroud)

您可以像这样指定活动版本:

$ port select --set postgresql postgresqlXY
Selecting 'postgresqlXY' for 'postgresql' succeeded. 'postgresqlXY' is now active.
Run Code Online (Sandbox Code Playgroud)

这导致MacPorts的放置一个符号链接从/选择/ local / bin目录/ psql的(这要安装在/ opt / local / lib目录/ postgresqlXY /斌/ psql的二进制(这是不是因为你的MacPorts安装路径上)路径):

$ which psql # That created this symlink to the active version:
/opt/local/bin/psql
Run Code Online (Sandbox Code Playgroud)

请注意,您始终可以通过 /opt/local/bin/psqlXY 访问客户端二进制文件的 XY 版本,这是 Macports 为每个已安装版本维护的另一个符号链接,无论是否选择。它在您选择版本 XY 之前就在那里,如果您选择“无”以从路径中删除标准二进制名称,它也会保留:

$ port select postgresql none
Selecting 'none' for 'postgresql' succeeded. 'none' is now active.
$ which psql   # Not on the path because 'none' is active!
$ which psqlXY # But this is always present:
/opt/local/bin/psqlXY
Run Code Online (Sandbox Code Playgroud)

人们最终需要随时访问各种软件的多个版本,Macports 通过使用这种选择机制和相应的 somesoftware_select 包作为依赖项打包大约 50 个流行示例的多个版本,使这变得容易。查看列表:

$ port search _select
Run Code Online (Sandbox Code Playgroud)