Предпосевные локали в Debian

Я пытаюсь использовать debconf, чтобы установить значения для locales пакет в Debian squeeze, так что я могу перенастроить его неинтерактивно, например, для генерации всех локалей. Я извлекаю правильный выбор из рабочей системы, используя debconf-get-selections, а затем кормить их debconf-set-selections на новой системе.

Это работает для других пакетов, например sun-java6-bin не совсем для locales, Я могу установить значения с debconf-set-selections, но если я перенастроить locales с dpkg-reconfigure (или переустановите его, например, apt-get install --reinstall locales (в этом отношении), значения сбрасываются, а новые локали не генерируются.

Симптомы точно такие же, как в ошибке #592216 в Debian, но эта ошибка официально устранена в версии 2.9-13 пакета. У Squeeze 2.11.3-4, так что либо ошибка все еще есть, либо я делаю что-то не так.

Кто-нибудь испытывал то же самое?

заранее спасибо

- М

2 ответа

Мне удалось создать политику cfengine3, аналогичную манифесту @ cosimo, и она, похоже, работает. Я в порядке с этим, но я все еще считаю, что ошибка #592216 еще не устранена, поэтому я могу подать еще одну в Debian.

Моя реализация cfengine использует тот факт, что /etc/locale.gen кажется, содержит все возможные локали, но закомментировано.

Вместо того, чтобы переписывать файл с нуля и, возможно, вводить ошибки, я прошу cfengine раскомментировать локали, которые я хочу сгенерировать. Если локали там нет, будь то, потому что она не поддерживается или я написал ее с ошибкой, ничего не происходит. Этот подход также упрощает то, что нет необходимости писать и локаль, и кодировку: вы можете просто написать локаль и позволить cfengine раскомментировать все связанные кодировки для этой локали.

'достаточно:

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 ;
}

Да, у меня возникла та же проблема, и после некоторой борьбы с ней я нашел обходной путь, который использует /etc/locale.gen,

Я опубликовал модуль puppet для настройки локалей, которые мы обычно используем на наших серверах, то есть только 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"] ]
  }

}

Даже если вы не используете марионетку;-), вы легко поймете, что происходит. Вы просто создаете /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
Другие вопросы по тегам