Bug 43207 - Невозможно инициализировать кластер с локалью отличной от текущей системной
Summary: Невозможно инициализировать кластер с локалью отличной от текущей системной
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: postgresql14-server (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Alexei Takaseev
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-07-12 09:14 MSK by Andrey
Modified: 2022-07-12 11:51 MSK (History)
11 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Andrey 2022-07-12 09:14:20 MSK
Оставляю системную локаль en_US.UTF-8, чтобы логи проще читать было, а ru_RU.UTF-8 только при создании кластера БД указываю.

 # locale
 LANG=en_US.UTF-8
 ...

 # /etc/rc.d/init.d/postgresql initdb --locale=ru_RU.UTF-8 | grep -E 
или
 # LANG=ru_RU.UTF-8 /etc/rc.d/init.d/postgresql initdb | grep -E "(locale|encoding|search)"

РЕЗУЛЬТАТ:

 The database cluster will be initialized with locale "en_US.UTF-8".
 The default database encoding has accordingly been set to "UTF8".
 The default text search configuration will be set to "english".

ОЖИДАЕТСЯ:

 ... "ru_RU.UTF-8".
 ... "UTF8".
 ... "russian".

ПРИЧИНА: в /etc/rc.d/init.d/postgresql алгоритмом не заложена возможность указания локали для инициализации кластера БД:

 118 locale_list="$(su -l postgres -s /bin/sh -c '/usr/bin/locale')"
 119 locale="$(echo $locale_list | tr ' ' '\n' | grep LANG | cut -d '=' -f2 )"
 120 echo "Creating default database:"
 121 su -s /bin/sh -l postgres -c "initdb  --pgdata=\"$PGDATA\" --locale=\"$locale\" "

КОСТЫЛЬ ДЛЯ ОБХОДА ОГРАНИЧЕНИЯ:
Создать /var/lib/pgsql/.profile со строками:

 LANG=ru_RU.UTF-8
 export LANG

Но тогда и выхлоп скрипта будет на русском, а этого не хочется.
Желательна возможность явно задать локаль с которой нужно инициализировать кластер, а если её явно не указали тогда пусть получает LANG у postgres.

Аналогичная ситуация в: 
postgresql14-1C-server
postgresql13-server
postgresql12-server
postgresql11-server
postgresql10-server
postgresql9.6-server

PS: и у PostgresPro в сборках для 1С так же.