pgRouting依赖安装
发布于 2021127|遵循 CC BY-NC-SA 4.0 许可

问题概述

几个月前安装pgSQL和postGIS的时候是通过EDB安装,使用没有什么问题。然而安装pgRouting的时候出了些意外。

对于pgRouting的安装,官方文档给出了两个解决方案。

  1. 利用Homebrew安装,但是由于pgSQL并不在Homebrew的管理下,导致安装之后启动扩展时,postgreSQL就会尝试在一个错误的路径(例如「/Library/PostgreSQL/13/share/postgresql/extension/」)下查找插件pgrouting.control
  2. 在GitHub上下载源码并自己编译。不过由于架构的问题,导致make过程失败。搜索Stack Overflow之后发现解决方案可能需要一个x86版本的brew。

考虑到个人经验、解决问题能力之类的因素,还是决定通过卸载之前通过EDB安装的pgSQL,重新在Homebrew下安装来解决。

解决过程

卸载

如果已有数据库里有数据需要备份记得提前备份。

EDB官网上甚至有卸载软件的详细指南,真良心。卸载程序位于/Library/PostgreSQL/13下。open uninstall-postgres.app命令打开卸载程序,执行一键卸载。

卸载完毕,一些遗留的文档文件需要手动删除。

安装

brew install postgresql postgis pgrouting来安装所需要的全部软件和插件。

安装完毕之后,系统会提示我们手动启动postgresql的后台服务。

sh
复制代码
1brew services restart postgresql

在启动服务之前,最好先重启电脑,因为此前卸载的postgresql仍然占用了/tmp文件夹中的某些文件。如果直接启动新服务,很可能启动失败,并在启动日志中出现如下错误:

could not open lock file "/tmp/.s.PGSQL.5432.lock": Permission denied

启动服务后,检查一下服务状态。started表示服务启动成功。

sh
复制代码
1brew services list 2# Name Status User File 3# postgresql started palemoons ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

创建postgres用户

Homebrew下安装的PostgreSQL并不会为我们创建postgres用户,因此我们需要自己创建一个超管用户postgres。

在终端环境下(不需要进入数据库),执行createuser -s postgres创建用户。

pgAdmin

至此,数据库已经可以正常使用了。不过个人感觉pgAdmin还是挺爽的,写作业还方便,所以装一个玩玩。

sh
复制代码
1brew install --cask pgadmin4

好吧,第一次知道Homebrew还能安装GUI程序(但也在情理之中?)。

Comments