- Методика сборки дистрибутива СУБД PostgreSQL 9.6 c патчами для работы с 1С:Предприятие
- Сборка для Debian на примере Ubuntu 16.04 Server (x86_64)
- 1. Подготовка исходного пакета
- 2. Подготовка сборочного окружения
- 3. Сборка
- Сборка для RPM на примере CentOS 7 x86_64
- 1. Подготовка сборочного окружения
- 2. Подготовка исходного пакета
- 3. Cборка
- Сборка для Windows 32/64-bit на примере Windows 7 64-bit
- 1. Подготовка сборочного окружения
- 2. Подготовка исходного пакета
- 3. Сборка
- Записки IT специалиста
- Установка PostgreSQL-1C на платформу Linux (Ubuntu/Debian)
Методика сборки дистрибутива СУБД PostgreSQL 9.6 c патчами для работы с 1С:Предприятие
Готовые пакеты с применением всех патчей публикуются на сайте фирмы «1С» в составе релиза каждой версии СУБД «Postgres».
Данная методика предназначена для тех, кто хочет применить патчи выборочно либо внести другие изменения в исходный код Postgres, но при этом собрать версию для работы с платформой 1С:Предприятие.
Для сборки дистрибутива СУБД PostgreSQL 9.6 применением патчей для оптимизации работы с платформой 1С:Предприятие из исходного кода необходимо скачать с сайта фирмы «1С» публикуемый в составе релиза версии PostgreSQL пакет для требуемой операционной системы:
Данная версия поддерживает дистрибутивы: RPM — CentOS 7 и Redhat 7, Debian — Ubuntu 16.04.
Для корректной сборки и установки необходимо наличие дополнительных модулей и библиотек:
- readline
- libtermcap
- krb5-libs
- openssl
- libicu50
- libicu-devel (для целей сборки)
Сборка для Debian на примере Ubuntu 16.04 Server (x86_64)
Сборка в данном примере будет осуществляться с помощью Pbuilder – инструмента, который осуществляет сборку пакетов с учетом зависимостей в «чистом» окружении, создаваемом индивидуально для каждой сборки (что особенно актуально в случае, если сборка осуществляется не в целевой среде и нет необходимости в реальной установке всех пакетов зависимостей).
1. Подготовка исходного пакета
Создадим в домашнем каталоге директорию /Postgres, переместим в нее загруженный пакет и распакуем:
/Postgres mv …/Patch_SUBD_PostgreSQL_9.6.3_1.1C.tar.bz2
/Postgres tar xfv Patch_SUBD_PostgreSQL_9.6.3_1.1C.tar.bz2
/Postgres появится каталог Patch_SUBD_PostgreSQL_9.6.3-1.1C, содержащий архив с оригинальными исходными файлами PostgreSQL (.orig.tar.bz), патчами (.patch), архив с правилами сборки (.deb.xz) и файл .dsc с описанием пакета. Перейдем в него:
2. Подготовка сборочного окружения
Выполним установку Pbuilder. Для этого можно использовать следующую команду:
sudo apt-get install pbuilder debootstrap devscripts
Далее нужно создать сборочное окружение (chroot).
В простейшем сценарии, когда сборка осуществляется в среде, аналогичной целевой по архитектуре (x86_64 для x86_64 в нашем примере), для формирования сборочного окружения (chroot) выполняем команду:
sudo pbuilder —create
либо, если у пакета существуют зависимости, находящиеся в репозиториях, не поддерживаемых по умолчанию (как нашем случае), например, universe:
sudo pbuilder —create —components “main universe”
В случае, если необходимо выполнить компиляцию для архитектуры, отличной от архитектуры сборки (или задать отличные от дефолтных целевые каталоги, адрес основного и дополнительного репозитория и др.) необходимо выполнить настройку pbuilder с помощью конфигурационного файла /etc/pbuilderrc (его лучше скопировать в домашний каталог —
/.pbuilderrc) либо использовать опции команды create (или для последующих сборок update) при создании сборочного окружения. Например, если бы мы хотели собрать пакет для x86:
sudo pbuilder create —debootstrapopts —arch —debootstrapopts i386
(подробно о возможностях использования и настройке pbuilder можно прочитать: https://wiki.ubuntu.com/PbuilderHowto).
Создание окружения необходимо выполнить один раз, в дальнейшем перед каждой следующей сборкой необходимо его обновлять, используя команду:
sudo pbuilder —update —components “main universe” —override-config
3. Сборка
Если мы хотим выполнить компиляцию с применением всех патчей, выполняем команду:
pbuilder —build postgresql-9.6_9.6.3-1.1C.dsc
либо для сборки x86:
sudo ARCH=i386 linux32 pbuilder —build postgresql-9.6_9.6.3-1.1C.dsc
Если же патчи нужно применить выборочно, распакуем для удобства архив с правилами сборки debian в отдельный подкаталог :
/Postgres/Debian
tar xfv postgresql-9.6_9.6.3-1.1C.debian.tar.xz -С
/Postgres/ Debian/ postgresql-9.6_9.6.3-1.1C.debian/debian/patches находятся сами патчи и файл series , определяющий их состав и порядок наложения – оставляем только необходимые патчи (важно: патчи, начинающиеся с цифры 9, являются штатными для сборки debian и должны быть применены в любом случае). Проверяем состав файлов .patch в соответствии со списком в файле series . Распакуем также оригинальный ар хив в
/Postgres/ Debian/ postgresql-9.6_9.6.3-1.1C.debian/debian и перейдем в этот каталог:
tar xfv postgresql-9.6_9.6.3.orig.tar.bz2 -С
После этого выполним команду:
Информация о ходе сборки будет выводиться на экран, по окончании сборки будут автоматически запущены регрессионные тесты пакета, ход их выполнения также можно будет наблюдать в терминале. Если в процессе сборки возникнет ошибка, сборка будет остановлена.
Если она завершена без ошибок и предупреждений, тесты пройдены, готовые пакеты .deb можно будет найти в директории:
(если в конфигурационном файле не указывался иной целевой каталог). Перед началом сборки необходимо предоставить пользователю права на запись в целевой каталог.
По умолчанию в сборочном окружении имеется только локаль «C», с которой тесты после сборки PostgreSQL не могут запуститься, а сборка разваливается.
Для этого необходимо войти в сборочное окружение в режиме сохранения результатов после выхода Копировать в буфер обмена
sudo pbuilder login —save-after-login
и сгенерировать нужные локали
locale-gen en_US.UTF-8 ru_RU.UTF-8
Список доступных для генерации локалей можно посмотреть так: Копировать в буфер обмена
Сборка для RPM на примере CentOS 7 x86_64
Сборка пакетов rpm будет в данном примере выполняться с помощью утилиты rpmbuild.
1. Подготовка сборочного окружения
Для удобства установим пакет расширений rpmdevtools с помощью команды:
sudo yum install -y rpmdevtools
Создадим дерево каталогов для сборки:
Данная команда создаст каталог rpmbuild и подкаталоги BUILD, BUILDROOT, RPMS, SOURCES, SPECS, SRPMS с расположением «по умолчанию» в домашнем каталоге пользователя. Эти каталоги можно создать самостоятельно в другой директории с помощью команды mkdir:
(в этом случае необходимо будет также создать файл конфигурации rpmmacros с помощью команды $ echo ‘%_topdir %(echo $HOME)/rpmbuild’ >
2. Подготовка исходного пакета
Создадим в домашнем каталоге директорию Postgres, переместим в нее загруженный пакет и распакуем:
/Postgres
mv …/Patch_SUBD_PostgreSQL_9.6.3_1.1C.tar.bz2
/Postgres
tar xfv Patch_SUBD_PostgreSQL_9.6.3_1.1C.tar.bz2
В полученных исходных файлах нас будет интересовать rpm-пакет postgresql96-9.6.3-1.1C.src.rpm
Переместим его в отдельный подкаталог и распакуем:
/Postgres/Rpm
rpm2cpio postgresql96-9.6.3-1.1C.src.rpm | cpio —extract —make-directories –verbose
В результате в каталоге
/Postgres/Rpm будет находиться архив с оригинальными исходниками postgresq -9.6.3. tar . bz 2 , патчи (.patch), прочие источники для формирования rpm-пакета и файл postgresql-9.6.3.spec – «главный» конфигурационный файл, инструкция для сборки. В нем указывается информация об исходных файлах (Source), патчах (Patch) и зависимостях сборки (BuildRequires и Requires). Необходимо убедиться, что все файлы, перечисленные в разделе Source, присутствуют в каталоге
/Postgres/Rp m , переместим их с помощью команды mv в каталог
Откроем для редактирования файл postgresql-9.6.3.spec и откорректируем пути к источникам, например:
(для всех файлов source).
Раздел Patch необходимо редактировать только в том случае, если нужно применить только часть из них: для этого в postgresql-9.6.3.spec нужно оставить только необходимые и удалить информацию об остальных. Патчи накладываются в порядке, определенном в файле.
Указанные в spec-файле патчи перемещаем в дерево исходных текстов в каталог
Если Вы решили применить не все патчи, во избежание возникновения сообщения о найденных, но не упакованных файлах (присутствующих в каталоге SOURCES, но не перечисленных в файле .spec), а также ошибок, связанных с обратной ситуацией, необходимо добавить начало файла .spec макроопределения:
%define _unpackaged_files_terminate_build 0
%define _missing_doc_files_terminate_build 0
Помещаем файл в каталог
Установим пакеты зависимостей сборки при помощи команд:
3. Cборка
Запустим сборку следующей командой:
Если нужно выполнить сборку под архитектуру x86, выполняем:
rpmbuild -bb —target i386
Информация о ходе сборки будет выводиться на экран. После ее завершения автоматически запустятся регрессионные тесты сформированных пакетов, статус их выполнения также будет выведен. В случае ошибки сборка будет прекращена. В случае успешного ее завершения бинарные rpm-пакеты будут находиться в директории
/rpmbuild/ RPMS , пакет postgresql96-9.6.3-1.1C.src.rpm – в
Сборка для Windows 32/64-bit на примере Windows 7 64-bit
1. Подготовка сборочного окружения
Сборка в данном примере выполняется инструментами, входящими в среду разработки Microsoft Visual Studio.
Подробное описание процесса компиляции в среде Windows приведено здесь: https://postgrespro.com/docs/postgresql/9.6/install-windows-full, в этой же инструкции приведен перечень необходимого программного обеспечения и источников его загрузки, нам необходимы из них:
- Microsoft Visual Studio 2015 + Microsoft Windows SDK 7.1 со всеми инструментами Visual C++
- ActiveState Perl
- ActiveState TCL
- Python
- MIT Kerberos
- ossp-uuid
Дополнительно необходимо скачать библиотеку ICU:
- ICU 4.6 – для сборки 64- bit необходимо скачать 64-битную версию, для 32 – 32-битную http://site.icu-project.org/download/46
- GnuWin32 ( в составе данной утилиты будут также установлены требуемые Bison, Flex, Diff, Gettext, libxml2, libxslt, openssl, zlib) http://gnuwin32.sourceforge.net/
После установки проверяем, что все компоненты прописались в переменной среды PATH. Выполняем в командной строке:
Будет выведено значение переменной. В нем должны присутствовать пути ко всем установленным компонентам. Если для каких-то утилит они отсутствуют, добавляем их к значению и с помощью команды SET устанавливаем новое значение.
2. Подготовка исходного пакета
Распаковываем загруженный архив Patch_SUBD_PostgreSQL_9.6.3_1.1C.zip в директорию C:\Patch_SUBD_PostgreSQL_9.6.3_1.1C .
Переходим в директорию C:\Patch_SUBD_PostgreSQL_9.6.3_1.1C\PostgreSQL\9.6.3-1.1C\Patch_SUBD_PostgreSQL_9.6.3-1.1C. Нам необходимо извлечь архив postgresql-9.6_9.6.3.orig.tar. Сделаем это в одноименный каталог.
Скопируем из директории, куда была установлена ранее ICU (в нашем примере это C:\ICU) каталоги C :\ ICU \icu\icu-4.6\include\layout и C :\ ICU \icu\icu-4.6\include\unicode с их содержимым в директорию C: \Patch_SUBD_PostgreSQL_9.6.3_1.1C\PostgreSQL\9.6.3-1.1C\Patch_SUBD_PostgreSQL_9.6.3-1.1C\postgresql-9.6_9.6.3.orig\postgresql-9.6.3\src\include.
Откроем каталог C:\Patch_SUBD_PostgreSQL_9.6.3_1.1C\PostgreSQL\9.6.3-1.1C\Patch_SUBD_PostgreSQL_9.6.3-1.1C\postgresql-9.6_9.6.3.orig\postgresql-9.6.3\src\tools\msvc. В нем находятся необходимые для сборки в среде Windows скрипты.
Если существует необходимость изменить пути (указать отличные от содержащихся в PATH) к сторонним библиотекам, объявленным в файле config_default.p l , необходимо в этой директории создать файл config.pl и в нем объявить пути к переменным:
– в примере указан путь к python.
Также нужно с помощью команды SET в командной строке (либо вспомогательного файла buildenv . pl , который также необходимо создать по аналогии с config.pl ) объявить переменные:
SET ICU46_LIB64= C:\ICU\icu\icu-4.6\lib
— для архитектуры 32 бита
SET ICU46_LIB= C:\ICU\icu\icu-4.6\lib64
– для архитектуры 64 бита
Откроем файл C:\Patch_SUBD_PostgreSQL_9.6.3_1.1C\PostgreSQL\9.6.3-1.1C\Patch_SUBD_PostgreSQL_9.6.3-1.1C\postgresql-9.6_9.6.3.orig\postgresql-9.6.3\src\tools\msvc\ Mkvcbuild . pm и укажем в нем соответствующие переменные:
my $contrib_extralibs= <'mchar' =>[‘$(ICU46_LIB64)\icuin.lib’, ‘$(ICU46_LIB64)\icuuc.lib’]>;
my $frontend_extralibs = <
‘initdb’ => [‘ws2_32.lib’],
‘pg_restore’ => [‘ws2_32.lib’],
‘pgbench’ => [‘ws2_32.lib’],
‘mchar’ =>[‘$(ICU46_LIB64)\icuin.lib’, ‘$(ICU46_LIB64)\icuuc.lib’],
‘psql’ => [‘ws2_32.lib’] >;
3. Сборка
Компиляция будет производиться из командной строки MS Visual Studio. Если мы хотим собрать 64-битную версию, необходимо запустить командную строку x64, если 32-битную – x86.
В ней выполним переход к исходному каталогу сборки:
Для применения к исходному пакету патча нужно выполнить следующую команду:
сat C:\Patch_SUBD_PostgreSQL_9.6.3_1.1C\PostgreSQL\9.6.3-1.1C\Patch_SUBD_PostgreSQL_9.6.3-1.1C\00001-1c_FULL_96- 0.23.patch | patch -p1 —fuzz=0
Патчи необходимо накладывать в порядке возрастания их номеров. По окончании выполним команду:
(запускаем build.bat), и начинается компиляция.
В случае ее успешного окончания (сборка должна закончиться без предупреждений и ошибок с соответствуем сообщением в командной строке VS) скомпилированные исполняемые файлы будут находится в директории …/release.
Источник
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
- Главная
- Установка PostgreSQL-1C на платформу Linux (Ubuntu/Debian)
Установка PostgreSQL-1C на платформу Linux (Ubuntu/Debian)
Рассматривая установку сервера 1С:Предприятие на платформе Linux нельзя обойти вниманием вторую важную компоненту — систему управления базами данных, наиболее популярной из которых для данной платформы является PostgresSQL. В наших прошлых материалах мы использовали сборки от компании Ethersoft, это было связано с тем, что 1С предоставляла готовые пакеты только для RPM-совместимых систем, теперь ситуация изменилась и можно свободно скачать официальные пакеты для Ubuntu Server/Debian.
Прежде чем продолжать, напомним, что сервер СУБД является независимой частью клиент-серверной системы 1С:Предприятие и никак не связан по настройкам и зависимостям с самим сервером 1С, т.е. вы можете установить PostgreSQL как на одну физическую машину с сервером 1С, так и на разные.
Второе важное замечание, мы не видим смысла использовать 32-разрядную версию Postgres, разве что в учебно-ознакомительных целях, при этом нет никакого требования на совпадение разрядности сервера 1С и сервера СУБД, это значит, что вы можете успешно совмещать 32-разрядный сервер 1С и 64-разрядный Postgres, в том числе и на одном физическом сервере. Про установку 32-разрядного сервера на 64-разрядную платформу мы рассказывали в одной из предыдущих статей.
В нашем примере будет использоваться сервер под управлением Ubuntu Server 14.04 или Debian 8, все незначительные отличия между системами будут оговариваться отдельно.
Откуда получить дистрибутив Postgres для работы с 1С:Предприятием? С официального сайта, напомним, что стандартная версия PostgreSQL с 1С работать не будет, требуется специальная сборка с патчами от компании. На странице загрузки представлено довольно много версий, для всех платформ и разрядностей. Нас интересует только версия DEB для систем x86-64, архив с дополнительными модулями не потребуется.
Скачаем данный архив и разместим его в удобном месте на сервере, скажем в домашней папке. Но прежде чем приступать к установке следует подготовить систему.
Сначала сгенерируем и установим необходимые локали, это особенно важно, если система была установлена с языком отличным от русского.
В Ubuntu Server выполните:
затем установите язык по умолчанию:
и завершите настройку:
В Debian немного проще:
Данная команда вызывает псевдографическую утилиту при помощи которой следует выбрать локали en_US ISO-8859-1, en_US.UTF-8 и ru_RU.UTF-8
По умолчанию выбираем ru_RU.UTF-8
Для применения изменений обе системы потребуется перезагрузить.
Правильно настроив региональные параметры перейдем к зависимостям. Нам потребуются пакет ssl-cert и библиотеки libxslt и libicu, с первыми двумя все просто:
А вот дальше есть небольшие сложности. В отличие от сборки Ethersoft, которая умела подтягивать по зависимостям текущую версию libicu, сборка от 1С «прибита гвоздями» к определенной версии библиотеки, точно узнать необходимую версию можно из документации, устанавливаемая нами версия PostgreSQL 9.4.2-1.1C требует libicu48, в то время как в репозиториях присутствует более новая версия. Решение простое — скачать и установить требуемый пакет вручную, его можно получить здесь: libicu48_4.8.1.1-3_amd64.deb.
Будем считать, что скачанный пакет находится в домашней директории, перейдем туда и установим его.
Теперь можно переходить к установке непосредственно PostgreSQL, архив с которой также должен находиться в вашей домашней папке, распакуем его:
Если сервер 1С или сборку от Ethersoft можно было просто установить в автоматическом режиме, то здесь такой фокус не пройдет, нужно строго соблюдать очередность установки пакетов, в противном случае возникнут нарушенные зависимости, автоматическое разрешение которых приведет к замене некоторых пакетов от 1С пакетами из репозитория, что сделает установленный экземпляр неработоспособным.
Требуемая последовательность установки такова:
После установки требуется произвести некоторые настройки, в частности установить пароль суперпользователю СУБД postgres, для этого откроем /etc/postgresql/9.4/main/pg_hba.conf и найдем в нем строку:
и приведем ее к виду:
Теперь установим пароль командой:
где password — желаемый пароль и еще раз перезапустим PostgreSQL.
На этом настройку сервера СУБД можно считать законченной. Но остается один момент, для того, чтобы к нему можно было обращаться по сетевому имени, следует добавить соответствующую A-запись на DNS-сервер предприятия или запись в файл hosts тех ПК, которые будут работать с данным сервером. Напомним, что с сервером СУБД работает исключительно сервер 1С и если вы добавляете записи в файл hosts, то делать это нужно прямо на сервере 1С, а не на клиентских ПК.
Также к серверу СУБД, в отличие от сервера 1С, можно обращаться по IP-адресу, а если PostgreSQL и сервер 1С находятся на одной машине, то в качестве имени сервера правильным будет использовать localhost.
Как видим, сложной установку PostgreSQL-1C назвать нельзя, однако от вас потребуется определенная внимательность и строгое выполнение последовательности установки пакетов.
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал:
Источник