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

时间:2017-11-02 15:43:16

标签: postgresql homebrew postgis postgresql-9.5 postgresql-9.6

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

执行'创建扩展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?,但后来的桶式公式

4 个答案:

答案 0 :(得分:5)

我设法在许多组合之后做到了。 简而言之,解决方案是安装旧版本的原始软件包postgres,切换到它,然后安装旧版本的postgis

安装postgres

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

brew install postgres

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

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 /如果需要,初始化DB

initdb /usr/local/var/postgres

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

createdb mydb
psql mydb
mydb=# CREATE EXTENSION postgis;

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

你好

我遇到了同样的问题,即多次实现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二进制文件夹以安装符号链接(或不链接)扩展名。这里又是另一个兼容性问题。可以修改自制软件文件并手动传输文件。这是个不明智的建议...程序包管理器(自制程序)需要保持一致的生态系统,以提供稳定的工作空间。

建议的解决方案:

  1. 转到BigSQL并下载您选择的版本的dmg
  2. 在文件系统中的所需位置安装软件
  3. 在安装文件夹中,您将找到一个名为pg9x的目录; x是版本号(例如PostgreSQL 9.5的pg95,依此类推...
  4. 在此文件夹中,您将找到一个名为pg9x.env的文件
  5. 通过.profile行将此文件发送到您的source /your/path/pg9x/pg9x.env
  6. 在主安装文件夹中,例如/your/path/pg9x/,您将找到一个名为pgc的python脚本,并将其别名为.profile的{​​{1}}
  7. 保存您的alias pgc="your/path/pgc"并在命令提示符下使用.profile刷新您的环境变量
  8. 仍在命令提示符下,键入source .profile,您将获得已安装软件包的列表。您将看到已下载的postgesql版本
  9. 要安装另一个版本的PostgreSQL,例如9.6,请键入pgc list
  10. 为pg95类型pgc install pg96安装postgis
  11. 为pg96类型pgc install postgis22-pg95安装postgis
  12. 现在,安装后,您需要使用pgc install postgis23-pg96pgc init pg96等初始化下载的组件。
  13. 要检查守护程序是否正常运行,请输入pgc init postgis23-pg96
  14. 启动您选择的类型的版本守护程序,例如pgc status
  15. 停止您选择的pgc start pg95类型的版本守护程序
  16. 该安装程序还附带了pgadmin3的LTS发行版,该发行版可以在所有版本上正常工作(而不是pgadmin3的brew版本),这非常方便
  17. 输入pgc stop pg95以获得更多选项

让大象跳舞^^

希望这会有所帮助。

辣。

答案 3 :(得分:0)

我遇到了类似的问题,对我有用的是按照 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 页面中描述的相同,现在我又开始运行了。