
Atualmente estou trabalhando em um script de pacote onde preciso fornecer opções personalizadas e também desejo fornecer uma descrição estendida com base nessas escolhas.
Já modifiquei com sucesso um instalador Linux antes com uma pré-configuração e scripts personalizados usando Debconf para fazer perguntas, então estou familiarizado com como ele funciona.
O que estou travando é alterar a descrição no modelo. De acordo com todos os manuais do Debconf que procurei online, tanto as opções quanto a descrição podem ser personalizadas, embora as informações sejam breves. Existem muitos exemplos de personalização de Choices db_subst
e isso funciona bem.
O que estou travando é personalizar o texto da descrição e, neste caso, a descrição estendida. Já tentei usar db_subst
mas sem resultados satisfatórios. O problema é que preciso estender a descrição com mais linhas de texto. Mas descobri que o Debconf usa apenas uma linha. Se eu colocar marcadores de nova linha como "\n" no texto, ele os interpretará literalmente, o que parece confuso.
O Debconf pode ser programado para personalizar uma Descrição com algumas linhas extras de texto? Ou preciso desistir e apenas criar manualmente um arquivo de modelo personalizado para esta pergunta? Vejo que posso ter ido além dos recursos que o Debconf oferece, mas para mim não pareceu tão complicado.
Aqui está meu script e modelo de exemplo para que você possa ver como e o que fiz para testá-lo.
#!/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}
Responder1
Basta adicionar novas linhas reais à sua variável, assim:
extended="One
Two
Three
Four"
Isso exigiu algumas experiências da minha parte. O Debiandebconf-develmanual diz
Observe que: - Como na descrição de um pacote debian, um ponto em sua própria linha inicia um novo parágrafo. - A maior parte do texto é quebrada por palavras, mas o texto com recuo duplo é deixado de lado, então você pode usá-lo para listas de itens, como esta lista.
O que aparentemente não é verdade para a substituição. Por exemplo, se você colocar um ponto de espaço diretamente no modelo, ele imprimirá uma linha em branco, mas coloque o mesmo em uma chave substituta e imprimirá o ponto. (-‸ლ)