ansible - 使用 Ansible 在 CentOS 7 中设置语言和时区:无法安装语言环境包
问题描述
我找到了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 丢失。软件包“语言环境”是否已安装?
所以我尝试安装它:
- name: Install locales package
become: yes
yum:
name: locales
state: present
Ansible 和手动安装sudo yum install locales
都不起作用。我也尝试启用 EPEL 回购但没有成功。
如何确保目标系统上存在请求语言?
解决方案
自 2018 年 8 月 27 日以来,有一个开放的错误报告,用于 centos 支持。我建议你投票给它,这样我们就有机会爬上优先级列表(如果你有所需的技能和足够的时间,也可以提交 PR)
在解决此问题之前,您可能可以应用@wojciech-kopras 于 2019 年 4 月根据您的问题改编的工作方法(针对dockercentos: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 }}"
推荐阅读
- java - getMaxInactiveInterval 返回与 application.properties 中配置的值不同的值
- flutter - 使用 BlockBuilder() 和 TextField() 的 onChanged 属性更新状态失败。[Flutter_Bloc]
- selenium - SocketTimeoutException:使用 TeamCity 的 RestAssured 连接超时
- swift - S 的 (Swift) 扩展
> 其中 S 是泛型结构,P 是类型约束协议 - css - 如何创建这样的面包屑导航?
- http - 如何使这个 HTTP 请求示例工作?
- delphi - 当 TGridPanel 的单元格具有较大的 BorderWidth 时,如何从它获取真正的 ClientRect?
- java - Grails 4.X 可以运行哪些 Java 版本?
- r - ggplot中多列的饼图
- graphql - graphQL + gatsby:查询 Image 或 mp4 的字段