staging.inyokaproject.org

debconf Dialog wird trotz "critical" nicht angezeigt wenn mittels GUI installiert wird?

Status: Gelöst | Ubuntu-Version: Ubuntu 18.04 (Bionic Beaver)
Antworten |

Acer54

Avatar von Acer54

Anmeldungsdatum:
6. Juli 2011

Beiträge: Zähle...

Hallo zusammen,

vorweg, bin ich leider absoluter Anfänger was die Paketierung angeht. Ich versuche im Moment ein kleines Python-Script von mir einfach "installierbar" zu machen... gut so klein ist das Python-Script nun doch nicht mehr 🙄 der Installationsvorgang ist momentan in einem eigenen Wiki beschrieben... daher wollte ich das Ganze möglichst automatisieren. Ich habe eigentlich mit einem "normalen" shell-script gerechnet, das auch schon einigermaßen funktioniert, wollte nun jedoch den Schritt "deb-Paket" gehen, um den Installationsvorgang etwas nativer zu machen und die Möglichkeit zu schaffen das Ganze über die Paketverwaltung auch wieder löschen zu können.

Ich habe mir schon einmal erlesen, dass Benutzereingaben (von denen ich einige brauche) über "debconf" abgefragt werden sollen/können (?) Ich habe mir also ein minimal-Beispiel gebastelt welches sich auch bauen lässt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
matthias@matthias-tuxedo:~/$ tree -a -L 3
.
├── test-0.0.1
│   └── DEBIAN
│       ├── config
│       ├── control
│       ├── postinst
│       ├── postrm
│       └── templates
└── test-0.0.1.deb

matthias@matthias-tuxedo:~/webradio_debriate/test-0.0.1/DEBIAN$ cat config 
#!/bin/sh
 
# Exit on error
set -e

#if xset q >/dev/null 2>&1; then
#    export DEBIAN_FRONTEND=gnome
#fi #funktioniert leider auch nicht

# Source debconf library.
. /usr/share/debconf/confmodule

db_fset test/question1 seen false
db_clear
db_purge

echo "Ask:" 
# Ask questions
db_input critical test/question1 || true
 
# Show interface
db_go || true

matthias@matthias-tuxedo:~/test-0.0.1/DEBIAN$ cat control 
Package: test
Version: 0.0.1
Maintainer: My Contact
Homepage: https://my-darling-is-a-linux-user.org
Architecture: all
Priority: optional
Depends: debconf
Description: Short Name
 Long description.

matthias@matthias-tuxedo:~/test-0.0.1/DEBIAN$ cat postinst 
#!/bin/sh
 
# Source debconf library.
. /usr/share/debconf/confmodule
 
# Fetching configuration from debconf
db_get webradio-py/question1
ANSWER1=$RET

matthias@matthias-tuxedo:~/test-0.0.1/DEBIAN$ cat postrm 
#!/bin/sh

if [ "$1" = "purge" -a -e /usr/share/debconf/confmodule ]; then
    # Source debconf library.
    . /usr/share/debconf/confmodule
    # Remove my changes to the db.
    db_purge
fi

matthias@matthias-tuxedo:~/test-0.0.1/DEBIAN$ cat templates 
Template: test/question1
Type: string
Default: pi
Description: What is your User Name?
 This is the Text after the description... 

matthias@matthias-tuxedo:~/test-0.0.1/DEBIAN$ sudo debconf-show debconf
  debconf/priority: high
  debconf-apt-progress/info:
  debconf-apt-progress/media-change:
  debconf-apt-progress/title:
  debconf/frontend: Dialog
  debconf-apt-progress/preparing:

Auf meinem Ubuntu 18.04 verursacht bei der Installation aus dem Terminal mittels "sudo apt install ./test-0.0.1.deb" wie erwartet einen debconf Dialog, welche das angegeben Template abfragt. Wird das selbe Paket deinstalliert und anschließend mittels grafischer Paket-Verwaltung (z.B. Software-Center oder Gdebi) installiert, passiert leider gar nichts... die Installation läuft zwar komplett durch, allerdings bekomme ich kein Popup-Fenster.

Dies habe ich erst einmal versucht zu umgehen indem ich versuchte die DEBIAN_FRONTEND Variable auf "gnome" zu setzen, sobald ein X-Server läuft (siehe Code oben). Dies führt bei der einfachen Ausführung über das Terminal (von config) zwar zum gewünschten Effekt und ein zusätzliches Fenster öffnet sich, allerdings passiert das leider nicht, wenn das Paket gebaut und mittels Software-Center aufgerufen wird 😢

Auf der Ziel-Hardware des Scripts (Raspberry-Pi, BS=Rasbian) tut sich leider in keinem der beiden Fälle etwas weder im Fall "Dialog" noch im Fall "gnome". (Dass "dialog" installiert ist, habe ich schon mal sichergestellt, allerdings weiß ich nicht genau welches Paket ich benötige um gnome als DEBIAN_FRONTEND ein zu setzen...)

Kann mir jemand hierzu etwas sagen? Oder mir vielleicht ein funktionierendes Beispiel an die Hand geben auf dem ich aufbauen kann? Funktioniert mein Vorhaben überhaupt mit debconf? Oder benötige ich hierzu etwas anderes?

Acer54

(Themenstarter)
Avatar von Acer54

Anmeldungsdatum:
6. Juli 2011

Beiträge: Zähle...

Erledig.

Ich habe mittlerweile herausgefunden, dass diese Zeilen:

db_fset test/question1 seen false
db_clear
db_purge

(anscheinend allerdings NUR unter Raspbian) dazu führen, dass die definierten templates vor deren Aufruf bereits gelöscht werden... Nachdem ich diese Zeilen auskommentiert habe, lief zumindest schon mal der Dialog im Terminal.

Mit grafischem Installer funktioniert es anschließend bei Ubuntu bereits. Raspbian zickt noch rum. Dies liegt wohl daran, dass das Paket "libgtk2-perl" nicht installiert war auf meinem Test-Rechner. Nach Installation o.g. Paketes klappt es auch mit dem Raspberry.

Thema erst mal erledigt ☺

Antworten |