Перевод инфраструктуры 1С:Предприятие на операционные системы семейства Linux (такие как Debian, Ubuntu, Astra Linux, РЕД ОС) — актуальная задача для многих системных администраторов. Однако в процессе развертывания часто возникают специфические сложности, которых не было в среде Windows. В частности, это конфликты зависимостей при установке различных версий платформы, проблемы совместимости 32-битных и 64-битных пакетов, а также неожиданные зависания графического интерфейса при первом запуске.
В этой статье мы подробно проанализируем причины возникновения этих неполадок и разберем проверенные практические методы их устранения.
Рассмотрим весьма распространенный сценарий: установка платформы (например, версии 8.3.18.891) на чистую систему Linux завершена без ошибок, зависимости удовлетворены. Администратор или пользователь пытается запустить стартер 1С (лаунчер). Поскольку список баз пуст, система выводит стандартное окно с предложением добавить новую базу. Но при нажатии на любую кнопку («Да» или «Нет») диалоговое окно закрывается, а сам процесс 1cv8 намертво зависает в фоновом режиме, не открывая основное окно выбора баз.
Выясним причину этого поведения. Проблема кроется во встроенном веб-браузере платформы и механизмах рендеринга интерфейса. Стартовые окна 1С, особенно окна авторизации и создания баз, активно задействуют движок WebKit/GTK. Если в операционной системе отсутствуют необходимые библиотеки рендеринга или нарушена интеграция с GTK3 (о чем часто свидетельствуют предупреждения в консоли вида Gtk-WARNING **: Theme parsing error: gtk.css), графическая подсистема уходит в бесконечный цикл ожидания ответа, блокируя выполнение основного потока программы.
Для решения этой проблемы мы можем применить несколько эффективных методов.
Метод 1: Обход диалога через создание базы из командной строки
Самый быстрый и надежный способ — сделать так, чтобы стартовое диалоговое окно добавления базы вообще не появлялось. Для этого мы можем создать тестовую базу напрямую через консоль. Проанализируем команду создания базы:
/opt/1cv8/x86_64/8.3.18.891/1cv8 CREATEINFOBASE File=$HOME/testinfobase /ADDTOLIST testinfobase
Рассмотрим параметры этой команды подробнее:
/opt/1cv8/x86_64/8.3.18.891/1cv8 — прямой путь к исполняемому файлу конкретной версии платформы (замените номер версии на актуальный для вас).CREATEINFOBASE — директива создания новой информационной базы.File=$HOME/testinfobase — указывает, что создается файловая база в домашнем каталоге пользователя в папке testinfobase./ADDTOLIST testinfobase — параметр, который автоматически добавляет созданную базу в список зарегистрированных баз под именем testinfobase.Важное правило: запуск этой команды необходимо выполнять строго от имени того пользователя Linux, под которым в дальнейшем будет осуществляться работа в 1С. После успешного выполнения команды список баз перестанет быть пустым, и при следующем запуске лаунчер сразу откроет стандартное рабочее окно выбора баз, минуя зависающий стартовый диалог.
Метод 2: Ручное создание файла списка баз
Если мы не хотим создавать физическую базу на диске, мы можем вручную сформировать файл конфигурации списка баз ibases.v8i. Шаги выполнения выглядят следующим образом:
~/.1C/1cestart/. Если каталога не существует, создадим его.ibases.v8i.
[Фиктивная база для обхода зависания]
Connect=File="~/.1C/dummy_db";
ID=12345678-1234-1234-1234-1234567890ab
OrderInList=16384
Folder=/
OrderInTree=16384
ExternalConnection=
App=Auto
WA=1
AppArch=Default
После сохранения этого файла система увидит, что список баз не пуст, и запустится в штатном режиме.
Метод 3: Установка недостающих графических библиотек
Чтобы окончательно решить проблему с отображением встроенного веб-контента в 1С на дистрибутивах Debian или Astra Linux, нам потребуется установить системные библиотеки WebKitGTK. Для этого в терминале выполним установку пакетов:
sudo apt-get update
sudo apt-get install libwebkit2gtk-4.0-37
Если вы используете устаревшие версии платформы 1С, им может потребоваться более ранняя ветка библиотеки:
sudo apt-get install libwebkitgtk-3.0-0
Часто системные администраторы сталкиваются с ситуацией, когда на сервере, где уже функционирует серверная часть 1С, требуется установить тонкий клиент для локального администрирования или тестирования. При попытке установить пакет 1c-enterprise83-thin-client менеджер пакетов выдает ошибку о неразрешимом конфликте с пакетом 1c-enterprise83-common.
Давайте разберем архитектуру пакетов 1С на Linux, чтобы понять, почему это происходит. Разработчики 1С заложили в пакет тонкого клиента жесткий конфликт с общими библиотеками платформы. Пакет thin-client позиционируется как легковесный дистрибутив исключительно для рабочих станций пользователей, где нет и не планируется установка полноценной платформы или сервера.
Если на вашем компьютере уже установлены пакеты сервера (server) и общие компоненты (common), то:
1c-enterprise83-client. Она содержит в себе все необходимые файлы.В операционной системе Windows мы привыкли к тому, что разные версии платформы 1С устанавливаются параллельно в соседние директории (например, в C:\Program Files\1cv8\), а общий стартер автоматически выбирает нужную версию для запуска конкретной базы. В Linux старые пакетные дистрибутивы (до версии 8.3.20) ведут себя иначе: при установке новой версии менеджер пакетов пытается обновить текущую, заменяя файлы предыдущей версии.
Рассмотрим, как обойти это ограничение и развернуть несколько версий платформ параллельно.
Вариант для старых версий платформ (до 8.3.20): Ручная распаковка пакетов
Чтобы обойти контроль пакетного менеджера dpkg или apt, мы можем распаковать deb-пакеты вручную в обход стандартной процедуры установки. Разберем этот процесс по шагам:
dpkg-deb. Например, создадим директорию для распаковки:
mkdir -p /tmp/1c_unpack
dpkg-deb -x 1c-enterprise83-common_8.3.18.891_amd64.deb /tmp/1c_unpack/
dpkg-deb -x 1c-enterprise83-server_8.3.18.891_amd64.deb /tmp/1c_unpack/
dpkg-deb -x 1c-enterprise83-client_8.3.18.891_amd64.deb /tmp/1c_unpack/
/opt/:
sudo mkdir -p /opt/1cv8/x86_64/8.3.18.891/
sudo cp -r /tmp/1c_unpack/opt/1cv8/x86_64/8.3.18.891/* /opt/1cv8/x86_64/8.3.18.891/
При таком подходе разные версии платформы будут физически изолированы друг от друга в файловой системе и не вступят в конфликт. Запуск конкретной версии сервера или клиента будет осуществляться путем прямого вызова исполняемых файлов из соответствующей директории.
Вариант для современных версий платформ (начиная с 8.3.20)
Начиная с версии 8.3.20 (а также в некоторых поздних релизах 8.3.18), компания 1С существенно упростила этот процесс, перейдя на единый дистрибутив установки в формате .run-файлов (например, setup-full-8.3.20.xxxx-x86_64.run). Этот инсталлятор работает аналогично установщику Windows: он автоматически размещает файлы разных релизов в изолированные папки и корректно регистрирует общий стартер без конфликтов на уровне ОС.
При необходимости запустить старые конфигурации или внешние компоненты, которые жестко привязаны к 32-битной архитектуре, администраторы пытаются установить 32-битный клиент 1С на 64-битный сервер. Напрямую это сделать невозможно из-за ошибок отсутствия библиотек.
Посмотрим, как решить эту проблему с помощью технологии мультиархитектуры (Multiarch). Нам необходимо разрешить операционной системе загружать и использовать 32-битные библиотеки параллельно с 64-битными. Выполним по шагам в консоли:
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386 libstdc++6:i386 libgsf-1-common
После этого пакетный менеджер сможет успешно разрешить зависимости, и вы без труда установите 32-битные deb-пакеты клиента 1С на вашу 64-битную систему Debian или Astra Linux.