Обновление postgresql 1c linux

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

Источник

1С и Linux

Пишу для себя, чтобы не забыть как делал. 95 % рабочее. На комментарии отвечаю, когда увижу.

четверг, 19 сентября 2019 г.

Обновление PostgreSQL от 1С ubuntu 18.04

Делаем dump баз, останавливаем 1с :
$ sudo nano /root/backup1.sh

#!/bin/sh -e
BACKUP_DIR=»/backup/pg_dump»
#BACKUP_DIR=»/backups/pg_dump»
cd $BACKUP_DIR
echo «====================================================================» > $BACKUP_DIR/backup.log
# останавливаем сервер 1С
echo «останавливаем сервер 1С»
sudo systemctl stop srv1cv8-ras.service
sudo systemctl stop srv1cv83.service
echo «состояние сервера 1С» >> $BACKUP_DIR/backup.log
sudo systemctl status srv1cv83.service | grep ‘Active:’ >> $BACKUP_DIR/backup.log
echo «———————————————————————» >> $BACKUP_DIR/backup.log
# Устанавливаем дату
DATA=`date +»%Y-%m-%d_%H-%M-%S»`
DATA_NAME=`date +»%Y-%m-%d_%H-%M-%S»`
echo «$DATA Size database file: » >> $BACKUP_DIR/backup.log
sudo du -h -s /var/lib/postgresql/10/main/base >> $BACKUP_DIR/backup.log
echo «———————————————————————» >> $BACKUP_DIR/backup.log
# делаем backup
DB_BASE=`sudo /bin/su postgres -c «/usr/bin/psql -qAt -c ‘SELECT * FROM pg_database;'» | \
cut -d»|» -f1 | /bin/grep -v template | /bin/grep -v postgres`
#DB_BASE=»demo test» #конкретные базы
#DB_BASE=»» #пропустить
echo $DB_BASE
for DB_NAME in $DB_BASE
do
DATA=`date +»%Y-%m-%d_%H-%M-%S»`
# Записываем информацию в лог с секундами
echo «$DATA Начало backup базы $» >> $BACKUP_DIR/backup.log
# Бэкапим базу данных demo и сразу сжимаем
echo «$DATA Начало backup базы $»
sudo /bin/su postgres -c «pg_dump -Fc $» > $BACKUP_DIR/$_$DATA_NAME.dump
DATA=`date +»%Y-%m-%d_%H-%M-%S»`
if [ $? -ne 0 ]
then
echo «$DATA Ошибка завершения backup для базы $»
echo «$DATA Ошибка завершения backup для для базы $» >> $BACKUP_DIR/backup.log
exit
else
echo «$DATA Успешное завершение backup для базы $»
echo «$DATA Успешное завершение backup для базы $» >> $BACKUP_DIR/backup.log
fi
echo «———————————————————————» >> $BACKUP_DIR/backup.log
done
# запускаем сервер 1С
#echo «Запускаем сервер 1С»
#sudo systemctl start srv1cv83.service
#sudo systemctl start srv1cv8-ras.service
echo «Состояние сервера 1С» >> $BACKUP_DIR/backup.log
sudo systemctl status srv1cv83.service | grep ‘Active:’ >> $BACKUP_DIR/backup.log
echo «———————————————————————» >> $BACKUP_DIR/backup.log
echo «Закончено»
cat $BACKUP_DIR/backup.log >> $BACKUP_DIR/backupall.log
cat $BACKUP_DIR/backup.log | mutt -s «backup» root

$ sudo sh /root/backup1.sh

$ sudo systemctl status srv1cv83.service

$ dpkg -l | grep postgresql-client-10
hi postgresql-client-10 10.8-18.1C amd64 front-end program s for PostgreSQL 10

$ sudo systemctl stop postgresql.service
$ mkdir /home/user/test
В папку /test положить файлы:

$ mkdir -p /tmp/post
$ cp /home/user/test/postgresql_10.9_5.1C_amd64_deb.tar.bz2 /tmp/post/
$ cd /tmp/post
$ tar -xvf postgresql_10.9_5.1C_amd64_deb.tar.bz2
$ ls
$ cd postgresql-10.9-5.1C_amd64_deb
$ ls
# список файлов:
#libpq5_10.9-5.1C_amd64.deb postgresql-10_10.9-5.1C_amd64.deb postgresql-client-10_10.9-5.1C_amd64.deb

$ sudo dpkg -i *.deb
$ dpkg -l | grep 10.9-5.1C | awk -F’ ‘ ‘‘ | sudo xargs apt-mark hold
#libpq5 помечен как зафиксированный.
#postgresql-10 помечен как зафиксированный.
#postgresql-client-10 помечен как зафиксированный.

$ sudo systemctl start postgresql.service
$ sudo systemctl status postgresql.service
$ sudo -u postgres reindexdb —all
$ sudo -u postgres vacuumdb —all —analyze —full

$ sudo systemctl start srv1cv83.service
$ sudo systemctl status srv1cv83.service
$ sudo systemctl start srv1cv8-ras.service
$ sudo systemctl status srv1cv8-ras.service

# обновление 1с
$ sudo systemctl stop srv1cv83.service
$ sudo systemctl stop srv1cv8-ras.service
$ mkdir -p /tmp/1ctmp
$ cd /tmp/1ctmp
$ ls /home/user/test/
$ cp /home/user/test/deb64_8_3_15_1656.tar.gz /tmp/1ctmp
$ tar xvzf deb64_8_3_15_1656.tar.gz
$ sudo dpkg -i 1c-enterprise83-common_8.3.15-1656_amd64.deb
$ sudo dpkg -i 1c-enterprise83-server_8.3.15-1656_amd64.deb
#$ sudo dpkg -i 1c-enterprise83-ws_8.3.15-1656_amd64.deb
#$ sudo dpkg -i 1c-enterprise83-crs_8.3.15-1656_amd64.deb
$ sudo systemctl start srv1cv83.service
$ sudo systemctl status srv1cv83.service
$ sudo systemctl start srv1cv8-ras.service
$ sudo systemctl status srv1cv8-ras.service

Для 8.3.15 делается один раз

$ sudo nano /etc/systemd/system/srv1cv8-ras.service

[Unit]
Description=1C:Enterprise Remote Administration Service
After=network.target remote-fs.target nss-lookup.target
Requires=srv1cv83.service

[Service]
Type=simple
#Если нужно несколько серверов, нужно задать адрес агента сервиса
#ExecStart=/opt/1C/v8.3/x86_64/ras cluster —port=1545 localhost:1540
ExecStart=/opt/1C/v8.3/x86_64/ras cluster —port=1545
KillSignal=SIGINT
PrivateTmp=true
Restart=on-failure
RestartSec=5
User=usr1cv8
Group=grp1cv8

#$ sudo systemctl daemon-reload
$ sudo systemctl enable srv1cv8-ras.service
$ sudo systemctl start srv1cv8-ras.service
$ sudo systemctl status srv1cv8-ras.service

Удаление кластера 1с

$ sudo systemctl stop srv1cv83.service
$ sudo systemctl stop srv1cv8-ras.service
$ sudo rm -R /home/usr1cv8/.1cv8/1C/1cv8
$ sudo systemctl start srv1cv83.service
$ sudo systemctl status srv1cv83.service
$ sudo systemctl start srv1cv8-ras.service
$ sudo systemctl status srv1cv8-ras.service

Удаление баз PostgreSQL

$ sudo su postgres -c «psql -c ‘DROP DATABASE demo;'»
$ sudo su postgres -c «psql -c ‘DROP DATABASE demo1;'»

Источник

Читайте также:  Открыть терминал линукс горячие клавиши
Оцените статью