Как автоматизировать настройку пакета «клавиатура-конфигурация»?


15

Я пишу сценарий для установки сервера Ubuntu 16.04 в тюрьму chroot, используя debootstrap (на компьютере с сервером Ubuntu 16.04).

Во время настройки keyboard-configurationпакета запрашивается тип клавиатуры:

Setting up keyboard-configuration (1.108ubuntu15) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
Configuring keyboard-configuration
----------------------------------

The layout of keyboards varies per country, with some countries having multiple
common layouts. Please select the country of origin for the keyboard of this
computer.

  1. Afghani                                     48. Irish
  2. Albanian                                    49. Italian
...    
  28. English (UK)                               75. Slovak
  29. English (US)                               76. Slovenian
...
  45. Icelandic                                  92. Vietnamese
  46. Indian                                     93. Wolof
  47. Iraqi
Country of origin for the keyboard: 

Я хочу автоматизировать это, чтобы он не спрашивал, а просто продолжал установку.

Как я могу это сделать?


Ответы:


15

Из аналогичного вопроса StackOverflow:

Если переменная ENV DEBIAN_FRONTEND=noninteractiveустановлена ​​во время работы apt-get install keyboard-configuration, она не будет запрашивать никакого взаимодействия. Так что вы можете просто запустить:

DEBIAN_FRONTEND=noninteractive apt-get install keyboard-configuration

2

Вы могли бы использовать xdotool. При запуске скрипт ставится & sleep <however long it takes to get to that point> && xdotool type <number you want to put> && xdotool key Return.

Я не проверял это, но это должно работать.

Ответ 2:

Запустите команду, но с перенаправлением вывода в файл ( > testfile).

Откройте другой терминал и запустите

while true
do 
    if [ "$(tac testfile | grep -m 1 .)" = "Country of origin for the keyboard" ]
    then 
    xdotool type <number you want to put> && xdotool key Return && break
    fi
done  

Затем нажмите обратно на первый терминал.

Ответ 3:

Я думаю, что все, что вам нужно сделать, это поместить нужное число в файл testfileи запустить команду с < testfileдобавлением.


Спасибо, интересная идея, но она будет либо тратить много времени, либо время от времени зависать, если установка занимает больше времени, чем ожидалось, в зависимости от продолжительности сна.
увядшая пчела

Чтение справочной страницы по xdotool - похоже, это вещь для X windows. Я пытаюсь это сделать в среде сервера Ubuntu. Я обновлю свой вопрос.
увядшая пчела

2

Это просто автоматизировать, вам просто нужно установить правильную конфигурацию debconf для этого пакета.

Первая установка debconf-utils:

sudo apt install debconf-utils

Если вы уже настроили пакет, вы можете прочитать конфигурацию debconf с помощью:

debconf-get-selections | grep keyboard-configuration

Если вы не настроили пакет или хотели бы изменить свой выбор, вы можете сделать это с помощью:

dpkg-reconfigure keyboard-configuration

Экспортируйте ваши выборы в файл

debconf-get-selections | grep keyboard-configuration > selections.conf

Скопируйте selections.confна целевой компьютер и установите параметры:

debconf-set-selections < selections.conf

Когда вы устанавливаете или переконфигурируете пакет, ваш выбор теперь будет выбран автоматически.

dpkg-reconfigure keyboard-configuration -f noninteractive

1

"debootstrap - это на самом деле просто скрипт оболочки" - с https://wiki.debian.org/Debootstrap

Это означает, что вы можете прочитать скрипт, чтобы увидеть, есть ли способы передать информацию через переменную окружения, предоставить аргумент при вызове deboostrap или создать собственную модифицированную версию для вашего конкретного приложения.


Этот пакет устанавливается как часть apt-get install ....прогона после начальной начальной загрузки.
Fadedbee

Итак, вы говорите, что после apt-get install deboostrapустановки парадигма не позволяет изменять переменные среды или запускать настраиваемый сценарий? Ладно.
БенджаминБринк

Может быть, это помогает. Эта ссылка показывает пример того, как настроить файл «preeseed» для предварительного ответа на запросы в
BenjaminBrink
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.