Я установил 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.sql, вы можете запустить его в своей базе данных (и в файлеatial_ref_sys.sql), чтобы вручную разместить вашу базу данных. Сообщите об отсутствующем контрольном файле упаковщику, это большая проблема.
У меня просто была такая же проблема на 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. Ubuntu16.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.
В Ubuntu 14.04 вам также нужно установить postgresql-9.3-postgis-scriptsпакет. После того как я побежал
sudo apt-get установить postgis postgresql-9.3-postgis-scripts
Я тогда смог успешно запустить
СОЗДАТЬ РАСШИРЕНИЕ postgis;
в моей базе данных для инициализации PostGIS.
У меня была такая же проблема, я просто запустил команду
sudo apt-get install postgis
Я использовал Ubuntu 18.04
Другим источником, который вызвал проблему, может быть отсутствующий пакет PostGIS, это можно определить в меню установки или в вашем случае впоследствии. Таким образом, откройте открытые окна, перейдите в PostgreSQL и запустите Application Stack Builder . Затем выберите PostgreSQL, с этим загружаются возможные приложения. Для комплекта PostGIS вам просто нужно установить расширение, подходящее для вашей операционной системы (32- или 64-битную), просто напрямую в Spatial Extensions .
Ведь вот рекомендуемые шаги:
- запустить приложение Stack Builder
- Прямо к пространственным расширениям
- Установить пакет PostGIS
Теперь вы можете добавить расширение с помощью CREATE EXTENSION postgis;вашего SQL-запроса.
Я столкнулся с той же проблемой, думаю, проблема в том, что пакет postgis2_93 не установлен в ожидаемом месте, как и ожидал postgresql. Вы можете попробовать использовать другой репо, который может дать вам правильное место. Или вы можете искать, чтобы добавить расширения вручную, указав место. В моем случае файл находится в /usr/pgsql-9.4/
У меня был худший кошмар при установке Postgis 2.X на SLES 12 SP1. который не имеет совместимого пакета в репозитории Zypper
Вот как это решается на моем экземпляре сервера Postgres под управлением 9.4.X
Prerequsite пакеты, которые я установил до PostGis на основе ошибок
- Proj 4 Скачать исходный код Cold, Build -> make install
- установить Gdal andjibson, добавив zypper repo zypper addrepo http://download.opensuse.org/repositories/Application:Geo/SLE_12_SP1_Backports/Application:Geo.repo
- zypper установить gdal gdal-devel libjson-c-devel libjson
Установка Postgis
-
Загрузить исходный код postgis ( http://download.osgeo.org/postgis/source/postgis-2.3.0rc1.tar.gz )
-
Перейдите в папку Post gis ./configure —with-pgconfig = / usr / lib / postgresql94 / bin / pg_config —with-geosconfig = / usr / local / bin / geos-config make make install
теперь, если вы идете в postgress и создаете расширение postgis; будет работать
Важно, чтобы
при настройке вы указали путь pg-config и geosconfig, и вы НЕ ДОЛЖНЫ включать «без растра», так как RASTER играет главную роль в создании расширения postgis
Для Ubuntu 16.04 выполните эту команду:
sudo apt-get install postgis postgresql-9.6-postgis-2.3-scripts
обратите внимание, что вы должны указать свой номер версии для postgresql (9.6 в моем случае) и postgis (2.3 в моем случае).
Если вы используете brew, удалите PostGIS и переустановите его. Это создаст файлы расширения.
В некоторых дистрибутивах расширения упаковываются в пакет postgresql-contrib. Это, безусловно, верно для RedHat / CenOS, где расширения находятся в postgresql-contrib, где xx — номера magor и вспомогательных выпусков без полных остановок (postgresql95-contrib для postgres 9.5).
Для меня, используя Fedora 25 и pg 9.5, это сработало, когда я сделал следующие изменения:
-
Установить пакет yum postgis
$ yum установить postgis2_95
-
Загрузите пакет .deb сценариев Postgis
-
Извлеките его и скопируйте каталоги ‘contrib’ и ‘extension’ в распакованном файле usr / share / postgresql / 9.5 по тому же пути в вашем pgsql (возможно, изменив права доступа на).
-
Перезагрузите сервер
В моем случае (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.
#4643
closed
defect
(fixed)
| Reported by: | Owned by: | strk | |
|---|---|---|---|
| Priority: | blocker | Milestone: | PostGIS PostgreSQL |
| Component: | build/upgrade/install | Version: | master |
| Keywords: | Cc: |
Looks like our postgis 3.1 is broken again by PostgreSQL change upstream.
Debbie is showing this error on 3.1.0 (master) run
19:10:38 ERROR: CREATE EXTENSION ... FROM is no longer supported 19:10:38 LINE 1: CREATE EXTENSION postgis VERSION '3.1.0dev' FROM unpackaged
This must be a test we don’t run in the test run after postgresql is rebuilt since it didn’t error there.
Change History
(18)
| Component: | postgis → build/upgrade/install |
|---|---|
| Owner: | changed from pramsey to strk |
| Milestone: | PostGIS 3.1.0 → PostGIS PostgreSQL |
|---|
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
| Resolution: | → fixed |
|---|---|
| Status: | reopened → closed |
Note:
See TracTickets
for help on using tickets.
Size:
a
a
a
2021 April 02
Alexander Malykhin
под линуксом smartctl (smartmontools в дебиано-подобных, в остальных не знаю как пакет называется), под виндой куча вариантов в поиске )
Ну мои копипасты как раз из вывода smartctl
Ну мои копипасты как раз из вывода smartctl
ну так:
231 SSD_Life_Left 0x0000 098 098 011
98% осталось, как будет 11% — будет «ругаться»
Alexander Malykhin
ну так:
231 SSD_Life_Left 0x0000 098 098 011
98% осталось, как будет 11% — будет «ругаться»
А, так это проценты))
Ну конкретно в этом параметре да
у вас там 6Тб записано всего :
241 Lifetime_Writes_GiB 0x0032 000 000 000 Old_age Always — 6488
6488 — это Гб
ОГРОМНОЕ СПАСИБО! Век живи — век учись))))
пожалуйста
а ресурс 300+ Тб (в спеке нет такой цифры, на nix-е посмотрел, пересчитывать dwpd не хочется)

Коллеги, а кто-нибудь использует под прод 13 версию и 8.3.18 1C ? На линуксе и windows такую ошибку получил
А на 12.5 от постгри (которое 1С) и постгреспро 1с, но клиенты хотят зачем-то 13 🙂
Alexander Malykhin
у вас там 6Тб записано всего :
241 Lifetime_Writes_GiB 0x0032 000 000 000 Old_age Always — 6488
6488 — это Гб
Мне и процентов достаточно
Alexander Malykhin
ну так:
231 SSD_Life_Left 0x0000 098 098 011
98% осталось, как будет 11% — будет «ругаться»
А куда оно обычно ругается в линупсах?
Или journalctl смотреть на ошибки
А куда оно обычно ругается в линупсах?
ну не могу сказать за всех, в debian/ubuntu будет спамить на почту (если настроена) и в сислог
это если не отключено, конечно

Коллеги, а кто-нибудь использует под прод 13 версию и 8.3.18 1C ? На линуксе и windows такую ошибку получил
Мы пытались использовать ПГ13 с 8.3.18, но при добавлении ИБ в кластер 1С получили такую ошибку:
Ошибка при выполнении операции с информационной базой
Ошибка СУБД:
0A000: ERROR: CREATE EXTENSION … FROM is no longer supported
LINE 1: …reate extension if not exists mchar schema public FROM unpac…
В 13 ПГ запретили FROM unpackaged из-за проблем с безопасностью:
https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=70a77320
Проблема, что базу с версии 9.6 переносили через pg_dump/restore! Если загружать через ДТ — то норм!
Система управления базами данных Postgresql используется для хранения данных в табличной форме. База данных применяет несколько функций к данным, хранящимся в отношениях. Для улучшения и поддержки этих функций в базе данных PostgreSQL есть подход к расширению функциональных возможностей базы данных с помощью объектов SQL.
Эти расширения предназначены для использования в качестве дополнительных операторов для выполнения функций. В PostgreSQL присутствует несколько расширений; некоторые из них описаны в этой статье.
Содержание
- Синтаксис создания расширения
- Описание синтаксиса
- IF NOT EXISTS
- Schema_name
- CASCADE
- Примечания
- Создание расширения через pgAdmin
- Заключение
Синтаксис создания расширения
CREATE EXTENSION [IF NOT EXISTS ] extensionname
[ WITH ] [ SCHEMA schemaname ]
[ VERSION versionof_extension ]
[ FROM oldversion ]
[ CASCADE ]
Описание синтаксиса
Ключевое слово расширения CREATE создает новое расширение в файле PostgreSQL. В процессе загрузки расширения используются те же привилегии, которые требуются для создания объектов-компонентов. Для этого требуется суперпользователь или владелец, чтобы продолжить.
IF NOT EXISTS
Если какое-либо расширение с тем же именем, которое вы использовали в операторе создания, уже существует, это не вызовет ошибки. Но отображается только идентификатор уведомления, чтобы уведомить пользователя о расширении.
Schema_name
Чтобы установить или загрузить любое расширение, должна существовать схема, в которую вы хотите добавить расширение. Если схема не указана в команде, то по умолчанию используется текущая схема, использующая текущее создание объекта по умолчанию.
CASCADE
Эти функции автоматически устанавливают любое расширение, от которого зависит любое еще не установленное расширение. В то время как зависимости устанавливаются автоматически.
Для процесса реализации откройте оболочку psql, указав имя пользователя и пароль; это продолжится, чтобы начать с подключения базы данных Postgres к пользователю Postgres.

Как только соединение установлено, теперь вы можете применить любую команду. Ниже мы увидим работу расширения PostgreSQL в базе данных PostgreSQL. Если мы хотим добавить некоторые дополнительные функции или операции в виде расширения PostgreSQL, нам нужно добавить некоторые расширения.
Примечания
Прежде чем использовать команду create extension для загрузки любого расширения в базу данных, необходимо установить файлы, поддерживающие расширения. Предполагается, что расширения, используемые PostgreSQL, защищены от атак, совершенных во время установки.
Это встроенные функции, присутствующие в PostgreSQL. Вам просто нужно добавить их, используя их имя в команде. Например, мы использовали расширение citext. Простой синтаксис, используемый для включения любого расширения в PostgreSQL:
>> CREATE extension <name_of_extension>
>> psql –u db_postgres –d testing
>> CREATE extension citext;
Приведенные выше команды показывают, что PostgreSQL требует прав суперпользователя или владельца для загрузки расширений PostgreSQL. Хотя использование db_postgres не сработало, а расширения не были загружены, мы попытались загрузить расширения с помощью имени пользователя «Postgres».
>> psql –U Postgres –d testing;

После загрузки мы выбрали уже существующее расширение для загрузки в PostgreSQL. Здесь мы выбрали расширение «citext».
>> CREATE extension citext;
Вы можете видеть, что расширение создано. Чтобы увидеть описание и имена всех расширений, добавленных в Postgres, мы используем ’dx’.

Добавлено уже три расширения, кроме того, в названиях всех расширений отображается новое расширение citext. Описание расширения включает версию и схему каждого расширения, а также информацию, включая типы данных, административные функции и процедурные языки. Расширение citext отвечает за строки символов с учетом регистра.
Мы добавили расширение только без указания имени схемы или версии. Но вместе с именем схемы можно добавить расширение, как в примере ниже. Схема — это пространство имен, в котором есть объекты базы данных, такие как таблицы, индексы, типы данных, функции и т. д. Вот почему мы используем имя схемы, чтобы легко получить доступ ко всем функциям данных, присутствующих в схеме. Схема по умолчанию является общедоступной.
>> CREATE extension bloom WITH schema public;
Это расширение создано. Схема выбрана как общедоступная. Снова увидим описание расширений. Полный список будет описывать цель каждого описания, например расширение bloom, которое будет иметь метод доступа к bloom, включая единый файловый индекс.

Теперь мы будем загружать расширение с явлением, если оно не существует вместе с именем схемы.
>> CREATE extension IF NOT EXISTS store WITH schema public;
Снова проверьте только что установленное расширение. Это расширение помогает функциональности Postgres улучшать тип данных для хранения наборов ключей и значений.

Чтобы удалить расширение, будет использоваться приведенная ниже команда. Например, мы хотим удалить «hstore», чтобы использовать следующую команду.
>> DROP extension hstore;
Есть еще один способ использования команды добавления расширения. В этом подходе мы сначала устанавливаем путь поиска в схеме, а затем создаем расширение в этой конкретной схеме.
>> SET search_path = addons;
>> CREATE extension hstore schema public;
Вы можете видеть, что во-первых, search_path установлен, а сообщение «CREATE EXTENSION» показывает, что расширение создано. Таким образом, расширение добавляется и удаляется из оболочки PostgreSQL.
Создание расширения через pgAdmin
Теперь мы увидим добавление индексов через панель pgAdmin PostgreSQL. Указав пароль, вы перейдете дальше в панель базы данных.
Перейдите к левой панели на приборной панели, разверните параметры сервера и разверните базу данных PostgreSQL; будут показаны все базы данных, откройте соответствующую базу данных, например «Postgres».

В этом разделе вы найдете возможность расширения; разверните это, тогда будут показаны все созданные расширения.

Щелкнув правой кнопкой мыши по параметру расширения, открывается раскрывающийся список, в котором вы можете создать новое расширение, выбрав параметр создания.

При выборе опции создания открывается новое окно. Теперь вам нужно заполнить все текстовые поля. Например, выберите имя и раскрывающийся список всех открытых расширений. Мы выбрали расширение «autoinc». Опция комментария не является обязательной; вы можете оставить его пустым.

После заполнения общей информации вы можете перейти к части «Определение»; здесь упоминается схема расширения и версия. Мы заполним пространство словом «public» в качестве схемы и версией 1.0.

После добавления сохраните изменения. Затем обновите расширения; вы увидите, что новое расширение добавляется к уже существующему расширению.

В панели pgAdmin, если вы хотите удалить какое-либо расширение, вам нужно щелкнуть правой кнопкой мыши расширение, которое вы хотите удалить. Например, здесь мы хотим удалить параметр «autoinc» и выбрать параметр «УДАЛИТЬ/УДАЛИТЬ» в раскрывающемся списке.

После этого появится диалоговое окно, которое подтвердит удаление. Выберите «да», чтобы продолжить процесс удаления.

Заключение
Статья о «Postgres create extension» включает в себя процесс создания расширений как в оболочке psql, так и в pgAdmin. Некоторые часто используемые расширения также перечислены в статье. Расширения расширяют функциональные возможности объектов PostgreSQL, которые уже присутствуют в базе данных; кроме того, пользователь должен знать базу данных и создание схемы перед установкой расширений.
Информация находится в Makefile исходного установочного пакета.
Для окон Python:
ifeq ($(PORTNAME), win32)
pytverstr=$(subst .,,${python_version})
PYTHONDLL=$(subst ,/,$(WINDIR))/system32/python${pytverstr}.dll
Итак, напишите ответ:
- WINDIR : C: Windows
- pytverstr используется в make-файле, имеет параметр для определения версии python
- PYTHONDLL — расположение dll.
Чтобы проверить версию моей установки, я открываю файл plpython3.dll, расположенный в C: Program Files PostgreSQL 9.4 lib (измените путь в своей среде)
С помощью Notepad ++ и поиска PyUnicode_AsUTF8String версия python dll видна в последнем слове (в моем случае python33.dll)
Проверьте свою установку, чтобы выбрать хороший установщик python
SELECT version();
PostgreSQL 9.4.15, скомпилированный Visual C ++ build 1800, 64-разрядный
Поэтому мне нужно установить Python 33 в 64-битной версии.
изменить 2020-10-02
Вся эта информация также есть в документации к двоичному файлу ..pgsql doc installation-notes.html , см. Заголовок Процедурные языки .
изменить 2021-06-11
После установки хорошей версии Python в вашей системе вам необходимо скопировать ее на C:WindowsSystem32
Замена версии python старым именем не является хорошим решением, потому что у вас может быть librairie, которая не работает с этой версией. Сделайте это, если знаете о рисках. Поэтому, если вам нужна новейшая версия python для plpython, скомпилируйте ее или проверьте компиляцию edb, чтобы проверить, содержит ли она то, что вам нужно. Вы можете запросить эту информацию в ЕАБР.
1
GeoStoneMarten
11 Июн 2021 в 17:02