5505 links
  • GuiGui's Show

  • Home
  • Login
  • RSS Feed
  • Tag cloud
  • Picture wall
  • Daily
Links per page: 20 50 100
page 1 / 1
  • Fournir des réponses pré-enregistrées pour l'installation d'un paquet logiciel Debian (.deb)

    Lors de leur installation, certains logiciels livrés en paquets Debian (.deb) posent des questions dans une interface semi-graphique (bleu/gris, ncurses).

    La plupart d'entre eux prévoient un choix par défaut. Donc on peut réclamer le silence durant leur installation : sudo DEBIAN_FRONTEND=noninteractive dpkg -i <paquet>.deb.

    Mais certains logiciels exigent une réponse et leur installation échoue si on leur réclame le silence. Exemple ? Cisco PacketTracer qui veut que l'on accepte son contrat de licence.

    L'écosystème Debian propose des outils pour parer à cette situation en provisionnant des réponses : debconf-get-selections, debconf-set-selections, debconf-communicate.
    On n'en attend pas moins d'un système qui permet déjà de fournir des réponses pré-enregistrées (preseed) pour son installation.



    D'abord, on récupère toutes les réponses déjà provisionnées : debconf-get-selections | sort > debconf_avant_PT.txt.
    Il faut trier la sortie car debconf-get-selections ne régurgite pas les réponses dans le même ordre entre deux exécutions. :(

    Puis on installe le paquet pénible normalement, en répondant aux questions afin que l'installation soit conforme à ce qu'on attend, à la cible : sudo dpkg -i CiscoPacketTracer_801_Ubuntu_64bit.deb.

    Puis, on récupère à nouveau la liste des réponses provisionnées : debconf-get-selections | sort > debconf_apres_PT.txt.

    On compare les deux listes afin de trouver les configurations ajoutées par Packet Tracer : diff debconf_avant_PT.txt debconf_apres_PT.txt. Résultat :

    PacketTracer PacketTracer_800_amd64/accept-eula boolean true
    PacketTracer PacketTracer_800_amd64/show-eula note

    On supprime les réponses pré-enregistrées pour/par Packet Tracer : echo PURGE | sudo debconf-communicate PacketTracer. (Le paramètre est la première chaîne de caractères d'une ligne debconf-get-selections qui est au format « propriétaire clé/sous-clé valeur »).

    On désinstalle le logiciel puis on retente son installation : sudo DEBIAN_FRONTEND=noninteractive dpkg -i CiscoPacketTracer_801_Ubuntu_64bit.deb. Il demande à nouveau de valider son contrat de licence. Jusque-là, tout va bien.

    On le désinstalle à nouveau.

    On provisionne les réponses :

    echo 'PacketTracer PacketTracer_800_amd64/accept-eula boolean true
    PacketTracer PacketTracer_800_amd64/show-eula note' | sudo debconf-set-selections

    On installe le paquet normalement (sudo dpkg -i CiscoPacketTracer_801_Ubuntu_64bit.deb) : aucune question et l'installation est réussie. \o/



    On peut donc automatiser l'installation de ce logiciel sur tout un parc d'ordinateurs (avec un script, Puppet, peu importe) : il suffit d'utiliser debconf-set-selections avant dpkg -i.

    A priori, les réponses pré-enregistrées sont ignorées par dpkg-reconfigure <nom_logiciel>. J'ai testé avec le paquet unattended-upgrades (voir ici). C'est sensé : dpkg-reconfigure stocke la réponse dans le même dépôt accessible à debconf-get|set-selections. Si dpkg-reconfigure utilisait ce dépôt pour provisionner, il serait impossible de reconfigurer un logiciel (réponse déjà dans le dépôt, je la prends, donc logiciel pas reconfiguré) alors que c'est le but de la commande.

    Merci Alex de m'avoir appris l'existence de ces outils. :)

    Wed Apr 13 10:19:19 2022 - permalink -
    - http://shaarli.guiguishow.info/?wwd6Qw
Links per page: 20 50 100
page 1 / 1
Mentions légales identiques à celles de mon blog | CC BY-SA 3.0

Shaarli - The personal, minimalist, super-fast, database free, bookmarking service by the Shaarli community