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?