Установите язык и часовой пояс в CentOS 7, используя Ansible: Не удается установить пакет локалей - PullRequest
1 голос
/ 10 января 2020

Я нашел модуль locale_gen , чтобы убедиться, что в системе присутствуют локали, и попробовал его , как описано здесь :

- name: Install EN locale
  locale_gen:
    name: "de_DE.UTF-8"
    state: present

- name: Install DE locale
  locale_gen:
    name: "en_US.UTF-8"
    state: present

Это выдает ошибку :

/ etc / locale.gen и /var/lib/locales/supported.d/local отсутствуют. Установлен ли пакет \ "locales \"?

Поэтому я попытался установить его:

- name: Install locales package
  become: yes
  yum:
    name: locales
    state: present

И Ansible, и ручная установка с использованием sudo yum install locales не работает , Я также попытался включить репо EPEL безуспешно.

Как я могу убедиться, что запрашиваемые языки присутствуют в целевой системе?

Ответы [ 2 ]

0 голосов
/ 14 января 2020

Кроме того, для некоторого добавленного контекста нет пакета с именем locales, поэтому исходная задача для yum не выполняется. Имя пакета, содержащего данные локали, равно glibc-common (по крайней мере для RHEL / CentOS 7, должно быть одинаковым для 8). Однако, как заметил первый комментатор, похоже, есть ошибка.

0 голосов
/ 12 января 2020

С 27 августа 2018 года существует открытый отчет об ошибках для поддержки Centos. Я предлагаю вам проголосовать за него, чтобы мы получили шанс подняться в списке приоритетов (или подать PR, если у вас есть необходимые навыки и достаточно времени)

Пока это не исправлено, вы, вероятно, можете применить Обходной путь, предложенный @ wojciech-kopras апреля 2019 , адаптированный ниже из вашего вопроса (успешно протестирован на контейнере docker centos:7):

- name: Define needed locales (for example, can be set in vars or inventory)
  set_fact:
    system_settings_locales:
      - en_US.UTF-8
      - de_DE.UTF-8

- name: Check existing locales
  shell: "locale -a | grep -i {{ item | regex_replace('-', '') | quote }}"
  register: found_locales
  changed_when: false
  failed_when: false
  loop: "{{ system_settings_locales }}"

- name: Create missing locales
  command: "localedef -i {{ item.item | regex_replace('(.*)\\..*', '\\1') | quote }} -f {{ item.item | regex_replace('.*\\.(.*)', '\\1') | quote }} {{ item.item | quote }}"
  when: item.rc != 0
  loop: "{{ found_locales.results }}"
...