Запуск Create Extension postgis дает ошибку, не удалось открыть файл управления расширением?

51

Я установил PostgreSQL 9.x и PostGIS 1.5 / 2.0 несколько раз, и у меня никогда не было этой проблемы.

Я только что установил новый сервер CentOS 6.3, и у меня работает Postgres 9.3, как и ожидалось. Я бегал

yum install postgis2_93

и я могу видеть файлы в

/usr/pgsql-9.3/share/contrib/

однако, когда я бегу

CREATE EXTENSION postgis;

я получил

ERROR:  could not open extension control file "/usr/pgsql-9.3/share/extension/postgis.control": No such file or directory

Учебники ( # 1 , # 2 ), которые я использовал, не показывают никаких шагов между установкой PostGIS и созданием расширения.

Чего мне не хватает?

losthorse
источник
Чего вам не хватает, так это «postgis.control» :) Вопрос в том, «почему» или «где». Во-первых, посмотрите, есть ли у вас копия, запустив 'find / usr -name postgis.control'. Если вы этого не сделаете, то это проблема упаковки с новым пакетом postgis2_93, которую нужно исправить.
Пол Рэмси
О, вы можете видеть файлы (включая «postgis.control»?) Share / contrib, но из сообщения об ошибке pgsql ищет в share / extension. Возможно, изменилось расположение расширения по умолчанию с 9.2 до 9.3, которое упустил упаковщик.
Пол Рэмси
@PaulRamsey - я бегал find /usr -name postgis.controlи его нет. Я могу видеть некоторые файлы в share / contrib; Тем не менее, postgis.control не входит в их число ... что вы предлагаете мне сделать? ждать исправления, сделать свое собственное, что-то еще?
потерянная лошадка
@PaulRamsey - я только что проверил, postgis-2.1.soприсутствует /libли это, значит, я могу просто создать свой собственный файл postgis.control?
потерянная лошадка
Если вам удастся найти файл postgis.sql, вы можете запустить его в своей базе данных (и в файлеatial_ref_sys.sql), чтобы вручную разместить вашу базу данных. Сообщите об отсутствующем контрольном файле упаковщику, это большая проблема.
Пол Рэмси

Ответы:

12

Если вам удастся найти файл postgis.sql, вы можете запустить его в своей базе данных (и в файлеatial_ref_sys.sql), чтобы вручную разместить вашу базу данных. Сообщите об отсутствующем контрольном файле упаковщику, это большая проблема.

Пол Рэмси
источник
54

У меня просто была такая же проблема на Ubuntu Server 14.04. Я установил postgisрасширение из официальных репозиториев Ubuntu, используя apt-get install postgis.

Тогда find /usr -name postgis.controlне вернул никаких результатов.

Причина не extension/postgis.controlбыла установлена, потому что постгис-скрипты не были установлены.

$ aptitude search postgis
i   libpostgis-java                                  - Geographic objects support for PostgreSQL -- JDBC support 
i   postgis                                          - Geographic objects support for PostgreSQL                 
p   postgis:i386                                     - Geographic objects support for PostgreSQL                 
i   postgis-doc                                      - Geographic objects support for PostgreSQL -- documentation
i   postgresql-9.3-postgis-2.1                       - Geographic objects support for PostgreSQL 9.3             
p   postgresql-9.3-postgis-2.1:i386                  - Geographic objects support for PostgreSQL 9.3             
i   postgresql-9.3-postgis-2.1-scripts               - PostGIS for PostgreSQL 9.3 -- scripts -- dummy package    
i   postgresql-9.3-postgis-scripts                   - Geographic objects support for PostgreSQL 9.3 -- scripts 

Решение состоит в том, чтобы установить это.

На Debian-подобных дистрибутивах:

apt-get install postgis*

Менеджер пакетов aptitude автоматически определит правильные версии пакетов для установки. Postgis-doc также будет установлен.

РЕДАКТИРОВАТЬ

Как некоторые люди заметили в комментариях, postgis*это не является обязательным, поскольку оно устанавливает некоторые пакеты, которые строго не требуются, чтобы заставить его работать.

Обязательные пакеты postgisи postgresql-9.x-postgis-scriptsметапакеты. Они выбирают правильную реальную версию для вашей системы. Таким образом, команды для установки необходимых пакетов

 $ sudo apt-get install postgis postgresql-9.3-postgis-scripts

для postgresql-9.3. Ubuntu 16.04запускается, postgresql-9.5поэтому команда становится:

 $ sudo apt-get install postgis postgresql-9.5-postgis-scripts

Вы можете проверить успешность операции, выполнив следующую команду:

find /usr -name postgis.control

На моем сервере он теперь возвращает:

/usr/share/postgresql/9.3/extension/postgis.control

Теперь вы можете включить расширение в любой базе данных на вашем сервере postgres:

  • подключиться к вашей БД с суперпользователем (postgres по умолчанию)
  • бегать CREATE EXTENSION postgis;

Ваша общедоступная схема теперь содержит все объекты и функции Postgis.

Реми Б.
источник
... хотелось бы, чтобы у вас тоже было направление Windows
CodyBugstein
...неважно! Решил это в Windows, переустановив PostGIS через StackBuilder
CodyBugstein
4
Спасибо, это исправило мою проблему с Ubuntu! «Postgis *» получает кучу вещей, которые вам не нужны. Я думаю, что "apt-get install postgis postgresql-9.3-postgis-2.1" достаточно.
Нельсон
Возможно ты прав. В моем случае полная установка предпочтительнее, но это не правило.
Реми Б.
правила "apt-get install postgis *". Спасибо!
nemesisdesign
18

В Ubuntu 14.04 вам также нужно установить postgresql-9.3-postgis-scriptsпакет. После того как я побежал

sudo apt-get установить postgis postgresql-9.3-postgis-scripts

Я тогда смог успешно запустить

СОЗДАТЬ РАСШИРЕНИЕ postgis;

в моей базе данных для инициализации PostGIS.

Эдвард
источник
3

У меня была такая же проблема, я просто запустил команду

sudo apt-get install postgis

Я использовал Ubuntu 18.04

Мухаммед Фузайл Зубари
источник
Большое спасибо, что решил это для меня
Ибрагим Мухаммед
нет проблем :) добро пожаловать!
Мухаммед Фузайль Зубари
2

Другим источником, который вызвал проблему, может быть отсутствующий пакет PostGIS, это можно определить в меню установки или в вашем случае впоследствии. Таким образом, откройте открытые окна, перейдите в PostgreSQL и запустите Application Stack Builder . Затем выберите PostgreSQL, с этим загружаются возможные приложения. Для комплекта PostGIS вам просто нужно установить расширение, подходящее для вашей операционной системы (32- или 64-битную), просто напрямую в Spatial Extensions .

Ведь вот рекомендуемые шаги:

  1. запустить приложение Stack Builder
  2. Прямо к пространственным расширениям
  3. Установить пакет PostGIS

Теперь вы можете добавить расширение с помощью CREATE EXTENSION postgis;вашего SQL-запроса.

sqlmaster3000
источник
1

Я столкнулся с той же проблемой, думаю, проблема в том, что пакет postgis2_93 не установлен в ожидаемом месте, как и ожидал postgresql. Вы можете попробовать использовать другой репо, который может дать вам правильное место. Или вы можете искать, чтобы добавить расширения вручную, указав место. В моем случае файл находится в /usr/pgsql-9.4/

оттенок
источник
1

У меня был худший кошмар при установке Postgis 2.X на SLES 12 SP1. который не имеет совместимого пакета в репозитории Zypper

Вот как это решается на моем экземпляре сервера Postgres под управлением 9.4.X

Prerequsite пакеты, которые я установил до PostGis на основе ошибок

  1. Proj 4 Скачать исходный код Cold, Build -> make install
  2. установить Gdal andjibson, добавив zypper repo zypper addrepo http://download.opensuse.org/repositories/Application:Geo/SLE_12_SP1_Backports/Application:Geo.repo
  3. zypper установить gdal gdal-devel libjson-c-devel libjson

Установка Postgis

теперь, если вы идете в postgress и создаете расширение postgis; будет работать

Важно, чтобы при настройке вы указали путь pg-config и geosconfig, и вы НЕ ДОЛЖНЫ включать «без растра», так как RASTER играет главную роль в создании расширения postgis

Прадип Б
источник
1

Для Ubuntu 16.04 выполните эту команду:

sudo apt-get install postgis postgresql-9.6-postgis-2.3-scripts

обратите внимание, что вы должны указать свой номер версии для postgresql (9.6 в моем случае) и postgis (2.3 в моем случае).

molhamaleh
источник
0

Если вы используете brew, удалите PostGIS и переустановите его. Это создаст файлы расширения.

Джеймс
источник
Это не сработало для меня, хотя я вижу их вbrew ls --verbose postgis
дпс
0

В некоторых дистрибутивах расширения упаковываются в пакет postgresql-contrib. Это, безусловно, верно для RedHat / CenOS, где расширения находятся в postgresql-contrib, где xx - номера magor и вспомогательных выпусков без полных остановок (postgresql95-contrib для postgres 9.5).

louigi600
источник
0

Для меня, используя Fedora 25 и pg 9.5, это сработало, когда я сделал следующие изменения:

  • Установить пакет yum postgis

    $ yum установить postgis2_95

  • Загрузите пакет .deb сценариев Postgis

  • Извлеките его и скопируйте каталоги 'contrib' и 'extension' в распакованном файле usr / share / postgresql / 9.5 по тому же пути в вашем pgsql (возможно, изменив права доступа на).

  • Перезагрузите сервер

Луис Фернандо да Силва
источник
0

В моем случае (Linux Mint 18.1 Serena) мне пришлось удалить posgresql-9.5и postgisзаново установить из репозитория по умолчанию.

sudo apt remove postgis*
sudo apt remove postgresql*

И установите версию 9.6 из репозитория PosgreSQL :

sudo apt install postgresql-9.6 postgresql-9.6-postgis-2.3 postgresql-9.6-postgis-2.3-scripts postgresql-contrib-9.6

Я не уверен, версия имеет какое-либо отношение к отсутствующему postgis.controlфайлу. Но я все равно хотел версию 9.6.

WooYek
источник