Сборка PostgreSQL для 1C в ubuntu

Если в системе стоит libICU версии отличной от 4.6 — поставить именно 4.6, более новая версия будет давать ошибку
creating template1 DATABASE IN /DATA/base/1 … ok
initializing pg_authid … FATAL: syntax error at OR near «REVOKE» at character 1
STATEMENT: REVOKE ALL ON pg_authid FROM public;

Также этот эффект может наблюдаться если библиотека лежит не в /usr/local/lib
Надо либо поправить debian/rules указав правильные пути, либо перенести библиотеку в /usr/local/lib.

Для сборки PostgreSQL для 1C брать исходники тут:
http://v8.1c.ru/overview/postgres_patches_notes.htm

1) распаковываем архив
2) заходим в директорию
3) даем команды:
dpkg-source -x *.dsc
dpkg-buildpackage -rfakeroot

Если при компиляции из исходников не собирается
../../../src/include/parser/kwlist.h:45: error: ‘APPLICATION’ undeclared here (not in a function)
Добавить определение в файлы:
src/interfaces/ecpg/preproc/preproc.h
src/backend/parser/gram.h

На выходе получаем готовые пакеты.

Сборка PostgreSQL для 1C в ubuntu: 6 комментариев

  1. Андрей

    Уважаемый не могли бы вы мне помочь? Я пытаюсь этот с позволения сказать PostgreSQL собрать уже 2 дня, но в отличии от тебя я это делаю на Debian. И как раз у меня появляется эта же ошибка:
    Running in noclean mode. Mistakes will not be cleaned up.
    The files belonging to this database system will be owned by user «user».
    This user must also own the server process.

    The database cluster will be initialized with locales
    COLLATE: ru_RU.UTF-8
    CTYPE: ru_RU.UTF-8
    MESSAGES: C
    MONETARY: ru_RU.UTF-8
    NUMERIC: ru_RU.UTF-8
    TIME: ru_RU.UTF-8
    The default database encoding has accordingly been set to «UTF8».
    The default text search configuration will be set to «russian».

    creating directory /home/user/postgresql/postgresql-9.2-9.2.1/build/src/test/regress/./tmp_check/data … ok
    creating subdirectories … ok
    selecting default max_connections … 100
    selecting default shared_buffers … 24MB
    creating configuration files … ok
    creating template1 database in /home/user/postgresql/postgresql-9.2-9.2.1/build/src/test/regress/./tmp_check/data/base/1 … ok
    initializing pg_authid … FATAL: syntax error at or near «REVOKE» at character 1
    STATEMENT: REVOKE ALL on pg_authid FROM public;

    child process exited with exit code 1
    initdb: data directory «/home/user/postgresql/postgresql-9.2-9.2.1/build/src/test/regress/./tmp_check/data» not removed at user’s request

    я собрал и установил libicu4.6 и кинул в папку симлинки на файлы
    ln -s /usr/lib/libicuuc.so.46.1 /usr/local/lib/libicuuc.so.46
    ln -s /usr/lib/libicui18n.so.46.1 /usr/local/lib/libicui18n.so.46
    ln -s /usr/lib/libicudata.so.46.1 /usr/local/lib/libicudata.so.46
    но ничего не помогает, подскажите что делать?

  2. atomic@ipclub.dp.ua Автор записи

    Самый правильный выход — найти собранное которое работает.
    Патчи наложены крайне криво.

  3. ubi

    Здравствуйте, могли бы Вы пояснить более подробно как добавить определение APPLICATION в указанные Вами в конце статьи файлы?

    Спасибо!

  4. atomic@ipclub.dp.ua Автор записи

    Например так:
    В файле
    src/interfaces/ecpg/preproc/preproc.h

    найти запись
    UMINUS = 746
    и исправить на
    UMINUS = 746,
    APPLICATION = 747

    А также в файле
    src/backend/parser/gram.h
    Найти запись
    UMINUS = 669
    И заменить ее на
    UMINUS = 669,
    APPLICATION = 670

  5. andrew

    После правок и добавления APPLICATION в файлах пересборка требует dpkg-source —commit. Как его правильно сделать и повторно пересобрать?

  6. atomic@ipclub.dp.ua Автор записи

    Не подскажу, не знаю.
    Делалось давненько уже, записал просто для себя в чем была беда.

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

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