web-dev-qa-db-fra.com

Où dois-je placer les modèles et le fichier de configuration dans la hiérarchie Debian

J'écris un paquet binaire Debian pour mon application (foo). Le script postinst (post-installation) veut poser quelques questions à l'utilisateur et obtenir les réponses. J'essaie d'y parvenir en utilisant debconf. Mais je ne parviens pas à voir l'écran de l'interface utilisateur, posant des questions à l'utilisateur. Je doute que ma configuration et mes modèles soient même appelés par dpkg. J'utilise toutes les instructions du lien tutoriel debconf Quelqu'un pourrait-il m'éclairer sur les questions ci-dessous:

  1. Je place le script "config" et le fichier "templates" dans/debian/tmp/DEBIAN /. Alors, est-ce le bon emplacement dans la hiérarchie debian? Les noms sont-ils corrects?
  2. Est-ce que mes scripts ci-dessous sont corrects?

Extrait du fichier de contrôle (uniquement les champs pertinents que je poste)

Depends: debconf (>= 0.2.17)

Extrait de fichier de configuration

#!/bin/sh
set -e

#echo "Config being called"

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

# Do you like debian?
db_input medium foo/like_debian || true
db_go

# Check their answer.
db_get foo/like_debian
if [ "$RET" = "false" ]; then
    # Poor misguided one..
    db_input high foo/why_debian_is_great || true
    db_go
fi

Extrait de fichier de modèles

Template: foo/like_debian
Type: boolean
Description: Do you like Debian?
We'd like to know if you like the Debian GNU/Linux system.

Template: foo/why_debian_is_great
Type: note
Description: Poor misguided one. Why are you installing this package?
Debian is great. As you continue using Debian, we hope you will
discover the error in your ways.

Extrait de preinst:

#!/bin/sh
set -e
#echo "Stage preinst" $1

exit 0

Extrait de postinst:

#!/bin/sh
set -e
#echo "Stage postinst" $1

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

db_get foo/like_debian
if [ "$RET" = "false" ]; then
    touch "/home/myhome/ITWORKED"
fi

exit 0

Extrait de prerm:

#!/bin/sh
set -e
#echo "Stage prerm" $1

exit 0

Extrait de postrm:

#!/bin/sh
set -e
#echo "postrm" $1

exit 0

Merci, -Sandeep

1
Sandeep

J'ai publié un article sur la création de vos propres paquets Debian à l'adresse:

http://www.leaseweblabs.com/2013/06/creating-custom-debian-packages/

Pour vous sauver de certaines lectures, la structure de répertoires devrait ressembler à ceci:

  • DEBIAN
    • contrôle (obligatoire)
    • modèles (facultatif)
    • preinst (optionnel, chmod 0755)
    • postinst (facultatif, chmod 0755)
    • prerm (optionnel, chmod 0755)
    • postrm (optionnel, chmod 0755)
  • … (Fichiers à installer à l'emplacement spécifié)

Assurez-vous que les autorisations et les emplacements sont comme ceci, et cela devrait fonctionner :)

3
RvGaTe

J'ai résolu le problème en tapant

echo PURGE | debconf-communicate <packagename>

Cette commande efface toutes les sélections de la base de données debconf. J'ai réalisé que lorsque les sélections présentes dans la base de données debconf, le programme d'installation du package n'exécute jamais les commandes d'entrée dans le fichier config. Par conséquent, je mets la commande purge dans le fichier postrm.

0
FBG