пятница, 23 мая 2008 г.

Установка PostgreSQL-1С для Slackware 12

Замечательная компания «Этерсофт» выпускает некий программный продукт SELTA@Etersoft. Для работы этого продукта требуется патченная версия СУБД PostgreSQL. Для скачивания доступны исходные коды и бинарные сборки для большого количества операционных систем.

Теперь хватит рекламы, приступаю к описанию проблемы. Среди поддерживаемых операционных систем заявлена Slackware 12. Однако, предоставленные пакеты не работают «искаробки» без доработки напильником. Справедливости ради надо заметить, что компания честно предупреждает о создании пакетов в неком производном от Slackware дистрибутиве MOPSLinux. Все это написано главным образом для себя, т.к. установку пришлось делать уже во второй раз, и не факт, что последний.

Шаг 1. Убеждаемся что установлен пакет sysvinit-functions:

root@darkstar:~# ls /var/log/packages/sysvinit-functions*
/var/log/packages/sysvinit-functions-8.53-i486-2

Если нет, то устанавливаем его.

Шаг 2. Устанавливаем выкачанные пакеты PostreSQL 1C:
postgresql8.2.1C-8.2.4
postgresql8.2.1C-server-8.2.4
postgresql8.2.1C-libs-8.2.4
postgresql8.2.1C-contrib-8.2.4

Шаг 3. Почему-то при установке не создается необходимый пользователь и группа. Делаем это вручную:

root@darkstar:~# groupadd postgres
root@darkstar:~# useradd -g postgres postgres
root@darkstar:~# chown -R postgres:postgres /var/lib/pgsql

Шаг 4. Стартовый скрипт /etc/rc.d/init.d/postresql категорически не способен работать в Slackware. Накладываем патч:

84c84
< . /etc/sysconfig/network
---
> #. /etc/sysconfig/network
189c189
<       $SU -s /bin/sh -l postgres -c "$PGENGINE/postmaster -p '$PGPORT' -D '$PGDATA' ${PGOPTS} &" >> "$PGLOG" 2>&1 < /dev/null
---
>       $SU postgres -c "$PGENGINE/postmaster -p \"$PGPORT\" -D \"$PGDATA\" ${PGOPTS} &" >> "$PGLOG" 2>&1 < /dev/null
207c207
<       $SU -s /bin/sh -l postgres -s /bin/sh -c "$PGENGINE/pg_ctl stop -D '$PGDATA' -s -m fast" > /dev/null 2>&1 < /dev/null
---
>       $SU postgres -c "$PGENGINE/pg_ctl stop -D \"$PGDATA\" -s -m fast" > /dev/null 2>&1 < /dev/null
243c243
<                       $SU -l postgres -s /bin/sh -c "LANG=ru_RU.UTF-8 $PGENGINE/initdb --pgdata='$PGDATA' --auth='ident sameuser'" >> "$PGLOG" 2>&1 < /dev/null
---
>                       LANG=ru_RU.UTF-8 $SU postgres -c "$PGENGINE/initdb --pgdata=\"$PGDATA\" --auth=\"ident sameuser\"" >> "$PGLOG" 2>&1 < /dev/null
263c263
<     $SU -l postgres -s /bin/sh -c "$PGENGINE/pg_ctl reload -D '$PGDATA' -s" > /dev/null 2>&1 < /dev/null
---
>     $SU postgres -c "$PGENGINE/pg_ctl reload -D \"$PGDATA\" -s" > /dev/null 2>&1 < /dev/null

Шаг 5. Шаманства кончились. Далее инициализируем базу данных:

root@darkstar:~# /etc/rc.d/init.d/postgresql initdb
Initializing database:                                     [  OK  ]

Шаг 6. Запуск сервера PostreSQL:

root@darkstar:~# /etc/rc.d/init.d/postgresql start 
Starting postgresql service:                               [  OK  ]

Шаг 7. Прописываем запуск PostreSQL при загрузке компьютера:

root@darkstar:~# cd /etc/rc.d/rc3.d
root@darkstar:/etc/rc.d/rc3.d# ln -s ../init.d/postgresql S40postgresql
root@darkstar:/etc/rc.d/rc3.d# ln -s ../init.d/postgresql K60postgresql

Все, установка PostreSQL завершена. В завершение необходимо выполнить действия по его настройке.