PostGIS Homebrew安装引用旧路径?

时间:2013-04-28 16:24:03

标签: postgresql postgis homebrew

我升级并随后重新安装PostGIS& OS X Mountain Lion上的PostgreSQL。尝试使用PostGIS扩展时,收到以下错误:

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

似乎PostGIS(和PostgreSQL以及??)仍在/postgresql/9.2.3/目录中查找所需文件,而不是/postgresql/9.2.4/目录中。我使用Homebrew通过以下命令删除所有以前版本的PostgreSQL:

brew remove --force postgresql

有人可以指出我正确的方向,为什么会出现这个问题? (某处或某处必须有一个挥之不去的配置文件?)

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:12)

问题是您在代码库的9.2.3版上运行了psql服务器。要测试这个,请加载一个psql控制台,你应该在顶部看到这个:

psql (9.2.4, server 9.2.3)
Type "help" for help.

请注意上面的“服务器9.2.3”注释。如果您运行的服务器版本正确,您会看到:

psql (9.2.4)
Type "help" for help.

要解决此问题,请按照brew info postgresql给出的关于卸载和加载LaunchAgent的说明进行操作 - 这将使用新代码重新启动服务器:

To reload postgresql after an upgrade:
    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

答案 1 :(得分:1)

Homebrew的设计通常是在removeupgrade期间保留用户可编辑的配置文件和生成的数据文件,因此它们会在版本之间保留。听起来你是对的,这是一个配置文件留在某处。

/usr/local/etc中没有postgres的全局配置文件。所以它可能是用户数据文件。您是否使用以前版本的postgres创建了任何数据库并在其中使用postgis扩展?这些数据库中的配置文件可能是指旧的postgres版本。这些数据库通常位于/usr/local/var/postgres之下。看看那里的.conf文件,看看你是否可以编辑它们来修复扩展路径或重新创建数据库。

答案 2 :(得分:1)

我刚刚遇到了同样的问题,在这些解决方案没有解决之后,我找到了自己的一个:

brew uninstall postgis && brew install postgis

这项工作的关键在postgis的构建输出中突显出来:

==> ./configure --with-projdir=/usr/local --with-jsondir=/usr/local/opt/json-c --with-pgconfig=/usr/local/Cellar/postgresql/9.4.4/bin/pg_config --disable-nls

请注意,它使用pg_config,很可能是为了确定扩展所需的所有文件所需的位置。

答案 3 :(得分:1)

在终端,我跑了

$ psql

在psql中,它向我显示了这个

> psql (9.6.3, server 9.5.7)
> Type "help" for help.

我试图运行以下

> CREATE EXTENSION postgis;

并收到此错误消息

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

我通过

退出psql
> \q

然后跑

$ brew services list

然后返回以下结果

Name           Status  User     Plist
mysql          stopped          
mysql@5.6      stopped          
postgresql     stopped          
postgresql@9.5 started doquyena /Users/doquyena/Library/LaunchAgents/homebrew.mxcl.postgresql@9.5.plist
redis          stopped  

我发现我的psql在不兼容的psql服务器上运行,所以我用以下命令更正了它

$ brew services stop postgresql@9.5
$ brew services start postgresql

当我回到psql

$ psql

它现在显示了这表示我现在在匹配的服务器上

> psql (9.6.3)
> Type "help" for help.

因此,当我尝试再次创建扩展时没有错误消息

> CREATE EXTENSION postgis;

然后我就可以创建像这样的postgis数据表而没有任何问题

> CREATE TABLE s_test(geom geometry);