configuração de seleções debconf para a configuração do teclado falhar… o layout termina como Afghani

5

Eu tenho uma máquina que eu netinstalled, com o conjunto de teclado alemão, mas ignorou minha configuração, e é instalado com o teclado dos EUA. Tenho certeza que o configurei, porque se eu não configurá-lo, ele pede interativamente, mas eu queria uma instalação autônoma.

É o Ubuntu 12.04.3

Então, agora, eu quero fazer o script de uma correção para torná-lo o teclado alemão.

Então, primeiro eu interativamente defino as configurações em uma máquina, depois leio as configurações para ver seus valores e, em seguida, em outra máquina, defino as seleções com:

debconf-set-selections <<< "keyboard-configuration keyboard-configuration/altgr select The default for the keyboard layout"
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/compose select No compose key"
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/ctrl_alt_bksp boolean false"
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/layoutcode string de"
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/layout select German"
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/modelcode string pc105"
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/model select Generic 105-key (Intl) PC"
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/optionscode string "
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/store_defaults_in_debconf_db boolean true"
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/switch select No temporary switch"
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/toggle select No toggling"
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/unsupported_config_layout boolean true"
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/unsupported_config_options boolean true"
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/unsupported_layout boolean true"
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/unsupported_options boolean true"
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/variantcode string "
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/variant select German"
debconf-set-selections <<< "keyboard-configuration keyboard-configuration/xkb-keymap select "

Depois mostro as seleções com:

debconf-show keyboard-configuration

E aqui está a saída:

* keyboard-configuration/modelcode: pc105
* keyboard-configuration/unsupported_config_options: true
* keyboard-configuration/unsupported_config_layout: true
* keyboard-configuration/toggle: No toggling
* keyboard-configuration/compose: No compose key
* keyboard-configuration/layout: German
* keyboard-configuration/xkb-keymap:
* keyboard-configuration/variant: German
  debian-installer/console-setup-udeb/title:
* keyboard-configuration/switch: No temporary switch
* keyboard-configuration/unsupported_options: true
  console-setup/detect:
  console-setup/detected:
* keyboard-configuration/altgr: The default for the keyboard layout
* keyboard-configuration/ctrl_alt_bksp: false
* keyboard-configuration/unsupported_layout: true
* keyboard-configuration/variantcode:
* keyboard-configuration/model: Generic 105-key (Intl) PC
* console-setup/ask_detect: false
* keyboard-configuration/layoutcode: de
  keyboard-configuration/other:
* keyboard-configuration/store_defaults_in_debconf_db: true
* keyboard-configuration/optionscode:

E então para reconfigurar o pacote para fazer o sistema realmente usar as configurações, eu corro:

DEBIAN_FRONTEND=noninteractive dpkg-reconfigure keyboard-configuration

E aqui está a saída:

update-initramfs: deferring update (trigger activated)

E, para verificar o que aconteceu, verifiquei as configurações novamente:

debconf-show keyboard-configuration

E aqui está a saída:

* keyboard-configuration/modelcode: a4techKB21
  keyboard-configuration/unsupported_config_options: true
  keyboard-configuration/unsupported_config_layout: true
* keyboard-configuration/toggle: Caps Lock
* keyboard-configuration/compose: No compose key
* keyboard-configuration/layout: Afghani
* keyboard-configuration/xkb-keymap: af
* keyboard-configuration/variant: Afghani
  debian-installer/console-setup-udeb/title:
* keyboard-configuration/switch: No temporary switch
  keyboard-configuration/unsupported_options: true
  console-setup/detect:
  console-setup/detected:
* keyboard-configuration/altgr: The default for the keyboard layout
* keyboard-configuration/ctrl_alt_bksp: false
  keyboard-configuration/unsupported_layout: true
* keyboard-configuration/variantcode: ,
* keyboard-configuration/model: A4Tech KB-21
* console-setup/ask_detect: false
* keyboard-configuration/layoutcode: us,af
  keyboard-configuration/other:
* keyboard-configuration/store_defaults_in_debconf_db: true
* keyboard-configuration/optionscode: grp:caps_toggle,grp_led:scroll

Por que, por que isso se transformou em um layout afegão (selecionado primeiro na lista alfabética para cada pergunta)? Por que não pode simplesmente usar minhas configurações, ou pelo menos ignorá-las, não configurá-las com valores falsos!

E, no passado, usei algo mais como isso, mas com outras coisas (como postfix, etc.):

apt-get install --reinstall keyboard-configuration

Mas, neste caso, com a configuração do teclado, ele faz o mesmo que

DEBIAN_FRONTEND=noninteractive dpkg-reconfigure.

Eu também comparei a máquina interativamente configurada com a que estava em script com o anterior, antes da reconfiguração, e o debconf da máquina inteira é idêntico, exceto por "grub-pc grub-pc / install_devices ..." que possui um id e obviamente não é relevante. E se eu executar o método com script na máquina interativamente instalada, ele não será redefinido para o Afghani, então os sistemas agem de forma diferente, apesar do debconf idêntico.

Existe uma solução para isso?

Eu já vi:

O que "dpkg-reconfigure keyboard-configuration" realmente faz? link automatizar o dtkg-reconfigure tzdata

    
por Peter 18.09.2013 / 15:29

3 respostas

3

Então ... esperamos que algum dia alguém tenha uma resposta adequada, mas aqui está o que acabei fazendo, que é a mesma coisa que fiz anos atrás sem preseed:

configuração do teclado interativo em um nó:

dpkg-reconfigure keyboard-configuration

Depois disso, copie o material de configuração do console

cd
tar czf console-setup.tgz /etc/console-setup

Em seguida, envie esse arquivo para todos os nós ou coloque-o em algum lugar em http.

Em seguida, instale-o em cada nó com um script, em vez de interativamente, um de cada vez:

cd
wget http://somewebserver/console-setup.gz -O ~/console-setup.tgz
cd /
mv /etc/console-setup /etc/console-setup.bak
tar xzf ~/console-setup.tgz
gunzip -c /etc/console-setup/cached.kmap.gz | loadkeys

E contanto que você não reconfigure o teclado de outra maneira, ele provavelmente permanecerá assim (como há anos na instalação anterior). Mas talvez haja algumas coisas que poderiam ser alteradas novamente, como:

DEBIAN_FRONTEND=noninteractive dpkg-reconfigure keyboard-configuration
    
por 26.09.2013 / 13:32
4

Eu entendo sua frustração neste. Aqui está como eu lido com isso em um contexto similar (disposições vagabundas), então espero que o dia tenha chegado.

A chave é usar o debconf-utils para descrever a configuração. Primeiro:

sudo apt-get install debconf-utils

Você pode ver a configuração atual com:

debconf-get-selections | grep keyboard-configuration

Lidar com todas essas opções de configuração pode ser um pouco tedioso, então você pode querer executar um dpkg-reconfigure keyboard-configuration interativo em uma máquina, como na solução proposta. Em seguida, exporte as novas configurações com o comando acima para um novo arquivo, digamos file.conf .

Transfira o arquivo para as máquinas que precisam de configuração e:

debconf-set-selections < file.conf
dpkg-reconfigure keyboard-configuration -f noninteractive

É isso mesmo.

BONUS: Tarefas Ansible

No caso de você usar Ansible, aqui está uma parte do meu manual para este assunto:

- name: Configuring keyboard [creating file]
  template: src=templates/deb-keyboard.conf.j2 dest=/home/vagrant/.deb-keybard.conf
  register: debconf_template

- name: Configuring keyboard [setting selections]
  shell: debconf-set-selections < /home/vagrant/.deb-keybard.conf
  become: true
  when: debconf_template.changed
  # or use handlers

- name: Configuring keyboard [reconfiguring dpkg]
  command: dpkg-reconfigure keyboard-configuration -f noninteractive
  become: true
  when: debconf_template.changed
    
por 01.02.2016 / 17:03
0

Descobri que no meu caso, eu não havia especificado o tipo correto para os módulos debconf no Ansible. Se alguém mais estiver tentando fazer isso com o Ansible, em sua máquina "modelo" (aquela que você está usando para obter todas as configurações certas) instale debconf-utils e execute debconf-get-selections | grep keyboard-config e execute debconf-show keyboard-configuration . Isso lhe dá uma lista das coisas que são alteradas (itens com o * ao lado deles). Observe que os itens no debconf-get-selections informam de que tipo eles são.

Para mim, para defini-las como English (UK) , eu precisava da seguinte tarefa ansiosa:

- name: Set keyboard layout debconf: name: "keyboard-configuration" question: "keyboard-configuration/{{ item.key }}" value: "{{ item.value }}" vtype: "{{ item.type|default('string') }}" with_items: - { key: "altgr", value: "The default for the keyboard layout", vtype: "select" } - { key: "compose", value: "No compose key", vtype: "select" } - { key: "ctrl_alt_bksp", value: "false", type: "boolean" } - { key: "variant", value: "English (UK)", vtype: "select" } - { key: "layout", value: "English (UK)", vtype: "select" } - { key: "model", value: "Generic 105-key PC (intl.)", vtype: "select" }

Aqui estão duas linhas de exemplo dos comandos debconf- * que eu referenciei acima:

  • (debconf-get-selections) keyboard-configuration keyboard-configuration/layout select English (UK)
  • (debconf-show) * keyboard-configuration/layout: English (UK)
por 15.05.2018 / 17:37