
Ich arbeite derzeit an einem Paketskript, bei dem ich benutzerdefinierte Auswahlmöglichkeiten bereitstellen muss und basierend auf diesen Auswahlmöglichkeiten auch eine ausführlichere Beschreibung bereitstellen möchte.
Ich habe bereits zuvor erfolgreich ein Linux-Installationsprogramm mit einem Preseed und benutzerdefinierten Skripts geändert und dabei Debconf zum Stellen von Fragen verwendet. Daher weiß ich, wie es funktioniert.
Ich komme nicht weiter, wenn es darum geht, die Beschreibung in der Vorlage zu ändern. Laut allen Debconf-Handbüchern, die ich online nachgeschlagen habe, können sowohl Auswahlmöglichkeiten als auch Beschreibungen angepasst werden, obwohl die Informationen kurz sind. Es gibt viele Beispiele zum Anpassen von Auswahlmöglichkeiten, db_subst
und das funktioniert gut.
Ich komme nicht weiter, wenn es darum geht, den Beschreibungstext und in diesem Fall die erweiterte Beschreibung anzupassen. Ich habe versucht, dies zu verwenden, db_subst
aber ohne zufriedenstellende Ergebnisse. Das Problem ist, dass ich die Beschreibung um weitere Textzeilen erweitern muss. Aber ich habe festgestellt, dass Debconf nur eine Zeile verwendet. Wenn ich Zeilenumbruchmarkierungen wie „\n“ in den Text einfüge, interpretiert es sie wörtlich, was chaotisch aussieht.
Kann Debconf so programmiert werden, dass eine Beschreibung mit ein paar zusätzlichen Textzeilen angepasst wird? Oder muss ich aufgeben und für diese eine Frage einfach eine angepasste Vorlagendatei von Hand erstellen? Ich sehe, dass ich möglicherweise über die Funktionen von Debconf hinausgegangen bin, aber mir schien es nicht so kompliziert.
Hier ist mein Beispielskript und meine Vorlage, damit Sie sehen können, wie und was ich zum Testen getan habe.
#!/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}
Antwort1
Fügen Sie Ihrer Variable einfach echte Zeilenumbrüche hinzu, etwa so:
extended="One
Two
Three
Four"
Dies erforderte einiges Experimentieren meinerseits. Das DebianDebconf-EntwicklungHandbuch sagt
Beachten Sie: – Wie in einer Debian-Paketbeschreibung markiert ein Punkt in einer eigenen Zeile einen neuen Absatz. – Der meiste Text wird umbrochen, doppelt eingerückter Text bleibt jedoch unverändert, sodass Sie ihn für Elementlisten wie diese Liste verwenden können.
Was bei Substitutionen offenbar nicht zutrifft. Wenn Sie beispielsweise direkt in die Vorlage ein Leerzeichen mit Punkt einfügen, wird eine leere Zeile gedruckt. Wenn Sie dasselbe jedoch in einen Subst-Schlüssel eingeben, wird der Punkt gedruckt. (-‸ლ)