如何使用 Homebrew 将 Postgis 安装到 Postgres@9.6 的 Keg 安装中?

Posted

技术标签:

【中文标题】如何使用 Homebrew 将 Postgis 安装到 Postgres@9.6 的 Keg 安装中?【英文标题】:How to install Postgis to a Keg installation of Postgres@9.6 using Homebrew? 【发布时间】:2018-04-15 05:07:43 【问题描述】:

我已经通过 Homebrew 安装了 Postgresql@9.6 和 Postgis。但是,通过 Homebrew 安装 Postgis 会将 Postgresql 的最新版本安装为 10 作为依赖项,并且将 Postgresql 固定在 9.6.5 会阻止通过 Homebrew 安装 Postgis。

执行“CREATE EXTENSION postgis;”返回:

ERROR: could not open extension control file "/usr/local/Cellar/postgresql@9.6/9.6.5/share/postgresql@9.6/extension/postgis.control": No such file or directory

我还尝试卸载 Postgresql(在 10 时)并编辑 Postgis 公式以依赖 Postgres@9.6 而不是 Postgresql。

这与How to install Postgis to a Keg installation of Postgres@9.5 using Homebrew? 类似,但使用了后来的小桶公式

【问题讨论】:

“6 小时前询问”——看到这个我真的笑出了声。我遇到了完全相同的问题,正在积极研究它。 (是的,我知道这不是一个有用的评论......) 另一个可怜的灵魂拥有same question。发完帖子才看到你的,不好意思。另一种可能的方法可能被描述为here,但我仍在犹豫是否尝试。 【参考方案1】:

安装 PEX,Postgresql 的包管理器允许我为 Postgresql@9.6 的桶版本安装 Postgis 并使用 CREATE EXTENSION postgis;

这不是 Homebrew 解决方案,但经过大量搜索,它终于允许我使用 Postgis。

【讨论】:

工作出色。对未来搜索者的一个警告:不要费心尝试安装 pexbrew,它会为您安装 PostgreSQL 10(至少现在是这样)。 为我工作。谢谢 花了很多时间,但最终我得到了这个工作。万一其他人遇到同样的问题,这里是我遇到的问题和我找到的解决方案:gist.github.com/skissane/0487c097872a7f6d0dcc9bcd120c2ccd【参考方案2】:

经过多次组合,我设法做到了。 简而言之,解决方法是安装旧版本的原包postgres,切换到它,安装旧版本的postgis

安装 postgres

1/安装postgres的当前版本(10.1的话)

brew install postgres

2/ 使用旧公式安装旧版本的 postgres。可以在 Tap repo (/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/) 上使用 github 或 git log 找到正确的链接。

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/d014fa223f77bee4b4097c5e80faa0954e28182f/Formula/postgresql.rb

这将安装 9.6.5 版本(10.x 系列之前的最后一个)。

3/ 切换到它,因此链接默认为 postgres 9.6

brew switch postgres 9.6.5

安装 postgis

4/ 安装旧版本的 postgis (2.3)。这是使用公式的相同 sha 版本,因此所有内容都正确链接(使用当前的 postgis 将期望 postgresql 10,因此在初始化扩展时最终会导致版本不匹配)。

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/d014fa223f77bee4b4097c5e80faa0954e28182f/Formula/postgis.rb

使用它们

5/ 如果需要初始化数据库

initdb /usr/local/var/postgres

6/ 创建和使用您的数据库

createdb mydb
psql mydb
mydb=# CREATE EXTENSION postgis;

【讨论】:

我必须在第 2 步和第 3 步之间brew unlink postgres 感谢@Antwan,在这里提供大量帮助。我认为自制软件中有一个 9.6.8 不知何故/某处,但我 认为 这与基于 postgresql@9.6 的安装有关(正如其他人也发现的那样)不适用于 brew switch postgresql 9.6.8 .等我回来后,把这个评论留给我未来的自己。 看起来安装 10.1 还会以新格式初始化数据库。所以我不得不删除 /usr/local/var/postgres 并在切换到 9.6 后创建 initdb 以使其正常工作(这样做需要您自担风险。如果那里有东西,您将丢失所有数据) 这似乎是一个非常好的解决方案,我真的希望它能够奏效。对我来说不幸的是,步骤 (2) 失败,Error: postgresql: Unsupported special dependency :python【参考方案3】:

你好

我遇到了同样的问题,即 pgsql 版本的多个实现,包括旧版本。因此,经过一番研究,我想分享我的解决方案。

问题:

我正在使用 10.11 el capitan 的 macbook pro 2013。我是 GIS 开发人员和自制软件的广泛用户。出于兼容性原因,我没有固定 postgresql 包。因此,该软件包与其他软件包一起更新到了 postgresql 版本 10.5。这导致我无法使用 postgresql 9.4 版。最聪明的解决方案是使用brew switch postgresql 9.4.19。除了从osgeo/osgeo4mac 编译 postgis 2.5.0 时,它默认(查找)postgresql 二进制文件夹以安装符号链接(或不链接)扩展。这里又是另一个兼容性问题。可以稍微修改一下自制文件并手动传输文件。这是个坏建议……包管理器(自制软件)需要保持一个连贯的生态系统,以提供稳定的工作空间。

建议的解决方案:

    到这里BigSQL 下载你选择的版本的dmg 在文件系统中安装所需的软件 在安装文件夹中,您会找到一个名为 pg9<b>x</b> 的目录; x 是版本号(例如 pg95 用于 postgresql 9.5 等等... 在此文件夹中,您将找到一个名为 pg9x.env 的文件 使用source /your/path/pg9x/pg9x.env 行将此文件发送到您的.profile 在主安装文件夹中,例如/your/path/pg9x/,您将找到一个名为pgc 的python 脚本,将其别名为.profilealias pgc="your/path/pgc" 保存您的.profile 并在命令提示符下使用source .profile 刷新您的环境变量 仍然在命令提示符下,键入pgc list,您将获得已安装软件包的列表。你会看到你下载的 postgesql 版本 要安装另一个版本的 postgresql,比如 9.6,输入 pgc install pg96 为pg95类型pgc install postgis22-pg95安装postgis 为 pg96 类型 pgc install postgis23-pg96 安装 postgis 现在,安装后您需要使用pgc init pg96pgc init postgis23-pg96 等初始化下载的组件... 检查你的守护进程是否正确运行,输入pgc status 启动您选择类型的版本守护程序,例如pgc start pg95 停止您选择的版本守护进程类型pgc stop pg95 安装还附带了 pgadmin3 的 LTS 版本,它适用于所有版本(不是 pgadmin3 的 brew 版本的情况),这非常方便 输入 pgc help 了解更多选项

让大象跳舞^^

希望这会有所帮助。

辣的。

【讨论】:

【参考方案4】:

我遇到了类似的问题,对我有用的是按照https://github.com/CloverHealth/homebrew-tap 的说明进行操作,这在精神上与@Antwan 的解决方案相似,但有更多的清理步骤,它也得到了稍晚的版本:postgresql 9.6 .10 和 postgis 2.5。

我的步骤与 CloverHealth 的步骤略有不同:我的 brew 版本不再支持brew switch postgresql 9.6.10,我先尝试了brew link postgresql@9.6.10,然后尝试了brew link postgresql@9.6,但都给出了

Error: no such keg

尝试brew search postgresql在cloverhealth Formulae旁边显示了一个绿色的小勾号,所以我尝试了brew link cloverhealth/tap/postgresql并得到了

Warning: Already linked: /usr/local/Cellar/postgresql/9.6.10

所以,好的,它已经链接了。除此之外,我的步骤与 CloverHealth 页面中描述的相同,现在我又开始运行了。

【讨论】:

以上是关于如何使用 Homebrew 将 Postgis 安装到 Postgres@9.6 的 Keg 安装中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 postgis 对象和函数定义加载到单独的模式中?

postgresql与postgis结合示例

如何将 PostGIS 添加到 PostgreSQL pgAdmin?

如何将纬度/经度对转换为 PostGIS 地理类型?

Mac电脑安装homebrew和npm

如何继续将关系空间数据库从 PostGIS 上传到 Geoserver?