CONFMODULE(3) | Library Functions Manual | CONFMODULE(3) |
confmodule - связь с интерфейсом системы настройки Debian.
#!/bin/sh -e
. /usr/share/debconf/confmodule
db_version 2.0
db_capb 'backup'
CAPB=$RET
db_input 'foo/bar' || true
db_go || true
Это библиотека функций на языке оболочки командной строки, которая позволяет легко взаимодействовать с системой управления настройкой Debian. Она может взаимодействовать с интерфейсной программой через debconf протокол. Конструкция библиотеки такова, что каждая команда в протоколе представлена одной функцией. Имя функции совпадает с названием команды, если не считать префикс «db_» и записи строчными буквами. При вызове функции передаются любые параметры, те же что и у команды. Любой текстовый возвращаемый интерфейсной программой код будет возвращён в переменной $RET, а числовой возвращаемый интерфейсной программой код будет возвращён как код завершения (и эти возвращаемые коды должны быть сохранены или проигнорированы).
После
того, как
библиотека
загружена,
все
последующие
выходные
данные
будут
перенаправлены
в
стандартный
поток
ошибок, а не
в
стандартный
выходной
поток. В
общем, это
хорошо, так
как текст
посылаемый
в
стандартный
вывод,
воспринимается
интерфейсной
программой
как
команды.
Если вы
хотите
послать
команду
интерфейсной
программе
напрямую,
то нужно
выдать её в
файловый
дескриптор
3, например:
echo GET foo/bar >&3
Библиотека проверяет, что запущена именно интерфейсная программа, просматривая переменную окружения DEBIAN_HAS_FRONTEND. Если она установлена, то предполагается, что запущена интерфейсная программа. Если нет, то библиотека запускает одну из интерфейсных программ и выполняет копию сценария, который загрузил библиотеку, подключая его к интерфейсной программе. Это означает, что если источник библиотека, то вы должны выполнить её в сценарии как можно раньше, так как всё до загрузки библиотеки может выполниться ещё раз.
debconf-devel(7), dpkg-preconfigure(8), dpkg-reconfigure(8), debconf_specification из пакета debian-policy
Joey Hess <joeyh@debian.org>