Я пишу двоичный пакет debian для моего приложения (foo). Скрипт postinst (post install) хочет задать пользователю несколько вопросов, а также получить ответы. Я пытаюсь добиться этого с помощью debconf. Но я не могу видеть экран пользовательского интерфейса, вызывающий у пользователя вопросы. Я сомневаюсь, что мой конфиг и шаблоны даже вызваны dpkg. Я использую все инструкции по ссылке debconf tutorial Может кто-нибудь объяснить мне следующие вопросы:
Фрагмент контрольного файла (только соответствующие поля, которые я публикую)
Depends: debconf (>= 0.2.17)
Фрагмент файла конфигурации
#!/bin/sh
set -e
#echo "Config being called"
# Source debconf library.
. /usr/share/debconf/confmodule
# Do you like debian?
db_input medium foo/like_debian || true
db_go
# Check their answer.
db_get foo/like_debian
if [ "$RET" = "false" ]; then
# Poor misguided one..
db_input high foo/why_debian_is_great || true
db_go
fi
Фрагмент файла шаблона
Template: foo/like_debian
Type: boolean
Description: Do you like Debian?
We'd like to know if you like the Debian GNU/Linux system.
Template: foo/why_debian_is_great
Type: note
Description: Poor misguided one. Why are you installing this package?
Debian is great. As you continue using Debian, we hope you will
discover the error in your ways.
Фрагмент preinst:
#!/bin/sh
set -e
#echo "Stage preinst" $1
exit 0
Фрагмент postinst:
[ 113]Фрагмент прерм:
#!/bin/sh
set -e
#echo "Stage prerm" $1
exit 0
Фрагмент пострм:
#!/bin/sh
set -e
#echo "postrm" $1
exit 0
Спасибо, Сандип
Я решил проблему, набрав
echo PURGE | debconf-communicate <packagename>
Эта команда очищает все выборки в базе данных debconf
. Я понял, что когда выборки присутствуют в базе данных debconf
, установщик пакета никогда не выполняет команды ввода в файле config
. Поэтому я поместил команду purge
в файл postrm
.
Я сделал сообщение в блоге о создании собственных пакетов Debian по адресу:
http://www.leaseweblabs.com/2013/06/creating-custom-debian-packages/
Чтобы избавить вас от чтения, структура каталогов должна быть такой:
Убедитесь, что права доступа и местоположения такие, и это должно работать :)
У меня была та же проблема, которую мой вопрос только задали с dpkg-reconfigure
и не установка dpkg -i
. Мое решение состояло в том, чтобы добавить
db_fset package-name/question_name seen false
прежде
db_input high package-name/question_name || true
db_go