我找到了locale_gen模块,以确保系统上存在语言环境,并尝试了like described here:
- 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/support.d/local丢失。是否已安装软件包“ locales”?
所以我尝试安装它:
- name: Install locales package
become: yes
yum:
name: locales
state: present
使用sudo yum install locales
的Ansible和手动安装均无效。我也尝试过启用EPEL回购,但没有成功。
如何确保目标系统中存在请求的语言?
答案 0 :(得分:0)
自2018年8月27日起,有open bug report用于centos支持。我建议您投票给它,以便我们有机会爬上优先级列表(如果您具备必要的技能和足够的时间,则可以提交PR)
在此问题解决之前,您可以根据问题应用以下改编的workarround proposed by @wojciech-kopras on april 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 }}"
答案 1 :(得分:0)
此外,对于某些添加的上下文,没有名为locales
的软件包,这就是为什么yum原始任务失败的原因。包含语言环境数据的软件包名称为glibc-common
(至少在RHEL / CentOS 7上应与8相同)。但是,正如第一位评论者所述,似乎有一个错误。