Я хотел бы настроить пакет ubuntu через dpkg-переконфигурировать со всеми значениями, предоставленными в неинтерактивном режиме (в скрипте).
На самом деле мой случай - конфигурация 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
Однако по какой-то причине это не сработало и потребовало предоставить значения.
Любые идеи, как передать необходимые значения для сценария?
Пакеты Debian используют debconf для сбора настроек времени установки. Debconf поддерживает несколько внешних интерфейсов, чтобы запрашивать у пользователя значения.
-f
Вариантdpkg-reconfigure
выбирает , какой Debconf интерфейс для использования.Веб-
readline
интерфейс предназначен для интерактивного использования. Не используйте это в автоматическом сценарии.Если значения по умолчанию в порядке, просто используйте
noninteractive
внешний интерфейс.Если вы хотите указать разные значения, у вас есть два варианта. Вы можете придерживаться
noninteractive
внешнего интерфейса и задавать базу данных debconf . Самый простой способ сделать это - установить пакет на одну машину и настроить его в интерактивном режиме, а затем извлечь соответствующие части/var/cache/debconf/config.dat
и передать этот файл в debconf:Другой метод заключается в использовании
editor
внешнего интерфейса и установке переменной средыVISUAL
(илиEDITOR
, ноVISUAL
имеет приоритет надEDITOR
ней, если она задана) программы, которая принимает в качестве аргумента файл, содержащий текущие настройки, и перезаписывает этот файл нужными настройками.источник
/var/cache/debconf/config.dat
себя. Вы можете использоватьdebconf-get-selections
изdebconf-utils
пакета. Смотрите это, например.dpkg-reconfigure
, который, я думаю, ОП хочет автоматизировать, потому что он будет делать это часто.debconf-get-selections
скорее всего, здесь будет полезно. Если Питер хочет делать это часто с разными значениями, он должен генерироватьconfig.dat
динамически (это простой формат). Это проще чемexpect
.expect
это путь отчаяния. Например, он выйдет из строя, если в новой версии пакета появится новый вопрос (или вам понадобится более сложный сценарий).Используйте
debconf-set-selections
команду для вставки новых значений в базу данных debconf (/var/cache/debconf/config.dat
).Ответ Илии был неясен для меня, поэтому я объясню это шаг за шагом.
Первое, что нужно сделать, это установить пакет в интерактивном режиме и получить выбранные варианты (измените
firebird
имя пакета):или:
Затем предварительно заполните базу данных debconf ответами
debconf-set-selections
, например:где синтаксис:
Вот еще один пример для
ttf-mscorefonts-installer
пакета:Примечание. Выбор ввода может быть либо из стандартного ввода, либо из файла.
Проверьте:
man debconf-set-selections
для получения дополнительной информации.Альтернативный способ - использовать Kickstart .
источник
Я около часа копался, пытаясь сжать решение для этого до однострочного, и я наконец нашел его: debconf-set-selections
Это заставит debconf использовать значения по умолчанию и не будет вас беспокоить. Вы также можете установить настройки по умолчанию для любого пакета Debian, смотрите man-страницу для получения дополнительной информации.
источник
sudo dpkg-reconfigure debconf -f noninteractive
илиexport DEBIAN_FRONTEND=noninteractive
?Я пытался выполнить реконфигурацию параметров LDAP с помощью сценария (пакет ldap-auth-config) с помощью метода debconf-get-selections / set-selections, упомянутого выше, только чтобы обнаружить, что этот пакет игнорирует настройки в debconf после начальной установки. Вы можете использовать debconf для предварительного заполнения перед установкой, но после установки ldap-auth-config предпочитает перезаписывать ваши настройки debconf тем, что установлено в системных конфигурационных файлах, которыми он управляет. Пакет pam-auth-config имеет такое же поведение.
Механизм EDITOR / VISUAL также трудно использовать в этом случае, потому что ldap-auth-config вызывает его несколько раз для разных наборов вопросов. Это может быть легко обработано с помощью ожидаемого сценария или путем непосредственного изменения системных конфигурационных файлов. Так что не всегда легко избежать отступления, чтобы ожидать!
источник