在Debian中预置区域设置

我正在尝试使用debconf为Debian挤压中的locales包预置值,以便我可以非交互地重新configuration它,例如生成所有语言环境。 我使用debconf-get-selections selections从工作系统中提取正确debconf-get-selections ,然后将它们提供给新系统上的debconf-set-selections

它正在为其他软件包,例如sun-java6-bin ,不太适合locales 。 我可以使用debconf-set-selections来设置值,但是如果我使用dpkg-reconfigure重新configurationlocales (或者用apt-get install --reinstall locales重新安装它),那么这个值会被重置,新的语言环境不会生成。

症状与debian bug#592216完全一样,但是该错误在软件包的版本2.9-13中正式解决。 挤压有2.11.3-4,所以无论是错误仍然存​​在,或者我做错了什么。

有没有人经历过同样的事情?

提前致谢

– M

是的,我遇到了同样的问题,经过一段时间,我find了一个使用/etc/locale.gen的解决方法。

我发布了一个puppet模块来configuration我们通常在我们的服务器上使用的语言环境,也就是只有en_US.UTF-8

https://github.com/cosimo/puppet-modules/blob/master/locales/manifests/init.pp

在这里,内联:

 class locales { package { "locales": ensure => "latest", } file { "/etc/locale.gen": source => [ "puppet:///locales/locale.gen.$fqdn", "puppet:///locales/locale.gen" ], owner => "root", group => "root", mode => 644, require => Package["locales"], } exec { "/usr/sbin/locale-gen": subscribe => File["/etc/locale.gen"], refreshonly => true, require => [ Package["locales"], File["/etc/locale.gen"] ] } } 

即使你不使用木偶;-),你可以很容易地理解发生了什么。 您只需使用要生成的语言环境列表创build/etc/locale.gen文件,然后运行/usr/sbin/locale-gen

这里是我用作/etc/locale.gen的列表文件:

 # This file lists locales that you wish to have built. You can find a list # of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add # user defined locales to /usr/local/share/i18n/SUPPORTED. If you change # this file, you need to rerun locale-gen. en_US.UTF-8 UTF-8 

我设法创build了一个类似于@ cosimo的清单的cfengine3策略,它似乎可行。 我很好,但我仍然认为,错误#592216尚未解决,所以我可以提交另一个Debian。

我的cfengine实现利用了/etc/locale.gen似乎包含所有可能的语言环境的事实,但注释掉了。

而不是从头重写文件,并可能引入错误,我要求cfengine取消我想要生成的区域设置的注释。 如果语言环境不存在,那是因为它不被支持,或者我拼错了,没有任何反应。 这种方法也简化了事情,因为没有必要同时编写语言环境字符集:只需编写语言环境,并让cfengine取消注释该语言环境的所有相关字符集。

“nuff说:

 body common control { inputs => { "cfengine_stdlib.cf" } ; bundlesequence => {"test"} ; } bundle agent test { vars: "locales" slist => { "da_DK.UTF-8", "de_DE.UTF-8", "en_US.UTF-8", "es_ES.UTF-8", "fr_FR.UTF-8", "it_IT.UTF-8", "nl_NL.UTF-8", "ru_RU.UTF-8", "sv_SE.UTF-8", "tr_TR.UTF-8", "id_ID.UTF-8", "nb_NO.UTF-8", "pl_PL.UTF-8", "vi_VN.TCVN" }, comment => "locales to generate" ; files: "/etc/locale.gen" edit_line => enable_locales(@(test.locales)), classes => if_repaired("regenerate_locales"), comment => "Enable locales, trigger locale-gen if needed" ; commands: regenerate_locales:: "/usr/sbin/locale-gen" comment => "Regenerate locales when needed" ; reports: regenerate_locales:: "Locales regenerated" ; } bundle edit_line enable_locales(locales) { replace_patterns: "^#\s+($(locales).*)$" replace_with => uncomment ; }