BuildPGSQLWindows/UsingLinux
Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску
Мануал для сборки PostgreSQL для Windows.
Сборка
- Взять rpm
- /var/ftp/pub/Etersoft/Postgres@Etersoft/8.4.4/sources/postgresql-8.4eter-8.4.4-alt1.1.src.rpm
- Распаковать
- rpm -i postgresql-8.4eter-8.4.2-alt1.src.rpm
- Приложить патчи.
- cd /RPM/SPECS
- rpmbuild -bp postgresql-8.4eter.spec
- Собрать
- В configure
- Найти такие строки. И удалить
Похоже этого делать не надо начиная с 8.4.4:
if test -z "$ZIC"; then { { echo "$as_me:$LINENO: error: When cross-compiling, either use the option --with-system-tzdata to use existing time-zone data, or set the environment variable ZIC to a zic program to use during the build." >&5 echo "$as_me: error: When cross-compiling, either use the option --with-system-tzdata to use existing time-zone data, or set the environment variable ZIC to a zic program to use during the build." >&2;} { (exit 1); exit 1; }; } fi
- Запустить configure
- ./configure --host i586-pc-mingw32 --without-zlib --without-readline --enable-nls --without-openssl --without-perl --without-python --without-tcl
- Запустить make
- make
- В src/interfaces/libpq/libpq-8.4eterdll.def
- Заменить LIBPQ-8.4ETER на LIBPQ-84ETER
- В postgresql-8.4.2/contrib/mchar/
- Скачать с http://www.icu-project.org/download/4.2.html icu4c-4_2_1-Win32-msvc9.zip
- Распаковать в postgresql-8.4.2/contrib/mchar
- (это связано с багой #5958, после решения надо изменить это описание)
- В Makefile изменить:
- SHLIB_LINK += -L/usr/local/lib -licuuc -l$(ICUNAME) -Wl,-rpath,'$$ORIGIN'
- на
- SHLIB_LINK += -Licu/lib -licuuc -l$(ICUNAME) -Wl,-rpath,'$$ORIGIN'
- PG_CPPFLAGS=-I/usr/local/include
- на
- PG_CPPFLAGS=-I/usr/local/include -Iicu/include
- В contrib/uuid-ossp/
- выполнить make (может не собраться, зато появится html)
- В Makefil'ах нужно замить строку
- PROGRAM = <name_program>
- на
- PROGRAM = <name_program>.exe
- в сделующих makefile'ах
- contrib/pg_standby/
- contrib/pgbench/
- сontrib/vacuumlo/
- сontrib/oid2name/
- Запустить make 2 раз.
- Запустить make -C contrib all и make -C contrib/xml2 all
- Все эти изменения должны решится с багой #5957
Установка nsis
nsis есть в репозитарии (mingw32-nsis).
Однако у него есть одна проблема -- неработающий плагин System (System.dll). По этому поводу есть бага #6119.
Пока она не решена System.dll можно копировать из nsis (http://nsis.sourceforge.net/Download) или у нас (/var/ftp/pvt/Windows/4makepg/nsis/System.dll/System.dll)
Также нужно добавить плагины (копируются в папку nsis plugins)
Все плагины лежат тут /var/ftp/pvt/Windows/4makepg/nsis/Plugins/
- NsSCM (http://nsis.sourceforge.net/NsSCM_plug-in) Для управления сервисами.
- UserMgr (http://nsis.sourceforge.net/UserMgr_plug-in) Для управления пользователями.
- Он был изменен, изменения в git'е c инсталлером.
- localelist Для получения списка всех локалей. Исходники в git'е c инсталлером.
Копирование всего необходимого
- Есть тут: /var/ftp/pvt/Windows/4makepg/nsis/OpenSSL-Win32
- pgadmin3 (http://www.pgadmin.org/download/windows.php)
- Есть тут: /var/ftp/pvt/Windows/4makepg/nsis/pgAdmin\ III
- msvcr
- Можно взять из инсталлера для pg_admin(как раз для него и нужно). http://www.pgadmin.org/download/windows.php.
- Есть тут: /var/ftp/pvt/Windows/4makepg/nsis/msvcr
- timezone (Не могу найти адрес откуда скачал)
- Есть тут: /var/ftp/pvt/Windows/4makepg/nsis/timezone
Сборка инсталлера
- Нужно взять из git'а nsis'овский инсталлер: git.eter:public/pginstaller
- Написать пути в файле setting.nsi
- SSLPATH -- Для OpenSSL
- LIBMINGWPATHFROM -- bin у mingw (например "\usr\i586-pc-mingw32\sys-root\mingw\bin\")
- MSVCRPATHFROM -- msvcr
- PGHEADPATHFROM -- Собранные исходники PostgreSQL
- PGADMINPATHFROM -- pgAdmin3
- TIMEZONEFROM -- timezone
- Собрать
- make
либо
makensis main.nsi