Как сделать локаль “de_DE.CP1252” доступной для, “dpkg-реконфигурировали локали”?

Я использую сервер UB 16.04 LTS, и сегодня новая версия пакета локалей была выпущена и установлена:

Start-Date: 2019-02-21  09:44:05
Commandline: /usr/bin/apt-get -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold dist-upgrade
Upgrade: [...], locales:amd64 (2.23-0ubuntu10, 2.23-0ubuntu11), [...]
End-Date: 2019-02-21  09:44:45

Я дополнительно использую PostgreSQL 11 с базами данных, полагающимися на набор символов windows-1252 по историческим причинам:

Name  |  Owner   | Encoding |   Collate    |    Ctype     |   Access[...]
------+----------+----------+--------------+--------------+--------------
[...] | postgres | WIN1252  | de_DE.CP1252 | de_DE.CP1252 |

Для предоставления доступа к этому доступным следующая команда используется:

localedef -f CP1252 -i /usr/share/i18n/locales/de_DE /usr/lib/locale/de_DE.CP1252

Используя locale-gen вместо этого дает следующую ошибку:

locale-gen de_DE.CP1252
Error: 'de_DE.CP1252' is not a supported language or locale

Проблема теперь состоит в том что, скорее всего, после нового locales- пакет был установлен, мой вручную добавленный был удален автоматически и доступ к базам данных, полагающимся на ту отказавшую локаль:

2019-02-21 09:42:45.109 CET [27039] FATAL:  Datenbank-Locale ist inkompatibel mit Betriebssystem
2019-02-21 09:42:45.109 CET [27039] DETAIL:  Die Datenbank wurde mit LC_COLLATE »de_DE.CP1252« initialisiert, was von setlocale() nicht erkannt wird.

От моего понимания, все локали, которые были распознаны и включены dpkg-reconfigure locales были сохранены и моя пользовательская локаль не перечислена там.

Я предполагаю, что приложение обеспечивает все локали из файла /usr/share/i18n/SUPPORTED? Я должен добавить свою пользовательскую локаль там вручную также? Что-то как следующее, кажется, не работает, новую строку не показывают:

de_DE.CP1252 CP1252
de_DE.UTF-8 UTF-8
0
задан 25 February 2019 в 01:20

1 ответ

На самом деле, мои вопросы состоит из двух частей: конечная цель должна быть применяться localedef чаще, чем необходимый и я думал что, делая мою локаль распознанной dpkg-reconfigure locales решает это. К сожалению, это, кажется, не имеет место.

dpkg-реконфигурируйте локали

Следующее описание ТОЛЬКО для предоставления доступа к некоторой локали доступной для dpkg-reconfigure locales, это не решает мою проблему полностью, которую я решаю в другом вопросе. Каталог, созданный localedef /usr/share/i18n/locales/de_DE /usr/lib/locale/de_DE.CP1252 все еще удален каждый раз, когда dpkg-reconfigure locales выполняется после того, как я сделал выполняющие описанные шаги.

Другой ответ принес файл /etc/locale.gen к моему вниманию, которое содержит следующие документы:

# This file lists locales that you wish to have built. You can find a list
# of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add
# user defined locales to /usr/local/share/i18n/SUPPORTED. If you change
# this file, you need to rerun locale-gen.

Таким образом, я создал /usr/local/share/i18n/SUPPORTED со следующей записью и dpkg-reconfigure locales содержавший локаль я интересуюсь:

de_DE.CP1252 CP1252

enter image description here

Файл /etc/locale.gen впоследствии содержавший моя локаль как последняя строка также:

# zu_ZA.UTF-8 UTF-8
de_DE.CP1252 CP1252

И со всеми другими строками в том файле, отключая мое использование локали dpkg-reconfigure locales изменяет строку для становления комментарием также:

# zu_ZA.UTF-8 UTF-8
# de_DE.CP1252 CP1252

Так, важная вещь, кажется, делает локаль доступной в файле /usr/local/share/i18n/SUPPORTED вместо значения по умолчанию пакета в /usr/share/i18n/SUPPORTED.

0
ответ дан 26 October 2019 в 04:52

Другие вопросы по тегам:

Похожие вопросы: