Имя: Пароль:
1C
1С v8
1C 8.3 не видит libWand.so на Linux (Fedora) - пример установки.
0 rinat_epos
 
22.02.14
22:17
Система Fedora 20 (Heisenbug) x86_64
Устанавливается 1С Предприятие 8.3.4.428 x86_64 сервер и клиент на Linux и клиент 32 разр на windows.

Результат толстый клиент - работает без проблем.
Тонкий клиент (режим управл. приложения)после ввода пароля завершается с ошибкой:
"Ошибка загрузки библиотеки libWand.so по причине:Библиотека не обнаружена."

Cтандартный совет сделать симлинк на библиотеку libMagickWand не помогает (Были испробованы все варианты). Установка последнего пакета с imagemagick.org не помагает.

Начинаем разбираться:
1) Что у нас есть:
yum info ImageMagick выдает

Available Packages
Name        : ImageMagick
Arch        : x86_64
Version     : 6.8.6.3
Release     : 3.fc20
Size        : 147 k
Repo        : fedora/20/x86_64

Библиотеки этого пакета:
/usr/lib64/libMagickWand-6.Q16.so.1.0.0

2) Как победить:

Теперь самое интересное - что все таки происходит? Тут не обойтись без strace - утилита для отслеживания системных вызовов.
Находим pid рабочего процесса 1С rphost:
ps -afx | grep rphost

Желательно чтобы был один процесс rphost. Дело в том, что в 8.3 мы уже не можем создавать или удалять процессы - все в автомате.

Подключимся к рабочему процессу и выловим все системные вызовы.
Для этого:
Откроем 1С на клиенте и остановимся на моменте когда пароль набран , но еще не нажата кнопка ОК. (Это для того, чтобы не собирать слишком большой файл логов strace ).
В консоли сервера вводим
strace -p <Ваш pid> -f -s 512 -o /root/123456.txt
(-f - обязательно указываем отслеживать все порожденные субпроцессы,
-s 512 - длина строки в логах , стандартное значение слишком маленькое,
-o - это имя файла логов)
и нажимаем Enter, затем сразу нажимаем Ок в форме ввода пароля 1С, после вывода ошибки 1С, останавливаем strace и изучаем файл логов.
Ищем строку с вхождением "Wand" и получаем:
18507 execve("/bin/sh", ["sh", "-c", "/sbin/ldconfig -p | grep -P '^[\\t ]*libMagickWand.so\\.[0-9]' | sort -r | sed -e 's/.*=>[\\t ]*//'"], [/* 22 vars */]) = 0

Это вызов "ldconfig -p", в котором ищется подстрока  libMagickWand.so.
Но этой подстроки нет, т.к. в ImageMagick 6.8.6.3 нет такой библиотеки, она переименована в libMagickWand-6.Q16.so.
Но 1С попрежнему ищет библиотеку libMagickWand.so, причем анализируя вывод ldconfig - т.е. если мы сделаем симлинк (ln -s) это не поможет т.к все равно не попадет в вывод ldconfig.
Почему так сделано ? Не понятно.
Далее мне пришлось найти последний пакет до переименования от CENTOS-
ImageMagick-6.7.9-10.src.rpm (Это исходник - мы будем делать rpmbuild )

Удалить стандартный пакет
yum remove ImageMagick
Делаем ребилд из исходника rpm.
rpmbuild --rebuild ImageMagick-6.7.9-10.src.rpm
x86_64]# rpm -qlp /root/rpmbuild/RPMS/x86_64/ImageMagick-6.7.9-10.x86_64.rpm - посмотрим что в пакете
rpm -ivh /root/rpmbuild/RPMS/x86_64/ImageMagick-6.7.9-10.x86_64.rpm - установим пакет.

Затем перезапустим сервер.
После этого у меня все заработало.









Наименование библиотек пакета libMagickWand изменилось в 2013 году начиная с версии 6.8










libWand.so это старое название библи
1 Banned
 
22.02.14
22:22
мда.... Всё в этой поделке студенческой не как у людей....
2 rinat_epos
 
22.02.14
22:34
Может, кто поправит.
Как обстоят дела на Ubunta и Centos ? Какая библиотека ImageMagick стоит?