Проверьте свою архитектуру с 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
Итак .. ... надеюсь, что когда-нибудь у кого-то еще будет правильный ответ, но вот что я в итоге сделал, то же самое, что делал много лет назад без 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
Наконец-то вот решение, и оно такое простое, но я потерял два дня, чтобы найти его :(
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)
другое простое решение для ОС с systemd:
localectl set-keymap fr
localectl set-x11-keymap fr
Примечание: это нельзя использовать внутри chroot, потому что для этого требуется активное dbus-подключение.
используя 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.
Я понимаю ваше разочарование по этому поводу. Вот как я справляюсь с этим в аналогичном контексте (бродячие положения), так что, надеюсь, день настал.
Ключ в том, чтобы использовать 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
Оказалось, что в моем случае я не указал правильный тип для модулей 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- *, на которые я ссылался выше:
keyboard-configuration, keyboard-configuration / layout select English (UK)
* клавиатура-конфигурация / раскладка: английский (Великобритания)
Я использовал ответы здесь, чтобы запустить его с солончаком:
Я использовал шаблон 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 }}