Сборка PostgreSQL + PostGIS + WKT Raster для Windows
по адресу http://gis-lab.info/qa/postgis-wkt.html
Краткое описание действий по установке «с нуля».
Руководство содержит пошаговые инструкции по сборке связки PostgreSQL + PostGIS + WKT Raster в системе Windows XP «с нуля».
При описании действий предполагается, что MinGW и MSYS установлены в каталоги, предлагаемые по умолчанию (C:\MinGW и C:\MSYS\1.0 соответственно), а исходные тексты располагаются на диске D:\ в подкаталогах папки src (например, D:\src\libtool-2.2).
Установка MinGW
MinGW (Minimalist GNU for Windows, бывший mingw32) — порт компилятора GNU Compiler Collection (GCC) для Microsoft Windows включающий набор свободных библиотек и заголовочных файлов для Windows API. MinGW позволят разработчикам создавать приложения Microsoft Windows. В MinGW включены расширения для Microsoft Visual C++ runtime library поддерживающие C99 (современный диалект C).
Скачайте MinGW Installer (текущая версия 5.1.4). Не удивляетесь малому размеру полученного файла — это онлайн-установщик, размер полной установки составит около 170 Мб.
- запустите установку
- выберите пункт «Download and Install»
- когда дойдете до выбора компонент — выбирайте все, кроме Ады. Хотя Аду тоже можно установить, вреда не будет
Устанавливать лучше в каталог предлагаемый по умолчанию (C:\MinGW). В дальнейшем будем предполагать, что MinGW установлен именно так.
Установка MSYS
MSYS (Minimal SYStem). Предоставляет пользователю POSIX-совместимую среду и набор консольных утилит, использующихся при сборке UNIX-программ. Изначально MSYS была разработана чтобы сделать возможным выполнение скриптов конфигурации и сборки (Makefiles), используемых при компиляции ПО с открытым кодом. Позже многие стали использовать ее как альтернативу интерфейсу командной строки Windows cmd.exe.
MSYS
Загрузить Msys Installer можно здесь.
- запускаем установку и следуем указаниям мастера
- каталог назначения (C:\msys\1.0) оставляем без изменений
- после установки появится окно с предложением провести послеустановочную настройку — соглашаемся
- на вопрос о наличии MinGW отвечаем положительно
- указываем каталог MinGW (если вы не меняли предлагаемые по умолчанию пути, пишите c:/mingw)
MSYS DTK
Далее скачиваем и устанавливаем стабильную сборку MSYS Development Toolkit. Установка не должна вызвать вопросов, просто следуем указаниям мастера.
MSYS Core
Кроме того, нужно скачать пакет MSYS Core 1.0.11. Архив распаковываем в C:\msys\1.0 с заменой файлов.
Дополнительные пакеты GnuWin32
Полный перечень пакетов можно посмотреть на странице gnuwin32.sourceforge.net/packages.html. Нам же для успешной компиляции необходимо скачать и установить только:
- Bison — парсер-генератор общего назначения, конвертирующий аннотированное контекстно-независимое описание в LALR- или GLR-парсер этого описания. Bison может использоваться для широкого круга языковых парсеров, начиная с простых для настольных калькуляторов и заканчивая языками программирования
- zlib — свободнораспространяемая, zip-совместимая библиотека компрессии общего назначения
- Flex — быстрый лексический анализатор-генератор. Flex является инструментом для разработки программ осуществляющих поиск по шаблонам текста. Существует множество применений Flex, включая написание компиляторов совместно с Bison
- GetText — набор инструментов для облегчения интернационализации приложений
- libiconv — библиотека обеспечивающая конвертацию текстов в различные кодировки.
При установке этих пакетов в качестве каталога назначения указываем C:\MinGW.
Замечание: авторы англоязычной инструкции по компиляции PostGIS рекомендуют не ставить бинарный пакет, а собирать libiconv из исходников. Однако никаких проблем при использовании бинарного пакета я не заметил. Если есть желание — можете скачать исходники этой библиотеки (я брал версию 1.13.1), распаковать во временную папку (например, D:\src\libiconv-1.13.1) и собрать ее самостоятельно. Для этого:
- открываем консоль MSYS используя ярлык на рабочем столе или пункт в меню «Пуск»
- последовательно вводим команды, завершая каждую из них нажатием клавиши Enter
cd /d/src/libiconv-1.13.1 ./configure --prefix=/c/mingw && make && make install
Макропроцессор m4
Как показала практика, макропроцессор из состава MSYS довольно старый. Для успешной сборки его необходимо обновить. Поэтому скачиваем m4-1.4.7-MSYS.tar.bz2, распаковываем архив в папку исходников и копируем файл m4.exe в C:\msys\1.0\bin.
Переменные окружения
Чтобы командный интерпретатор знал где искать инструменты из состава MinGW и/или GnuWin32, необходимо обновить переменные окружения. Процедура эта не обязательная и направлена исключительно на повышение удобства работы.
- кликните правой кнопкой мыши по значку «Мой компьютер» и выберите «Свойства»
- откройте вкладку «Дополнительно», нажмите кнопку «Переменные среды»
- в списке «Системные переменные» найдите строку PATH и двойным щелчком на ней начните редактирование
- появится диалоговое окошко с двумя поля ввода, в нижнем поле содержится значение переменной. Будьте осторожны, не удаляйте существующие записи. Перейдите в конец строки и добавьте ;C:\MinGW\bin. Не забудьте начальную точку с запятой — она там не для красоты стоит. После окончания редактирования нажмите OK
- создайте переменную HOME. Для этого нажмите на кнопку «Создать», в верхнее поле введите HOME, а в нижнее — C:\msys\1.0\home
- закройте все окна последовательно нажимая OK
Пакет autotools
Широко используется разработчиками и включает в себя autoconf, automake и libtool. Выкачиваем исходники с сервера gnu.org
Архивы распаковываем в каталог исходных текстов, каждый в отдельную папку. Запускаем консоль MSYS, если она еще не запущена, и по очереди собираем
cd /d/src/autoconf-2.63
configure --prefix=/c/mingw && make && make install
cd /d/src/automake-1.9
configure --prefix=/c/mingw && make && make install
cd /d/src/libtool-2.2
configure --prefix=/c/mingw && make && make install
Собираем PostgeSQL
Скачиваем исходные тексты последней стабильной версии PostgreSQL с http://www.postgresql.org/ftp/source/. Распаковав архив в D:\src\postrgesql, обнаружим в нем три папки: backend, postgresql-8.3.7 и src. Для успешной компиляции необходимо из папки D:\src\postgresql\backend\utils\mb\conversion_procs\euc_jis_2004_and_shift_jis_2004\ перенести единственный лежащий там файл в D:\src\postgresql\postgresql-8.3.7\src\backend\utils\mb\conversion_procs\euc_jis_2004_and_shift_jis_2004\. Таким же образом поступаем и с папкой src: переносим файлы из D:\src\postgresql\src\backend\utils\mb\conversion_procs\utf8_and_shift_jis_2004\ в D:\src\postgresql\postgresql-8.3.7\src\backend\utils\mb\conversion_procs\utf8_and_shift_jis_2004\. Теперь можно компилировать. Запускаем MSYS и выполняем
cd /d/src/postgresql/postgresql-8.3.7 ./configure --prefix=/c/postgres && make && make install
По окончанию процесса PostgreSQL будет находиться в C:\postgres.
Собираем GEOS
GEOS (Geometry Engine — Open Source) — порт на язык C++ пакета топологии Java — Java Topology Suite (JTS). GEOS предоставляет доступ к функциональности JTS с помощью C++. Это включает пространственные функции операторы определенные спецификацией OpenGIS Simple Features для SQL, а также специфические функции работы с топологией JTS.
Скачиваем последнюю версию GEOS с сервера trac.osgeo.org/geos/, и разворачиваем архив в каталог исходных текстов. В консоли MSYS переходим в созданный каталог и выполняем
cd /d/src/geos-3.1.0 configure --prefix=/c/postgres && make && make install
При желании можно удалить отладочную информацию из скомпилированной библиотеки командой
strip /c/postgres/bin/libgeos-3-1-1.dll
Собираем Proj
Proj — свободная библиотека и набор инструментов, являющихся де-факто стандартом в области трансформации координат и проекционных преобразований
Последнюю версию proj можно взять здесь. Получив архив, выполняем уже знакомую последовательность действий: извлекаем файлы из архива, переходим в каталог с иходниками и компилируем
cd /d/src/proj-4.6.1 configure --prefix=/c/postgres && make && make install
Собираем PostGIS
Компилировать будем версию из svn, графическую оболочку для shp2pgsql собирать не будем. Загружаем архив PostGIS-1.4.0SVN.tar.gz, распаковываем его содержимое в каталог исходных текстов, открываем консоль MSYS и выполняем
cd /d/src/postgis-1.4.0SVN configure --prefix=/c/postgres --with-pgconfig=/c/postgres/bin/pg_config --with-geosconfig=/c/postgres/bin/geos-config --with-projdir=/c/postgres make && make install
Собираем WKT Raster
Скачиваем архив с последней svn версией, распаковываем в D:\src\wktraster-0.1.6SVN, открываем окно MSYS и выполняем
cd /d/src/wktraster-0.1.6SVN ./configure --with-postgis-sources=/d/src/postgis-1.4.0SVN --with-pgconfig=/c/postgres/bin/pg_config --with-geosconfig=/c/postgres/bin/geos-config make && make install
Настройка и использование
Самое сложное позади, осталось скопировать все dll файлы из папки C:\postgres\lib в C:\postgres\bin, добавить C:\postgres\bin в переменную PATH и можно приступать к настройке сервера.
Прежде всего необходимо создать пользователя, от имени которого будет стартовать сервер PostgreSQL. Правой кнопкой мыши щелкаем по значку «Мой компьютер», выбираем «Управление», открываем раздел «Служебные программы → Локальные пользователи и группы → Пользователи". Создаем пользователя postgres и задаем ему пароль.
Открываем командную строку Windows «Пуск → Выполнить» в окне вводим текст
runas /user:postgres cmd.exe
и дальнейшие действия выполняем в открывшемся окне консоли.
- инициализируем каталог баз данных (кодировку и путь указывайте по своему усмотрению)
initdb -E win1251 -D:\pg_data
- запускаем сервер
postmaster -D:\pg_data
После старта он откроется в отдельном окне - создаем базу данных postgis
createdb -U postgres postgis
- включаем поддержку процедурного языка PL/pgSQL
createlang plpgsql -U postgres -D:\pg_data
- загружаем функции и объекты, необходимые для работы с пространственными данными
psql -а c:\postgres\share\contrib\postgis.sql -U postgres -d postgis
- загружаем описания систем координат
psql -а c:\postgres\share\contrib\spatial_ref_sys.sql -U postgres -d postgis
- загружаем функции и объекты, необходимые для работы растровыми данными
psql -а c:\postgres\share\contrib\rtpostgis.sql -U postgres -d postgis
Остановить сервер можно выполнив от имени пользователя postgres
pg_ctl.exe stop -D D:\pg_data
При желании можно настроить запуск сервера в качестве службы. Для этого:
- останавливаем сервер, если он запущен
pg_ctl.exe stop -D D:\pg_data
- регистрируем службу
pg_ctl.exe register -N "PostgreSQL_8.3.7" -U postgres -D:\pg_data
- правой кнопкой мыши щелкаем по значку «Мой компьютер», выбираем «Управление», открываем раздел «Службы и приложения → Службы», двойным кликом по названию только что созданной службы открываем ее свойства, закладка «Вход в систему»
- задаем имя пользователя ".\postgres" (без кавычек)
- в окне ввода пароля указываем правильный пароль, жмем применить
- получаем сообщение, что пользователю postgres разрешен вход в качестве службы, закрываем окно свойств и стартуем службу
Созданная в процессе сборки среда MSYS/MinGW может использоваться и в дальнейшем, например, при обновлении или для сборки другого ПО. Если же вы не планируете еще что-либо собирать или обновляться по мере выхода новых версий — можно смело удалить каталоги d:\src, c:\MinGW и c:\MSYS, для функционирования собранных нами компонент они уже не нужны.