Назад | Перейти на главную страницу

Как установить модули earthdistance (и требуемый куб) для Postgresql?

Мне нужно установить расстояние от земли, расширение для Postgresql. На странице для этого написано:

Модуль Earthdistance предоставляет два разных подхода к вычислению расстояний по большому кругу на поверхности Земли. Тот, который описан первым, зависит от пакета cube (который должен быть установлен перед установкой earthdistance). Второй основан на встроенном типе данных точки с использованием долготы и широты в качестве координат.

Кажется, это правда ..

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

FROM unpackaged используется только тогда, когда он уже установлен как модуль contrib (т.е. после обновления с 9.0), и вам нужно превратить его в расширение. Поэтому просто:

CREATE EXTENSION cube;
CREATE EXTENSION earthdistance;