PostgreSQL 9.2.4 с патчами от 1С на Lubuntu 14.04

Старенький ноутбук Toshiba Satellite-A75 станет стендом для этой практической работы по установке сначала базы данных PostgreSQL, затем клиента и сервера 1С:Предприятие версии 8.3. Процессор Intel(R) Pentium(R) 4 CPU 3.20GHz, память 1381MiB. Предварительно скачаем и установим сам линукс Lubuntu http://cdimage.ubuntu.com/lubuntu/daily-live/current/trusty-desktop-i386.iso . Выбор Lubuntu стал результатом исключительно нетребовательности к ресурсам по железу. На сайте 1С https://users.v8.1c.ru берем нужные файлы (подразумевается имеющийся дуступ), а именно: Патчи вместе с исходниками PostgreSQL 9.2.4 или для тех, кто не хочет заморачиваться с патчами готовый deb-пакет Cервер 1С:Предприятия для DEB-based Linux-систем Клиент 1С:Предприятия для DEB-based Linux-систем Разумеется, клиент может быть и под Windows. Начнем. В скачанном файле patch.rar находим каталог SRC_DEB, а в нем исходники оригинального постгреса postgresql-9.2_9.2.4.orig.tar.bz2. Распакуем исходники в каталог ~/src/postgresql-9.2.4/ и в нем создадим каталог для патчей ~/src/postgresql-9.2.4/patches, в который уже скопируем сами патчи 1c_FULL_92-0.23.1 applock-1c-9.2.patch online_analyze.patch plantuner.patch postgresql-1c-9.2.patch Зайдем в каталог с патчами
<pre>
~/src/postgresql-9.2.4/patches
</pre>
и поочередно выполним
patch -d .. -p1 <1c_FULL_92-0.23.1

patch -d .. -p1 <applock-1c-9.2.patch patch=»» -d=»» ..=»» -p1=»» <online_analyze.patch=»» <plantuner.patch=»» <postgresql-1c-9.2.patch=»» <=»» pre=»»>
Теперь пробуем подготовиться к компиляции
<pre class=»brush: bash»>cd ~/src/postgresql-9.2.4/

./configure
</pre>
упс…

<strong>configure: error: in `/home/baklan/src/postgresql-9.2.4′: configure: error: no acceptable C compiler found in $PATH See `config.log’ for more details.</strong>

ага, нечем компилировать. Я выполнил стандартную установку:
<pre class=»brush: bash»>sudo apt-get install linux-headers-`uname -r` binutils pkg-config build-essential
</pre>
еще раз ./configure выявила следующую ошибку:

<strong>configure: error: readline library not found If you have readline already installed, see config.log for details on the failure. It is possible the compiler isn’t looking in the proper directory. Use —without-readline to disable readline support.</strong>

ну это было и 5 лет назад, значит нужно
<pre class=»brush: bash»>sudo aptitude install libreadline-dev
</pre>
Сейчас ./configure успешно. Идем дальше, компиляция:
<pre class=»brush: bash»>make
</pre>
компиляция с первого раза выдала старую знакому ошибку:

<strong>error: ‘APPLICATION’ undeclared here (not in a function) PG_KEYWORD(«application», APPLICATION</strong>

Уже известно как исправляется

Нужно: в src/interfaces/ecpg/preproc/preproc.h после строки UMINUS = 746 поставить запятую и добавить строку APPLICATION = 747 . Т.о. получим вот такой фргмент этого заголовочного файла
<pre class=»brush: bash»>UMINUS = 746,

APPLICATION = 747

};

#endif
</pre>

в src/backend/parser/gram.h аналогично
<pre class=»brush: bash»>UMINUS = 669,

APPLICATION = 670

};

#endif
</pre>
и опять
<pre class=»brush: bash»>make

make install

cd contrib

make install
</pre>
если получите

<strong>mchar.h:7:27: fatal error: unicode/uchar.h: Нет такого файла или каталога</strong>

необходима установка
<pre class=»brush: bash»>sudo aptitude install zlib1g-dev
</pre>
еще раз
<pre class=»brush: bash»>make install
</pre>
Я решил сделать каталог баз данных в /home/bases
<pre class=»brush: bash»>sudo mkdir /home/bases
</pre>
Добавим пользователя postgres и группу postgres
<pre class=»brush: bash»>sudo useradd -g postgres -d /home/bases -s /bin/bash -c «PostgreSQL Server» -u 5026 postgres
</pre>
Пользователя сделаем владельцем каталога баз данных
<pre class=»brush: bash»>sudo chown postgres:postgres /home/bases
</pre>
Установим пароль для пользователя postgres
<pre class=»brush: bash»>sudo passwd postgres

Введите новый пароль UNIX:

Повторите ввод нового пароля UNIX:

passwd: пароль успешно обновлён
</pre>
Теперь от пользователя postgres инициализируем базу данных
<pre class=»brush: bash»>su postgres

/usr/local/pgsql/bin/initdb -D /home/bases
</pre>
и первый запуск PostgreSQL
<pre class=»brush: bash»>/usr/local/pgsql/bin/pg_ctl -D /home/bases -l /home/bases/pgsql.log start

server starting
</pre>
Проверим прослушивается ли стандартный порт PostgreSQL 5432
<pre class=»brush: bash»>netstat -atn

tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN

tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN

</pre>

<hr>

По старинке сделаем скрипт запуска сервера postgres
<pre class=»brush: bash»>sudo nano /etc/init.d/pgsql
</pre>
вот такого содержания:
<pre class=»brush: bash»>#!/bin/sh

case $1 in
restart)
sudo -u postgres -H /usr/local/pgsql/bin/pg_ctl -D /home/bases -l /home/bases/pg.log stop
sudo -u postgres -H /usr/local/pgsql/bin/pg_ctl -D /home/bases -l /home/bases/pg.log start
;;
start)
sudo -u postgres -H /usr/local/pgsql/bin/pg_ctl -D /home/bases -l /home/bases/pg.log start
;;
stop)
sudo -u postgres -H /usr/local/pgsql/bin/pg_ctl -D /home/bases -l /home/bases/pg.log stop
;;
*)
echo start|stop|restart
return 1;
;;
esac
</pre>

Права запуска для этого скрипта:
<pre class=»brush: bash»>sudo chmod +x /etc/init.d/pgsql
</pre>
и автозапуск:
<pre class=»brush: bash»>sudo update-rc.d pgsql defaults
</pre>
пробуем проверить работу скрипта:
<pre class=»brush: bash»>sudo service pgsql restart

waiting for server to shut down….

done server stopped server starting
</pre>
Итак мы установили сервер баз данных PostgreSQL 9.2.4 с патчами для работы 1С:Предприятие. Далее рассмотрим установку самого сервера 1С 8.3</applock-1c-9.2.patch>

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *