Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Эмуляция ввода с клавиатуры при установке пакета  (Прочитано 929 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн mmx-dev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Камрады, доброго дня!
Я только осваиваю linux и мне понадобилась автоматизация установки пакета libwebkitgtk-3.0-0.

Если использовать sudo apt install -y libwebkitgtk-3.0-0 в скрипте, то это не решает задачу, т.к. в определенный момент запрашивается ввод значений с клавиатуры (выбор страны, раскладки клавиатуры и т.д).
Выяснил, что можно использовать debconf-set-selections для подстановки ввода с клавиатуры.

Проблема в том, что libwebkitgtk-3.0-0 пакет достаточно объемный и устанавливается много всего. Подскажите пож. какой правильный синтаксис использования debconf-set-selections

Эксперименты с примерами, которые нашел в интернете - не вариант (установка пакета длится минут 20, а запрос ввода ответов с клавиатуры начинается с 15й минуты ...)
« Последнее редактирование: 31 Августа 2020, 16:20:05 от mmx-dev »

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3032
    • Просмотр профиля
Специально для этой цели существует утилита expect, но для её использования, т.е. написания скрипта,
надо заранее знать все вопросы, которые будут заданы и желаемые варианты ответов.
Пётр.

Оффлайн mmx-dev

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Я разобрался...

То что сейчас расскажу относится и для псевдоэмуляции считывания введенных значений клавиатуры и при установке других пакетов
(при обычной установке с помощью менеджера пакетов я вводил определенные цифровые значения, выбирая их из списка предложенных, а для скрипта автоматизации это не подойдет).

Приведу рабочий кусок скрипта (синтаксис Dockerfile) и далее поясню:
...
## переменные окружения для apt отключающие интерактивный режим
ENV DEBIAN_FRONTEND=noninteractive
ENV DEBCONF_NONINTERACTIVE_SEEN=true

RUN echo "keyboard-configuration keyboard-configuration/variant select Russian" > /tmp/pressed.txt; \
    echo "keyboard-configuration keyboard-configuration/layout select Russian" >> /tmp/pressed.txt; \
    echo "keyboard-configuration keyboard-configuration/toggle select Ctrl+Shift" >> /tmp/pressed.txt; \ 
    debconf-set-selections /tmp/pressed.txt && apt install -y libwebkitgtk-3.0-0
...

1. Для того чтобы понять, что нужно "скормить" debconf-set-selections - устанавливаем утилиты debconf-utils
2. Далее в обычном режиме устанавливаем нужный нам пакет apt install -y libwebkitgtk-3.0-0, отвечая на вопросы при установке.
3. Т.к. ранее мы установили debconf-utils, то нам доступна утилита debconf-get-selections, запустив которую мы получим полный список вопросов и ответов.

Вопрос будет начинаться с символа #,
а ответ будет в том формате, в котором мы его можем передать в скрипте: keyboard-configuration keyboard-configuration/variant select Russian
 
 где
  • keyboard-configuration - это имя пакета, которому принадлежит вопрос,
  • keyboard-configuration/variant - это имя вопроса,
  • select - это тип вопроса,
  • Russian - это значение используемое для ответа на вопрос.

Естественно, при первой установке всего пакета, я запомнил/скопировал вопросы (все они касались клавиатуры), поэтому debconf-get-selections | grep keyboard
и уже в ограниченном списке искал вопросы/ответы

4. В самом скрипте, я помещаю нужные мне ответы в файл /tmp/pressed.txt, который отдаю уже другой утилите debconf-set-selections перед запуском менеджера пакетов apt

 

Страница сгенерирована за 0.05 секунд. Запросов: 25.