используя 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
(в моем случае) решила проблему. Вероятно, это следует сделать при первом создании набора инструментов. Или это может быть часть документации.
Да, я слышал о подобной странности, о которой сообщают чешские пользователи, но поскольку 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.
Самый полезный комментарий
Запуск
$ toolbox run locale
на хосте дает:Кажется, что это внутренняя локаль хоста, чего не происходит при запуске
$ locale
в сеансе контейнерной оболочки:Хотя я не уверен, является ли это отдельной проблемой, установка
glibc-langpack-en
илиglibc-all-langpacks
решает ее для меня. Я использую Fedora 31 Silverblue.