null

Внезапная проблема при установке 1С:Предприятие с PostgreSQL 9.3.4 на Ubuntu

Не смотря на то, что гугл знает чуть более 300 тысяч ссылок на тему Установка 1С:Предприятие на Linux, среди которых можно найти не один десяток пошаговых инструкций как вполне адекватных, так и написанных абсолютно некомпетентными людьми, разработчики программного продукта не устают удивлять новыми проблемами.

При использовании 1С:Предприятие на Linux в качестве СУБД разработчиками предлагается использовать PostgreSQL со специальными патчами от самого 1С. При этом патченую версию PostgreSQL предлагается скачать прямо на сайте .

На момент написания статьи на сайте предлагалось использовать PostgreSQL версии 9.2.4, выпущенный еще в 2013 году. Перепробовав несколько современных дистрибутивов Linux, в том числе Debian 7.6.0, который казалось бы соответствует требованию "Debian GNU/Linux 4.0 и выше", очень быстро стало понятно, что найти в них библиотеку OpenSSL версии 0.9.8 немного затруднительно. Некоторые другие зависимости тоже разрешались не без проблем.

В связи с тем, что 1С:Предприятие я ставил исключительно для тестирования, было решено попробовать предлагаемую к тестированию версию PostgreSQL 9.3.4. А в качестве дистрибутива Linux была взята Ubuntu Server 14.04.1 LTS. Just for lulz.

При установке PostgreSQL 9.3.4 на эту Ubuntu всплыла зависимость одного из пакетов от пакета libicu48. Данной версии libicu в репозитории не оказалось, зато нашёлся libicu52, который и был поставлен. Запуск сервера PostgreSQL прошёл без проблем, а проблемы появились при попытке создать базу данных из конфигуратора 1С:Предприятие, который сообщил о возникновении ошибки:

ERROR: type "mvarchar" does not exist at character 31

Поиск в Google выдал множество рекомендаций создавать базу только из конфигуратора (что я и делал) и других советов, не менее полезных в данной ситуации. Корень зла обнаружился в логах самого PostgreSQL:

2014-10-13 12:02:09 MSK ERROR:  could not load library "/usr/lib/postgresql/9.3/lib/mchar.so": libicuuc.so.48: cannot open shared object file: No such file or directory

Зайдя в каталог /usr/lib/postgresql/9.3/lib внезапно выяснилось, что там есть три разделяемых библиотеки от libicu:

# ls /usr/lib/postgresql/9.3/lib/*icu*
/usr/lib/postgresql/9.3/lib/libicudata.so.48.1.1
/usr/lib/postgresql/9.3/lib/libicui18n.so.48.1.1
/usr/lib/postgresql/9.3/lib/libicuuc.so.48.1.1

Но для них не созданы символичестки ссылки без .1.1 в конце. Что очень легко исправляется:

cd /usr/lib/postgresql/9.3/lib
ln -s libicudata.so.48.1.1 libicudata.so.48
ln -s libicui18n.so.48.1.1 libicui18n.so.48
ln -s libicuuc.so.48.1.1 libicuuc.so.48

После этого попытка создания базы данных завершается успехом и мы переходим на следующий уровень:

Лицензия не обнаружена

Вопросы зачем разработчики 1С в зависимостях для PostgreSQL указывают libicu при том, что требуемые библитеки включены в пакеты PostgreSQL, и почему они забыли сделать для них символические ссылки находятся вне моей компетенции.

Коротко о себе:

Работаю в компании Tune-IT и тьютором кафедры Вычислительной техники в СПбГУИТМО.

Очень люблю команду cat, core solaris и IPv6.