Toolbox: Проблема с локалью, необходимо установить пакет glibc-langpack- *

Созданный на 23 февр. 2019  ·  10Комментарии  ·  Источник: containers/toolbox

используя stack для создания программы haskell внутри набора инструментов Fedora, я получил странную ошибку, которую я мог отследить до проблемы с локалью. Были и другие проблемы, такие как less не отображающие байтовые последовательности UTF-8. Запуск locale обнаружил ошибки:

$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=fr_FR.UTF-8
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=

Установка пакета glibc-langpack-fr (в моем случае) решила проблему. Вероятно, это следует сделать при первом создании набора инструментов. Или это может быть часть документации.

1. Bug 5. Good First Issue 5. Help Wanted

Самый полезный комментарий

Запуск $ toolbox run locale на хосте дает:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
(...)

Кажется, что это внутренняя локаль хоста, чего не происходит при запуске $ locale в сеансе контейнерной оболочки:

$ toolbox enter
⬢$ locale
LANG=C.UTF-8
LC_CTYPE="C.UTF-8"
(...)

Хотя я не уверен, является ли это отдельной проблемой, установка glibc-langpack-en или glibc-all-langpacks решает ее для меня. Я использую Fedora 31 Silverblue.

Все 10 Комментарий

Да, я слышал о подобной странности, о которой сообщают чешские пользователи, но поскольку locale похоже, отлично работает для вариантов en (а не только en_US ), я забыл о Это.

Вы знаете, как пакет glibc-langpack-fr устанавливается на ваш хост Fedora?

Благодаря @halfline я понимаю это немного лучше.

Вероятно, замена glibc-minimal-langpack на glibc-all-langpacks решит самые насущные проблемы:

# dnf -y swap glibc-minimal-langpack glibc-all-langpacks

Я думаю, что полное исправление также потребует удаления /etc/rpm/macros.image-language-conf и переустановки всех пакетов с отсутствующими переводами. Это будет связано с чем-то похожим на # 55, который отменяет эффекты tsflags=nodocs .

Также было бы полезно иметь конкретный тестовый пример, который я мог бы использовать для проверки своих экспериментов.

На данный момент более простым решением или обходным решением может быть просто запустить podman с LANG=C.utf8 .
Думаю, это должно решить большинство текущих проблем.

Минималистский тестовый пример - это просто запустить locale :

<strong i="10">@toolbox</strong> ~ $ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=ja_JP.UTF-8
:

Я не знаю, связано ли это с этой проблемой или нет, но в недавнем наборе инструментов локаль больше не сохраняется с хоста. теперь я получаю локаль en_US.UTF-8 , ошибку локали и те же проблемы с vim, что и в # 14 (за исключением того, что не работает внутри tmux)

В настоящее время toolbox по умолчанию устанавливает только glibc-langpack-en .
edit Я думаю, что это унаследовано от изображения fedora:30 .

В последней версии Fedora: 30 (и Fedora: rawhide) glibc-langpack-en был удален.
например, это влияет на https://bodhi.fedoraproject.org/updates/FEDORA-CONTAINER-2019-724ac61633

На самом деле, мне кажется, настоящая проблема в том, что в fedora: 30 /etc/locale.conf есть LANG="en_US.UTF-8" :
предполагая, что вышеуказанное изменение является преднамеренным.
Мы могли бы обойти это с помощью sed -e 's/en_US/C' /etc/locale.conf .

Хорошо, похоже, это покрыто https://bugzilla.redhat.com/show_bug.cgi?id=1727489

Можно подтвердить, что установка glibc-langpack-en или glibc-alll-langpacks устраняет эту проблему. Имейте в виду, что последний весит около 200 МБ, что вдвое меньше веса контейнера.

Запуск $ toolbox run locale на хосте дает:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
(...)

Кажется, что это внутренняя локаль хоста, чего не происходит при запуске $ locale в сеансе контейнерной оболочки:

$ toolbox enter
⬢$ locale
LANG=C.UTF-8
LC_CTYPE="C.UTF-8"
(...)

Хотя я не уверен, является ли это отдельной проблемой, установка glibc-langpack-en или glibc-all-langpacks решает ее для меня. Я использую Fedora 31 Silverblue.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги