Como instalo os módulos de distância terrestre (e cubo de requisitos) para o Postgresql?

1

Eu preciso instalar earthdistance , uma extensão para o Postgresql. A página para isso diz:

The earthdistance module provides two different approaches to calculating great circle distances on the surface of the Earth. The one described first depends on the cube package (which must be installed before earthdistance can be installed). The second one is based on the built-in point datatype, using longitude and latitude for the coordinates.

Isso parece ser verdade ..

dealermade=# CREATE EXTENSION earthdistance FROM unpackaged;
ERROR:  required extension "cube" is not installed

No entanto, não consigo instalar cube

dealermade=# CREATE EXTENSION cube FROM unpackaged;
ERROR:  type "cube" does not exist

Parece estranho que a extensão cube exija o tipo cube que ele fornece. Estou usando PostgreSQL 9.1.1 . Estou fazendo isso no Ubuntu e tenho o pacote postgresql-contrib-9.1 instalado. Dito isto, não há cube.sql no meu sistema.

Se eu tentar instalar o earthdistance.sql diretamente, obtenho este

$ 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
    
por Evan Carroll 04.01.2012 / 17:34

1 resposta

7

FROM descompactado é apenas para quando ele já está instalado como um módulo de contribuição (ou seja, da atualização de 9.0) e você precisa transformá-lo em uma extensão. Portanto, apenas:

CREATE EXTENSION cube;
CREATE EXTENSION earthdistance;
    
por 04.01.2012 / 17:55