Установка "en_US" в контейнере RHEL

Я проверяю роль с помощью молекулы. Роль установить корпоративный двоичный файл, над которым я не понимаю, я просто хочу ./binary --silent и это все. За RedHat.

Это работает для RedHat 6.9 VM. Но он не работает над док-контейнером registry.access.redhat.com/rhel6:6.9.

Сообщение об ошибке говорит:

Msgstr "Неверный язык операционной системы (en_US не найден)".

Что может отсутствовать в контейнере, который будет на виртуальной машине? Какое-то местное происхождение...? Я не смог найти документ об этом, но есть ли какое-то описание RedHat о разнице между их виртуальными машинами с "минимальной установкой из ISO" и контейнерами?

Спасибо за любую помощь

1 ответ

Если вы бежите locale -a на образе Docker, который вы используете, вы получите следующий вывод:

C
en_US.utf8
POSIX

Запустите ту же команду на своей виртуальной машине и сравните вывод. Если он содержит строку en_US (без суффикса utf-8), попробуйте добавить следующие строки прямо ниже FROM директива в вашем Dockerfile:

RUN localedef -v -c -i en_US -f UTF-8 en_US; exit 0
RUN sed -i 's/en_US.UTF-8/en_US/g' /etc/sysconfig/i18n && source /etc/sysconfig/i18n

Это создаст локаль en_US с кодировкой UTF-8 с именем en_US (без суффикса).

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