2015-06-17 2 views
0

Я нахожусь в Debian Wheezy, и у меня установлен PostgreSQL 9.3. Недавно я установил PostGIS 2.1.7 с пакетом сценариев, а также (63 .SQL файлов на общую сумму 38,7 MB)

apt-get install postgresql-9.3-postgis-2.1 

По словам способности, все устанавливается нормально. Однако, похоже, это не работает. После установки, это была ошибка, я получаю:

CREATE EXTENSION postgis; 
ERROR: could not open extension control file "/usr/local/pgsql-9.3.2/share/extension/postgis.control": File or directory not found 

Используя находку, я обнаружил это в другой папке:

[email protected]:/# find/-name postgis.control 
/usr/share/postgresql/9.3/extension/postgis.control 

Я скопировал файл на /usr/local/pgsql-9.3. 2/доля/расширение. Затем ошибка изменилась на:

ERROR: could not access file "$libdir/postgis-2.1": No such file or directory 

И здесь я не могу ничего сделать, чтобы заставить его работать. То, что я пробовал до сих пор, без успеха:

1- Редактирование postgis.control и изменение следующей строки. CREATE EXTENSION продолжали давать ту же самую ошибку около $ LIBDIR

# module_pathname = '$libdir/postgis-2.1' 
module_pathname = '/usr/local/pgsql-9.3.2/share/extension/' 

2- Полностью удалить PostGIS и переустановить его. Ничего не изменилось.

3- Создание символической ссылки, указывающей на /usr/lib/postgresql/9.3/lib/postgis-2.1.so. Те же ошибки

4 Создание переменной среды с именем LIBDIR указывая на следующие пути:

/usr/local/pgsql-9.3.2/share/extension/ 
/usr/share/postgresql/9.3/extension/ 
/usr/lib/postgresql/9.3/ 
/usr/lib/postgresql/9.3/lib 

Ни один из них работал, сообщение об ошибке хранится быть «не может получить доступ к $ LIBDIR/PostGIS». Я хочу отметить, что на этом последнем я также попытался создать новую папку с именем postgis-2.1 и скопировать postgis-2.1.so на нее, безрезультатно.

Какие варианты у меня остались, чтобы сделать постгизис работы? Что я пропустил?

EDIT1: Это результат DPKG -S PSQL

postgresql-client-9.3: /usr/share/locale/zh_TW/LC_MESSAGES/psql-9.3.mo 
postgresql-client-9.3: /usr/share/locale/es/LC_MESSAGES/psql-9.3.mo 
postgresql-client-9.3: /usr/share/locale/de/LC_MESSAGES/psql-9.3.mo 
postgresql-client-9.3: /usr/share/locale/zh_CN/LC_MESSAGES/psql-9.3.mo 
postgresql-client-9.3: /usr/share/locale/ru/LC_MESSAGES/psql-9.3.mo 
postgresql-client-9.3: /usr/lib/postgresql/9.3/bin/psql 
postgresql-client-9.3: /usr/share/locale/pt_BR/LC_MESSAGES/psql-9.3.mo 
postgresql-client-9.3: /usr/share/postgresql/9.3/man/man1/psql.1.gz 
postgresql-client-9.3: /usr/share/locale/pl/LC_MESSAGES/psql-9.3.mo 
postgresql-client-9.3: /usr/share/locale/ja/LC_MESSAGES/psql-9.3.mo 
postgresql-client-9.3: /usr/share/locale/fr/LC_MESSAGES/psql-9.3.mo 
postgresql-client-9.3: /usr/share/locale/it/LC_MESSAGES/psql-9.3.mo 
postgresql-client-9.3: /usr/share/locale/cs/LC_MESSAGES/psql-9.3.mo 
bash-completion: /usr/share/bash-completion/completions/psql 
postgresql-client-9.3: /usr/share/postgresql/9.3/psqlrc.sample 
odbcinst1debian2:amd64: /usr/lib/x86_64-linux-gnu/odbc/libodbcpsqlS.so 

EDIT2: По какой-то причине, эта строка в файле /home/postgres/.bashrc. Человек, который создал базу оставил работу по крайней мере, 2 года назад, так что я не могу даже спросить «почему?»:

export LD_LIBRARY_PATH=/usr/local/pgsql/lib:$LD_LIBRARY_PATH 

Перемещение postgis-2.1.so там сделал это «работа», но теперь Я столкнулся с еще одной проблемой.

create extension postgis; 
ERROR: could not load library "/usr/local/pgsql-9.3.2/lib/postgis-2.1.so": /usr/local/pgsql-9.3.2/lib/postgis-2.1.so: undefined symbol: HeapTupleHeaderGetDatum 

Я смотрю на подобных проблем, большинство, похоже, связаны с PostGreSQL быть 9.3.3 или ниже, с версией PostGIS, предназначенной для 9.3.4 или выше. Будучи построенным из source/script, я думаю, что обновление моего текущего Postgres (9.3.2) - это не совсем простое обновление apt-get.

Я продолжу искать решения, но если кто-нибудь может что-то придумать и хотел бы указать мне, я был бы благодарен.

+0

для PostgreSQL 9,3 упаковано/сконфигурировано для Debian не будет искать расширение внутри _/USR/местные/PGSQL-9.3.2_ Вы самостоятельно компилировать Postgres? –

+0

Где был установлен PostgreSQL? Это очень странная конфигурация. Что такое вывод 'dpkg -S/usr/local/pgsql-9.3.2/bin/psql'? Обычно вы не можете смешивать упакованные расширения (например, PostGIS) с самокомпилированным PostgreSQL. –

+0

Написал результат в редакции – Arthur

ответ

0

Поскольку версия PostgreSQL, которую я использовал, имела некоторые пользовательские строки при установке из исходного кода, она в значительной степени невосприимчива к незначительным обновлениям выпуска и расширениям.

Мне пришлось остановить службу, скопировать настройки (postgresql.config и pg_hba.conf), удалить ее и переустановить через apt-get.

Чтобы удалить

[email protected]:/home# wget http://ftp.postgresql.org/pub/source/v9.3.2/postgresql-9.3.2.tar.bz 
[email protected]:/home# tar xfvz postgresql-9.3.2 
[email protected]:/home# cd postgresql-9.3.2 
[email protected]:/home/postgresql-9.3.2# ./configure -prefix=/usr/local/pgsql-9.3.2 
[email protected]:/home/postgresql-9.3.2# make uninstall 
[email protected]:/home/postgresql-9.3.2# apt-get install postgresql-9.3 postgresql-server-dev-9.3 postgresql-doc-9.3 postgresql-contrib-9.3 postgresql-client-9.3 postgresql-client-common postgresql-9.3-postgis-2.1 

После этого, все идет гладко, новая версия сразу признала старые базы данных и пользователей/ролей. Я также успешно выполнил CREATE EXTENSION postgis без необходимости делать что-либо еще.

0

У меня была такая же проблема, и мне потребовалось два дня, чтобы решить эту проблему. Я создаю новый файл PostGIS.control вручную и скопировал содержимое из файла plpgsql.control и надел его. Тогда он сказал, что мне не хватает postgis - 1.0.sql. Я сделал то же самое, и создал его вручную и оставил его пустым.

Прежде чем делать все это я просто побежал "CREATE EXTENSION postgis;"