
В настоящее время я работаю над скриптом пакета, в котором мне нужно предоставить индивидуальные варианты выбора, а также хотелось бы предоставить расширенное описание на основе этих вариантов выбора.
Раньше я успешно модифицировал установщик Linux с помощью preseed и пользовательских скриптов, используя Debconf для задания вопросов, поэтому я знаком с тем, как это работает.
Я застрял на изменении описания в шаблоне. Согласно всем руководствам Debconf, которые я искал в сети, и варианты, и описание можно настраивать, хотя информация краткая. Есть много примеров настройки вариантов, db_subst
и это отлично работает.
Я застрял на настройке текста описания, а в данном случае расширенного описания. Я пробовал использовать, db_subst
но без удовлетворительных результатов. Проблема в том, что мне нужно расширить описание большим количеством строк текста. Но я обнаружил, что Debconf использует только одну строку. Если я помещаю в текст маркеры новой строки, такие как "\n", он интерпретирует их буквально, что выглядит запутанно.
Можно ли запрограммировать Debconf на настройку описания с помощью нескольких дополнительных строк текста? Или мне нужно сдаться и просто создать настраиваемый файл шаблона вручную для этого одного вопроса? Я вижу, что я, возможно, вышел за рамки возможностей, предоставляемых Debconf, но мне это не показалось таким уж сложным.
Вот мой пример скрипта и шаблона, чтобы вы могли увидеть, как и что я сделал для его тестирования.
#!/bin/sh
# testing.sh
# Debconf testing script.
# Testing dynamic changing of choices and description in question.
export DEBCONF_DEBUG=developer
#export DEBIAN_FRONTEND=gnome
. /usr/share/debconf/confmodule
db_x_loadtemplatefile ./testing.template testing
db_settitle testing/title
list="1, 2, 3, 4"
extended="One\n Two\n Three\n Four\n"
# Use real newlines in text
#extended=`echo "${extended}"`
db_subst testing/list list "${list}"
db_subst testing/list extended "${extended}"
db_reset testing/list
db_input critical testing/list
db_go
db_get testing/list
db_stop
exit 0
# testing.template
Template: testing/title
Type: title
Description: Testing title
Template: testing/list
Type: select
Choices: ${list}
Description: Please select option below.
Extended description.
.
${extended}
решение1
Просто добавьте фактические переносы строк в вашу переменную, например так:
extended="One
Two
Three
Four"
Это потребовало некоторых экспериментов с моей стороны. Debiandebconf-develв руководстве говорится
Обратите внимание, что: - Как и в описании пакета Debian, точка на отдельной строке начинает новый абзац. - Большая часть текста переносится по словам, но текст с двойным отступом остается нетронутым, поэтому его можно использовать для списков элементов, как в этом списке.
Что, по-видимому, не относится к замене. Например, если вы поместите пробел-точку в шаблон напрямую, он напечатает пустую строку, но если поместить то же самое в ключ subst, он напечатает точку. (-‸ლ)