Руководство по установке сервера S-INFO
×

15. Локализация и ICU

Серверная часть S-INFO использует механизмы локализации .NET для работы с датами, временем, числами, строками и региональными форматами.
На Linux для этого используется системная библиотека ICU и установленные в системе локали. В большинстве установок необходимые компоненты уже есть. Если система установлена в минимальном составе, при запуске backend может появиться ошибка, связанная с Globalization, CultureInfo, ICU или Invariant mode.
 

Для Ubuntu 24.04 установите необходимые пакеты:

sudo apt install -y libicu74 locales
 

Сгенерируйте UTF-8 локаль:

sudo locale-gen ru_RU.UTF-8
 sudo locale-gen en_US.UTF-8
 

При необходимости назначьте системную локаль по умолчанию:

sudo update-locale LANG=ru_RU.UTF-8
 

Проверьте текущую локаль:

locale
 

Проверьте наличие ICU-библиотек:

ldconfig -p | grep icu
 
На Astra Linux названия пакетов обычно близки к Debian/Ubuntu, но могут отличаться в зависимости от версии системы и подключенных репозиториев.
 

Если пакет libicu74 недоступен, найдите доступный ICU-пакет:

apt-cache search libicu
 

Затем установите найденный runtime-пакет ICU и пакет локалей:

sudo apt install -y locales <ICU_PACKAGE>
 
Для ALT Linux используется apt-get.
 

Перед установкой обновите сведения о пакетах:

sudo apt-get update
 

Найдите доступный ICU-пакет:

apt-cache search libicu
 

Установите пакет локалей и найденный runtime-пакет ICU:

sudo apt-get install -y glibc-locales <ICU_PACKAGE>
 

После установки проверьте доступные локали:

locale -a | grep -Ei 'ru_RU|en_US'
 
После изменения локали рекомендуется перезапустить сервер или повторно подключиться к консоли.
 
Отключать локализацию .NET не рекомендуется. Это может привести к некорректной обработке дат, чисел, строк и региональных форматов.
 

В крайнем случае, если backend нужно временно запустить для диагностики, можно включить invariant-режим .NET:

export DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
./BackendWebService
 

Для постоянного запуска через systemd переменная добавляется в файл службы:

Environment=DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
 
После устранения проблемы с ICU и локалями эту настройку необходимо убрать и перезапустить службу.