Дистрибутив субд postgresql для linux x86 64 bit одним архивом rpm

Методика сборки дистрибутива СУБД 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.

Источник

Linux downloads (Red Hat family)

The Red Hat family of distributions includes:

  • Red Hat Enterprise Linux
  • Rocky Linux
  • CentOS
  • Fedora
  • Scientific Linux
  • Oracle Linux

PostgreSQL is available on these platforms by default. However, each version of the platform normally «snapshots» a specific version of PostgreSQL that is then supported throughout the lifetime of this platform. Since this can often mean a different version than preferred, the PostgreSQL project provides a repository of packages of all supported versions for the most common distributions.

PostgreSQL Yum Repository

The PostgreSQL Yum Repository will integrate with your normal systems and patch management, and provide automatic updates for all supported versions of PostgreSQL throughout the support lifetime of PostgreSQL.

The PostgreSQL Yum Repository currently supports:

  • Red Hat Enterprise Linux
  • Rocky Linux
  • CentOS
  • Scientific Linux
  • Oracle Linux
  • Fedora *

* Note: due to the shorter support cycle on Fedora, all supported versions of PostgreSQL are not available on this platform. We do not recommend using Fedora for server deployments.

To use the PostgreSQL Yum Repository, follow these steps:

  1. Select version:
  2. Select platform:
  3. Select architecture:
  4. Copy, paste and run the relevant parts of the setup script:

Included in Distribution

These distributions all include PostgreSQL by default. To install PostgreSQL from these repositories, use the yum command on RHEL 6 and 7:

yum install postgresql-server

or dnf command on RHEL 8 and Fedora:

dnf install postgresql-server

Which version of PostgreSQL you get will depend on the version of the distribution:

Distribution Version
RHEL/Rocky Linux/CentOS/OL 8 13, 12, 10 and 9.6 via modules
RHEL/CentOS/SL/OL 7 9.2 (also supplies package rh-postgresql10, rh-postgresql96, rh-postgresql95 and rh-postgresql94 via SCL)
RHEL/CentOS/SL/OL 6 8.4 (also supplies package rh-postgresql96, via SCL)
Fedora 34 13
Fedora 33 12

Other Red Hat family distributions may ship a different version of PostgreSQL by default, check with your distribution vendor to be sure.

The repository contains many different packages including third party addons. The most common and important packages are (substitute the version number as required):

postgresql-client libraries and client binaries
postgresql-server core database server
postgresql-contrib additional supplied modules
postgresql-devel libraries and headers for C language development

Post-installation

Due to policies for Red Hat family distributions, the PostgreSQL installation will not be enabled for automatic start or have the database initialized automatically. To make your database installation complete, you need to perform the following steps, based on your distribution:

For RHEL / CentOS / SL / OL 6

For RHEL / Rocky Linux / CentOS / SL / OL 7, 8 or Fedora 31 and later derived distributions:

Direct RPM download

If you cannot, or do not want to, use the yum based installation method, all the RPMs that are in the yum repository are available for direct download and manual installation as well.

Copyright © 1996-2021 The PostgreSQL Global Development Group

Источник

Читайте также:  Чем извлечь cab файл windows
Оцените статью