Как настроить и варианты выбора, и описание вопроса debconf?

В настоящее время я работаю над сценарием пакета, в котором мне нужно предоставить индивидуальные варианты выбора, а также я хочу предоставить расширенное описание, основанное на этих вариантах.

Я раньше успешно модифицировал установщик Linux с помощью preseed и пользовательских скриптов, используя Debconf, чтобы задавать вопросы, поэтому я знаком с тем, как это работает.

Я застрял в изменении описания в шаблоне. Судя по всем руководствам Debconf, которые я искал в Интернете, варианты и описание можно настроить, хотя информация краткая. Существует множество примеров настройки Choices с помощью 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}
0
задан 4 April 2020 в 07:25

1 ответ

Просто добавьте новые строки в вашу переменную, например:

extended="One
Two
Three
Four"

Это потребовало от меня некоторых экспериментов. В руководстве Debian debconf-devel сказано

Обратите внимание: - Как и в описании пакета debian, точка в отдельной строке выделяет новый абзац. - Большая часть текста переносится по словам, но текст с двойным отступом остается отдельно, поэтому вы можете использовать его для списков элементов, таких как этот список.

Что, по-видимому, неверно для замены. Например, если вы поместите точку в шаблоне напрямую, он напечатает пустую строку, но поместит то же самое в ключ подстановки и напечатает точку. (-‸ლ)

1
ответ дан 8 April 2020 в 17:12

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

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