gifts2017

Устранение ошибки при запуске .config_server на Ubuntu x64

Опубликовал Илья Тюшин (ilyatyushin) в раздел Администрирование - Системное

При установке Сервера 1С версии 8.2.16.352 на Ubuntu Server 12.04 x64, не запустился скрипт .config_server. Рассмотрим как с этим бороться.

После установки Ubuntu x64 решил поставить на него сервер 1С. Установил сам сервер, дополнительные пакеты(об этом есть много статей). После этого естественно решил запустить .config_server. И что я увидел.

sudo ./config_server
ls: невозможно получить доступ к /lib/libc-*.so: Нет такого файла или каталога
Usage: file [-bchikLNnprsvz0] [--apple] [--mime-encoding] [--mime-type]
[-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
file -C [-m magicfiles]
file [--help]
./config_server: строка 193: [: слишком много аргументов

Please install following package: ImageMagick
Please install following package: FreeType
Please install following package: libgsf
Please install following package: UnixODBC

После долгих поисков  в интернете ничего толкового по решению проблемы не нашел. В итоге полез в сам скрипт и начал разбираться.

Сначала нашел это

 

Понял, что необходимо задать переменную System_Lib_Path. Это делается в /etc/environment.

Добавляем туда строку SYSTEM_LIB_PATH = "/usr/lib".

На самом деле эта переменная может принимать и другие значения, например, "/lib" или "/lib64", но мне так показалось удобнее и проще создавать символические ссылки.

Итак, что такое символические  ссылки.

Please install following package: ImageMagick
Please install following package: FreeType
Please install following package: libgsf
Please install following package: UnixODBC

Этими строками .config_server говорит нам, что в системе нет этих библиотек. Странно, а ведь мы их устанавливали. 

Да просто они находятся не в тех каталогах, в которых их ищет .config_server.

И чтобы он понял где они нам необходимо создать на них символические ссылки.

Рассмотрим как это делается.

 Это строки в .config_server, которыми он проверяет есть ли эти библиотеки, и если их нет, то выводит сообщение об этом.

Рассмотрим пример с библиотекой freetype(с остальными все аналогично).

Сначала находим в системе библиотеку libfreetype(можно обычным поиском).

Находится она тут: /usr/lib/x86_64-linux-gnu/libfreetype.so.6.8.0

Далее делаем на нее символическую ссылку

sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so.6.8.0 /usr/lib/libfreetype.so

Вот и все. Кстати, обратите внимание, что путь во втором параметре начинается с /usr/lib. Это как раз наш 

SYSTEM_LIB_PATH, который мы зали раньше.

Аналогично с остальными библиотеками. После всех манипуляций необходимо перезапустить сервер, чтобы он при загрузке подхватил SYSTEM_LIB_PATH.

Теперь .config_server должен запускаться без ошибок.

Если аналогичные ошибки есть в версии x86, то смысл остается тем же, только поменяются каталоги с библиотеками.

Удачи!!!

 

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение

Комментарии

1. Gimalaj Gimalaev (gimalaj) 16.05.13 17:19
Прелюдия: все, касающееся расположения файлов, относится к 64-разрядной ubuntu server 12.04. В прочих версиях дистрибутива расположение файлов может отличаться. Чтобы выяснить, где какие файлы лежат у вас, можно посетить http://packages.ubuntu.com/ , выбрать нужный дистрибутив и найти необходимый пакет.

Теперь по существу. Если копнуть немного глубже, то выяснится следующее:

А). Первая проблема:

sudo ./config_server
ls: невозможно получить доступ к /lib/libc-*.so: Нет такого файла или каталога
Usage: file [-bchikLNnprsvz0] [--apple] [--mime-encoding] [--mime-type]
[-e testname] [-F separator] [-f namefile] [-m magicfiles] file ...
file -C [-m magicfiles]
file [--help]

Здесь скрипт хочет библиотеку libc в каталоге /lib, но модуль с данной библиотекой (а именно - файл libc-2.15.so) находится в каталоге /lib/x86_64-linux-gnu. Решается созданием символической ссылки (т.н. симлинка) на данный файл в каталогe /lib.

Б). Вторая проблема:

./config_server: строка 193: [: слишком много аргументов

Это косяк в скрипте, в этой строке пропущены кавычки. Должно быть так:
[ ! -e "$aliasFullName" ] && return 1

В). Третья проблема:

Please install following package: ImageMagick
Please install following package: FreeType
Please install following package: libgsf
Please install following package: UnixODBC

Это самое интересное :) . Проверка на существование этих библиотек находится в функции checkInstalledLibs (~ 214-я строчка скрипта). В свою очередь, эта функция запускает функцию checkLib с параметром, принимающим значение конкретной библиотеки, причем проверка происходит следующим образом: к значению передаваемого параметра слева прибавляется слово "lib", а справа - ".so". Т.е. для проверки библиотеки "MagickWand" ее название превращается в "libMagickWand.so" и далее происходит поиск файла с этим названием в папке, заданной значением переменной "SYSTEM_LIB_PATH". Вот тут-то собака и порылась! Вывод echo "$SYSTEM_LIB_PATH" показал, что этой переменной значение нигде не присваивалось. Посему я закомментировал в функции checkLib строку
[ -z "$SYSTEM_LIB_PATH" ] && SYSTEM_LIB_PATH='getLibPath' (~ 180-я строка)
а вместо нее строкой ниже написал:
SYSTEM_LIB_PATH="/usr/lib" (т.е. задал ей значение).
Соответственно, необходимость прописывать строку SYSTEM_LIB_PATH = "/usr/lib" в файле /etc/environment отпала.
Теперь осталось сделать символические ссылки в каталоге /usr/lib на нужные библиотеки, причем не забываем, что имя ссылки должно соответствовать шаблону "lib" + имя библиотеки + ".so". Поиск нужных библиотек по файловой системе я осуществлял на сайте http://packages.ubuntu.com/ (если кому интересно, где что лежит, могу ниже написать).
2. Dim Dragonim (Dragonim) 16.07.13 09:15
Конечно интересно, пиши.
3. Gimalaj Gimalaev (gimalaj) 25.09.13 11:04
(2)Какая версия дистрибутива интересует?
4. Dim Dragonim (Dragonim) 25.09.13 11:52
Устанавливаю 1С 8.3.3.721 на Ubuntu Server 12.04

Вообще интересно почему 1С не решает проблему с ошибками, от релиза к релизу одно и тоже.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа