Замечательная компания «Этерсофт» выпускает некий программный продукт 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 завершена. В завершение необходимо выполнить действия по его настройке.