установка debconf выборы для настройки клавиатуры перестала работать, … расположение заканчивается как афганский язык

Проверьте свою архитектуру с uname -a видеть, находитесь ли Вы в 64-разрядной системе или 32-разрядной системе.

Если 64-разрядный (x86_64), загрузите: mysql-proxy-0.8.1-linux-rhel5-x86-64bit.tar.gz

Если 32-разрядный (i386), загрузите: mysql-proxy-0.8.1-linux-rhel5-x86-32bit.tar.gz

5
задан 13 April 2017 в 15:14
5 ответов

Итак .. ... надеюсь, что когда-нибудь у кого-то еще будет правильный ответ, но вот что я в итоге сделал, то же самое, что делал много лет назад без preseed:

интерактивная настройка клавиатуры на одном узле:

dpkg-reconfigure keyboard-configuration

Затем, когда это будет сделано, скопируйте настройки консоли

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

Затем отправьте этот файл на все узлы или поместите его где-нибудь по http.

Затем установите его на каждом узле с помощью сценария, а не в интерактивном режиме по одному:

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

И пока поскольку вы не перенастраиваете клавиатуру каким-либо другим способом, она, вероятно, останется такой (как это было в течение многих лет при предыдущей установке). Но, возможно, есть некоторые вещи, которые снова могут испортить, например:

DEBIAN_FRONTEND=noninteractive dpkg-reconfigure keyboard-configuration
3
ответ дан 3 December 2019 в 01:25

Наконец-то вот решение, и оно такое простое, но я потерял два дня, чтобы найти его :(

Решение 1:

  • это послужит для настройки клавиатуры при установке keyboard-configuration в первый раз, или когда вы уже установили его и хотите перенастроить заново.
  • это будет работать и внутри chroot :)
  • и вы больше не нужно использовать debconf-set-selections.
DEBIAN_FRONTEND=noninteractive apt-get install -y console-setup keyboard-configuration
    
# this is the trick, you have to change the default keyboard config before 
# running dpkg-reconfigure or you will always end with what it is configured
#  in /etc/default/keyboard, so for a french keyboard for example:
echo '
XKBMODEL="pc105"
XKBLAYOUT="fr"
XKBVARIANT=""
XKBOPTIONS=""
    
BACKSPACE="guess"
' > /etc/default/keyboard
    
dpkg-reconfigure --frontend noninteractive keyboard-configuration

Вот и все. Обратите внимание, что клавиатура не будет установлена ​​в chroot, но будет настроена для следующей перезагрузки.

Я протестировал описанный выше метод с debian 10, debian testing (11), debian SID, ubuntu 16.04, ubuntu 18.04, ubuntu 20.04, все они были установлены с помощью debootstrap.

вы можете увидеть список поддерживаемых опций (XKBLAYOUT, XKBVARIANT...) с:

less /usr/share/X11/xkb/rules/xorg.lst

dpkg-reconfigure будет использовать клавиатуру us по умолчанию, если в /etc/default/keyboard есть какая-либо ошибка, поэтому убедитесь, что вы указали только поддерживаемые параметры (например, ubuntu 16 не имеет варианта azerty для макета fr, поэтому, если вы поставите azerty, то dpkg-reconfigure вернется к стандартному нам клавиатуру!)

СОВЕТ: если вы пытаетесь подключиться к vnc (например, qemu vnc), то вам абсолютно необходимо использовать клиент tigervnc, чтобы клавиатура работала как нужно, все остальные клиенты vnc сломанный. Как установить раскладку клавиатуры с VNC-клиентом на KVM (libvirt)

Решение 2:

другое простое решение для ОС с systemd:

localectl set-keymap fr 
localectl set-x11-keymap fr

Примечание: это нельзя использовать внутри chroot, потому что для этого требуется активное dbus-подключение.

Решение 3:

используя setupcon

# let's create  multiple keyboard config
echo '
XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS=""

BACKSPACE="guess"
' > /etc/default/keyboard.ENbadr

echo '
XKBMODEL="pc105"
XKBLAYOUT="fr"
XKBVARIANT="azerty"
XKBOPTIONS=""

BACKSPACE="guess"
' > /etc/default/keyboard.FRbadr

#activate the lang you want with
setupcon FRbadr

,но это не работает внутри chroot.

2
ответ дан 21 January 2021 в 07:28

Я понимаю ваше разочарование по этому поводу. Вот как я справляюсь с этим в аналогичном контексте (бродячие положения), так что, надеюсь, день настал.

Ключ в том, чтобы использовать debconf-utils для описания конфигурации. Во-первых:

sudo apt-get install debconf-utils

Вы можете увидеть текущую конфигурацию с:

debconf-get-selections | grep keyboard-configuration

Работа со всеми этими настройками может быть немного утомительной, так что вы можете захотеть выполнить интерактивную dpkg-реконфигурацию клавиатуры на одной машине, как и в предложенном решении. Затем экспортируйте новые настройки командой выше в новый файл, скажем file.conf.

Перенесите файл на машины, которые нуждаются в настройке и:

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

Это действительно все.

BONUS: Ansible tasks

В случае, если вы используете Ansible, вот часть моей пьесы на этот счет:

- 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
4
ответ дан 3 December 2019 в 01:25

Оказалось, что в моем случае я не указал правильный тип для модулей debconf в Ansible. Если кто-то еще пытается сделать это с помощью Ansible, то на вашем «шаблоне» (той, которую вы используете, в первую очередь, для получения всех правильных настроек) установите debconf-utils и запустите debconf-get-selections | grep keyboard-config , затем запустите debconf-show keyboard-configuration . Это дает вам список вещей, которые были изменены (элементы со знаком * рядом с ними). Обратите внимание, что элементы в debconf-get-selections сообщают вам, к какому типу они относятся.

Для меня, чтобы установить их на English (UK) Мне потребовалась следующая задача ansible playbook :

- name: Установить раскладку клавиатуры debconf: имя: "конфигурация клавиатуры" вопрос: "keyboard-configuration / {{item.key}}" значение: "{{item.value}}" vtype: "{{item.type | по умолчанию ('строка')}}" with_items: - {key: "altgr", значение: "По умолчанию для раскладки клавиатуры", vtype: "select"} - {key: "compose", value: "No compose key", vtype: "select"} - {ключ: "ctrl_alt_bksp", значение: "false", тип: "boolean"} - {ключ: "вариант", значение: "английский (Великобритания)", vtype: "select"} - {ключ: "layout", значение: "English (UK)", vtype: "select"} - {key: "model", value: "Generic 105-key PC (intl.)", vtype: "select"}

Вот две примерные строки из команд debconf- *, на которые я ссылался выше:

  • (debconf-get-selections) keyboard-configuration, keyboard-configuration / layout select English (UK)
  • (debconf-show ) * клавиатура-конфигурация / раскладка: английский (Великобритания)
0
ответ дан 3 December 2019 в 01:25

Я использовал ответы здесь, чтобы запустить его с солончаком:

Я использовал шаблон jinja для конфигурации (я удалил некоторые записи, чтобы сделать его короче):

{% if grains["domain"] == "mydomain.de" %}
{% load_yaml as keyboard_data %}
  "keyboard-configuration/layoutcode":
    "type": "string"
    "value": "de"
  "keyboard-configuration/layout":
    "type": "select"
    "value": "German"
{% endload %}
{% else %}
{% load_yaml as keyboard_data %}
  "keyboard-configuration/layoutcode":
    "type": "string"
    "value": "us"
  "keyboard-configuration/layout":
    "type": "select"
    "value": "English (US)"
{% endload %}
{% endif %}

и теперь мое состояние выглядит следующим образом:

keyboard_conf:
  debconf.set:
  - name: "keyboard-configuration"
  - data: {{ keyboard_data }}
0
ответ дан 4 February 2020 в 07:43

Теги

Похожие вопросы