Запуск створення розширення postgis дає ERROR не вдалося відкрити файл управління розширенням?


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 та створенням розширення.

Що я пропускаю?


Те, що вам не вистачає, це "postgis.control" :) Питання - "чому" чи "куди". По-перше, подивіться, чи є у вас навіть копія, запустивши 'find / usr -name postgis.control'. Якщо ви цього не зробите, то це проблема з упаковкою із абсолютно новим пакетом postgis2_93, який потрібно виправити.
Пол Ремзі

О, ви можете бачити файли (включаючи "postgis.control"?) Share / contrib, але з повідомлення про помилку pgsql шукає у папці / розширенні. Можливо, було змінено місце розташування розширення за замовчуванням з 9,2 на 9,3, що упаковник пропустив.
Пол Рамзі

@PaulRamsey - я побіг find /usr -name postgis.controlі його немає. Я можу бачити деякі файли в папці / contrib; проте postgis.control не є серед них ... що ти пропонуєш зробити? чекати виправлення, зробити своє, ще щось?
програний коник

@PaulRamsey - я просто перевірити , що postgis-2.1.soє присутнім у /libЧи означає це , що я можу просто зробити свій власний файл postgis.control?
програв коня

Якщо ви можете знайти файл postgis.sql, ви можете запустити його у свою базу даних (і файл просторової_ресурси.sql), щоб вручну відокремити вашу базу даних. Повідомте про пакувальний файл про відсутній файл керування, це велика проблема.
Пол Ремзі

Відповіді:


12

Якщо ви можете знайти файл postgis.sql, ви можете запустити його у свою базу даних (і файл просторової_ресурси.sql), щоб вручну відокремити вашу базу даних. Повідомте про пакувальний файл про відсутній файл керування, це велика проблема.


54

У мене саме така проблема була на Ubuntu Server 14.04. Я встановив postgisрозширення з офіційних сховищ Ubuntu за допомогою apt-get install postgis.

Тоді find /usr -name postgis.controlрезультати не повернулися.

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

$ 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 

Рішення - встановити його.

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

apt-get install postgis*

Менеджер пакетів можливостей автоматично визначить правильні версії пакунків для встановлення. Також буде встановлено postgis-doc.

EDIT

Як і деякі люди, помічені в коментарях, 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 сервері:

  • підключіться до свого db за допомогою суперпользователя (postgres за замовчуванням)
  • бігати CREATE EXTENSION 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 install postgis postgresql-9.3-postgis-script

Тоді я зміг успішно бігати

СТВОРИТИ РОЗШИРЕННЯ постгіс;

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



2

Іншим джерелом, яке спричинило проблему, може бути відсутній пакет PostGIS, який можна визначити в меню встановлення або у вашому випадку згодом. Для цього відкрийте вікна, перейдіть до PostgreSQL та запустіть програму Builder стека програм . Потім виберіть PostgreSQL, з яким завантажуються можливі програми. Для пакету PostGIS потрібно просто встановити розширення, придатне до вашої операційної системи (32- або 64-бітне), просто направити на просторові розширення .

Адже тут рекомендовані кроки:

  1. запустити Builder стека програм
  2. Пряме до просторового розширення
  3. Встановіть пакет PostGIS

Тепер ви можете додати розширення CREATE EXTENSION postgis;у свій запит SQL.


1

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


1

У мене був найстрашніший кошмар під час встановлення Postgis 2.X на SLES 12 SP1. який не має сумісного пакета в zipper repo

Ось як це вирішено на моєму екземплярі сервера Postgres під керуванням 9.4.X

Пакети Prerequsite, які я встановив до PostGis, грунтуючись на помилках

  1. Proj 4 Завантажте джерело холодно, Build -> зробіть установку
  2. встановіть Gdal andjibson, додавши zypper repo zypper addrepo http://download.opensuse.org/repositories/Application:Geo/SLE_12_SP1_Backports/Application:Geo.repo
  3. zipper встановити gdal gdal-devel libjson-c-devel libjson

Встановлення Postgis

  • Завантажте вихідний код postgis ( http://download.osgeo.org/postgis/source/postgis-2.3.0rc1.tar.gz )

  • Перейдіть до папки "gis" ./configure --with-pgconfig = / usr / lib / postgresql94 / bin / pg_config --with-geosconfig = / usr / local / bin / geos-config зробить make install

тепер, якщо ви перейдете до постгресу та створите розширення 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 в моєму випадку).


0

Якщо ви використовуєте пивоваріння, видаліть PostGIS та перевстановіть його. Це створить файли розширень.


Це не спрацювало для мене, хоча я бачу їхbrew ls --verbose postgis
dps

0

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


0

Для мене, використовуючи Fedora 25 та pg 9.5, він працював, коли я робив такі зміни:

  • Встановіть пакет yum postgis

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

  • Завантажте пакунки postgis .deb

  • Витягніть його та скопіюйте каталоги '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 версії.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.