Intereting Posts
Как awk разрезать определенные поля и добавить к концу каждой строки? Как изменить стандартный каталог окон из tmux Может ли массив bash использоваться вместо eval set – «$ params»? Почему команда «w» сообщает о некорректном количестве зарегистрированных пользователей? Крепление раздела Luks после снятия с fstab Как удалить сообщения, заданные диапазоном номеров? rkhunter дает мне предупреждение для «/ usr / bin / lwp-request» – что мне делать? Динамический zsh автозаполнение для пользовательских команд Мне нужна помощь с помощью cronjob, чтобы следить за безудержными процессами и убивать их Использование процессора Oracle VM на 100%, даже если назначено только 3 из 4 ядер Удаленное резервное копирование локального сервера с использованием Rsnapshot Как добавить группу "sudo" Почему эта команда работает для вывода сценария регистрации? Как установить xfce> = 4.10 из репозитория backports в debian Почему Linux помечает FAT как «грязную» просто из-за ее установки?

ввод входных значений в dpkg-reconfigure в неинтерактивном режиме

Я хотел бы настроить пакет ubuntu через dpkg-reconfigure со всеми значениями, указанными в неинтерактивном режиме (в скрипте).

На самом деле, мой случай – это confiiguration firebird ( http://www.firebirdsql.org/manual/ubusetup.html ), что при использовании команды:

sudo dpkg-reconfigure firebird2.5-superclassic -freadline 

спрашивает у меня 2 значения, где ответы будут «Y» и «newpwd».

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

 sudo dpkg-reconfigure firebird2.5-superclassic -freadline * Firebird 2.5 superclassic server not running Configuring firebird2.5-superclassic ------------------------------------ Accept if you want Firebird server to start automatically. If you only need the Firebird client and there are no databases that will be served by this host, decline. Enable Firebird server? Y Password for firebird 2.5 ------------------------- Firebird has a special user named SYSDBA, which is the user that has access to all databases. SYSDBA can also create new databases and users. Because of this, it is necessary to secure SYSDBA with a password. The password is stored in /etc/firebird/2.5/SYSDBA.password (readable only by root). You may modify it there (don't forget to update the security database too, using the gsec utility), or you may use dpkg-reconfigure to update both. To keep your existing password, leave this blank. Password for SYSDBA: * Starting Firebird 2.5 superclassic server... ...done. * Firebird 2.5 superclassic server already running 

Я пробовал here strings через скрипт bash следующим образом:

 sudo dpkg-reconfigure firebird2.5-superclassic -f readline << EOF Y newpwd EOF 

Однако по какой-то причине это не помогло, и он попросил предоставить значения.

Любые идеи о том, как передать требуемые значения скрипту? Благодарю.

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

ОБНОВИТЬ:

[Петр Буткович] Я считаю, указывая на то, expect я expect что в правильном направлении, этот сценарий, который я закончил:

 #!/usr/bin/expect spawn dpkg-reconfigure firebird2.5-superclassic -freadline expect "Enable Firebird server?" send "Y\r" expect "Password for SYSDBA:" send "newpwd\r" # done expect eof 

Пакеты Debian используют debconf для сбора настроек времени установки. Debconf поддерживает несколько интерфейсов, чтобы запрашивать у пользователя значения. Параметр -f для dpkg-reconfigure выбирает, какой интерфейс debconf использовать.

Интерфейс readline предназначен для интерактивного использования. Не используйте его в автоматическом сценарии.

Если значения по умолчанию прекрасны, просто используйте noninteractive интерфейс.

Если вы хотите предоставить разные значения, у вас есть два варианта. Вы можете придерживаться noninteractive интерфейса и задавать базу данных debconf . Самый простой способ сделать это – установить пакет на один компьютер и настроить его в интерактивном режиме, а затем извлечь соответствующие части из /var/cache/debconf/config.dat и предоставить этот файл для debconf:

 DEBCONF_DB_OVERRIDE='File {/path/to/config.dat}' dpkg-reconfigure -fnoninteractive firebird2.5-superclassic 

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

Используйте команду debconf-set-selections для вставки новых значений в базу данных debconf ( /var/cache/debconf/config.dat ).


Ответ Эли не был ясен для меня, поэтому я объясню это шаг за шагом.

Первое, что нужно сделать, – это установить пакет в интерактивном режиме и получить выбранные параметры (изменить firebird на имя вашего пакета):

 sudo debconf-get-selections | grep ^firebird 

или:

 grep -C2 firebird /var/cache/debconf/config.dat 

Затем предварительно создайте базу данных debconf с ответами с помощью debconf-set-selections , например:

 echo firebird2.5-superclassic shared/firebird/enabled boolean true | sudo debconf-set-selections -v echo firebird2.5-superclassic shared/firebird/sysdba_password/new_password password foo | sudo debconf-set-selections -v 

где синтаксис:

 echo foo-owner-package-name foo-template-name value-type value | debconf-set-selections 

Вот еще один пример для пакета ttf-mscorefonts-installer :

 echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections 

Примечание. Выбор входа может быть либо со стандартного ввода, либо с файла.

Проверьте: man debconf-set-selections для получения дополнительной информации.


Альтернативный способ – использовать Kickstart .

Я просидел около часа, пытаясь сконденсировать решение для этого на один лайнер, и я, наконец, нашел его: debconf-set-selection

 echo "debconf debconf/frontend select noninteractive" | sudo debconf-set-selections 

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

Я пытаюсь выполнить сценарий реконфигурации настроек LDAP (пакет ldap-auth-config) с использованием метода debconf-get-selections / set-selections, упомянутого выше, только чтобы найти, что этот пакет игнорирует настройки в debconf после первоначальной установки. Вы можете использовать debconf для предварительного семени перед установкой, но после установки ldap-auth-config предпочитает перезаписывать ваши настройки debconf с тем, что установлено в файлах конфигурации системы, которыми он управляет. Пакет pam-auth-config имеет такое же поведение.

Механизм EDITOR / VISUAL также трудно использовать в этом случае, потому что ldap-auth-config вызывает его несколько раз для разных наборов вопросов. Его легче обрабатывать с помощью сценария ожидания или путем прямого изменения файлов конфигурации системы. Таким образом, не всегда легко отказаться от ожиданий!