我需要安装地球距离,Postgresql 的一个扩展。它的页面显示:
earthdistance 模块提供了两种不同的方法来计算地球表面的大圆距离。第一种方法依赖于 cube 包(必须先安装 cube 包,然后才能安装 earthdistance)。第二种方法基于内置的 point 数据类型,使用经度和纬度作为坐标。
这似乎是真的。
dealermade=# CREATE EXTENSION earthdistance FROM unpackaged;
ERROR: required extension "cube" is not installed
cube
但是我也无法安装
dealermade=# CREATE EXTENSION cube FROM unpackaged;
ERROR: type "cube" does not exist
cube
扩展需要它提供的类型,这似乎有点奇怪cube
。我正在使用PostgreSQL 9.1.1
。我在 Ubuntu 上执行此操作,并且安装了配套软件包。话虽如此,但我的系统上postgresql-contrib-9.1
没有。cube.sql
如果我尝试直接安装,earthdistance.sql
我会得到这个
$ psql -d db -f /usr/share/postgresql/9.1/extension/earthdistance--1.0.sql
CREATE FUNCTION
psql:/usr/share/postgresql/9.1/extension/earthdistance--1.0.sql:31: ERROR: type "cube" does not exist
CREATE FUNCTION
CREATE FUNCTION
psql:/usr/share/postgresql/9.1/extension/earthdistance--1.0.sql:49: ERROR: type "earth" does not exist
psql:/usr/share/postgresql/9.1/extension/earthdistance--1.0.sql:55: ERROR: type earth does not exist
psql:/usr/share/postgresql/9.1/extension/earthdistance--1.0.sql:61: ERROR: type earth does not exist
psql:/usr/share/postgresql/9.1/extension/earthdistance--1.0.sql:67: ERROR: type earth does not exist
psql:/usr/share/postgresql/9.1/extension/earthdistance--1.0.sql:73: ERROR: type earth does not exist
psql:/usr/share/postgresql/9.1/extension/earthdistance--1.0.sql:79: ERROR: could not access file "MODULE_PATHNAME": No such file or directory
psql:/usr/share/postgresql/9.1/extension/earthdistance--1.0.sql:88: ERROR: function geo_distance(point, point) does not exist
答案1
FROM unpackaged 仅适用于已作为 contrib 模块安装(即从 9.0 升级)且您需要将其转换为扩展的情况。因此,只需:
CREATE EXTENSION cube;
CREATE EXTENSION earthdistance;