Где я должен разместить шаблоны и конфигурационный файл в иерархии Debian

Я пишу двоичный пакет debian для моего приложения (foo). Скрипт postinst (post install) хочет задать пользователю несколько вопросов, а также получить ответы. Я пытаюсь добиться этого с помощью debconf. Но я не могу видеть экран пользовательского интерфейса, вызывающий у пользователя вопросы. Я сомневаюсь, что мой конфиг и шаблоны даже вызваны dpkg. Я использую все инструкции по ссылке debconf tutorial Может кто-нибудь объяснить мне следующие вопросы:

  1. Я размещаю скрипт «config» и файл «templates» внутри / debian / tmp / DEBIAN /. Так это правильное расположение в иерархии Debian? Верны ли имена?
  2. Верны ли мои приведенные ниже сценарии?

Фрагмент контрольного файла (только соответствующие поля, которые я публикую)

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

Спасибо, Сандип

1
задан 17 July 2013 в 16:58

3 ответа

Я решил проблему, набрав

echo PURGE | debconf-communicate <packagename>

Эта команда очищает все выборки в базе данных debconf. Я понял, что когда выборки присутствуют в базе данных debconf, установщик пакета никогда не выполняет команды ввода в файле config. Поэтому я поместил команду purge в файл postrm.

0
ответ дан 17 July 2013 в 16:58

Я сделал сообщение в блоге о создании собственных пакетов Debian по адресу:

http://www.leaseweblabs.com/2013/06/creating-custom-debian-packages/

Чтобы избавить вас от чтения, структура каталогов должна быть такой:

  • DEBIAN
    • control (обязательно)
    • шаблоны (необязательно) )
    • preinst (необязательно, chmod 0755)
    • postinst (необязательно, chmod 0755)
    • prerm (необязательно, chmod 0755)
    • postrm (необязательно, chmod 0755)
  • … (файлы, которые будут установлены в указанном месте)

Убедитесь, что права доступа и местоположения такие, и это должно работать :)

0
ответ дан 17 July 2013 в 16:58

У меня была та же проблема, которую мой вопрос только задали с dpkg-reconfigure и не установка dpkg -i. Мое решение состояло в том, чтобы добавить

db_fset package-name/question_name seen false

прежде

db_input high package-name/question_name || true
db_go
0
ответ дан 11 October 2019 в 10:15

Другие вопросы по тегам:

Похожие вопросы: