我已经通过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?,但后来的桶式公式
答案 0 :(得分:5)
我设法在许多组合之后做到了。
简而言之,解决方案是安装旧版本的原始软件包postgres
,切换到它,然后安装旧版本的postgis
。
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
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二进制文件夹以安装符号链接(或不链接)扩展名。这里又是另一个兼容性问题。可以修改自制软件文件并手动传输文件。这是个不明智的建议...程序包管理器(自制程序)需要保持一致的生态系统,以提供稳定的工作空间。
建议的解决方案:
pg9x
的目录; x是版本号(例如PostgreSQL 9.5的pg95,依此类推... pg9x.env
的文件.profile
行将此文件发送到您的source /your/path/pg9x/pg9x.env
/your/path/pg9x/
,您将找到一个名为pgc
的python脚本,并将其别名为.profile
的{{1}} alias pgc="your/path/pgc"
并在命令提示符下使用.profile
刷新您的环境变量source .profile
,您将获得已安装软件包的列表。您将看到已下载的postgesql版本pgc list
pgc install pg96
安装postgis pgc install postgis22-pg95
安装postgis pgc install postgis23-pg96
或pgc init pg96
等初始化下载的组件。pgc init postgis23-pg96
pgc status
pgc start pg95
类型的版本守护程序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 页面中描述的相同,现在我又开始运行了。