如何使用 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。
【讨论】:
工作出色。对未来搜索者的一个警告:不要费心尝试安装pex
的 brew
,它会为您安装 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 脚本,将其别名为.profile
和alias 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 pg96
或pgc 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 安装中?的主要内容,如果未能解决你的问题,请参考以下文章