Est-il possible d'avoir un script de pré-installation de package Debian, exécutez les commands apt-get?

Je crée un package Debian qui a quelques dependencies introuvables dans les repositorys officiels. Le simple fait de spécifier ces autres packageages comme des dependencies ne le coupe pas, car leurs installations impliquent à elles seules l'exécution de la mise à jour apt-get et l'ajout de référentiels sources (qui ne sont pas les miens) à /etc/apt/sources.list.d.

Plus : l'un de ces packages est le SDK du langage Dart – que vous pouvez installer uniquement en saisissant leur deb et en utilisant dpkg, ou en ajoutant l'un des repos de Google. Mon objective est vraiment de find un juste équilibre entre la réduction du nombre d'étapes impliquées dans l'installation de mon package et le deployment de packages propres.

Je voudrais donc que le script de pré-installation de mon package ajoute ces sources, puis exécute apt-get update, mais le problème principal est que lorsque le package est ouvert et en cours d'installation, il met un verrou sur dpkg. Alors est-il possible de réaliser ce que je suis directement, ou quelles autres options / solutions de contournement y at-il?

Je ne pense pas que ce soit possible directement.

Mais d'une manière ou d'une autre, l'user a installé votre packageage – et apparemment pas depuis votre repository, car il n'a pas encore été ajouté. Donc, la première solution de contournement serait de faire les choses normalement: requestz à l'user d'append le référentiel (ou de donner à l'user un script shell simple), puis installez votre package normalement. Ce serait ma solution préférée, et exécuter un script shell n'est pas plus difficile que d'installer un package.

Deuxième solution de contournement: ayez votre package juste un package d'installation. Installez-le, puis dites à l'user (par exemple, via debconf note ou autre message à l'écran) d'installer le package réel (qui proviendra de votre repository).

Troisième solution de contournement: le même package d'installation, mais utilisez le même nom de package dans votre repository, juste une version plus haute (utilisez probablement une époque). Donc, l'installation initiale va mettre en place le référentiel, puis apt upgrade ou similaire va tirer dans le vrai package.

Quasortingèmement: je ne suis pas sûr que ce soit une bonne idée, mais-Dans votre postinst, triggersr un process d'arrière-plan qui attend le verrou dpkg, puis terminer votre installation. Je pense at ou batch va travailler pour cela, ou juste un ordinaire /path/to/script & suivi de disown . Vous voulez probablement que l'user sache que l'installation du package se terminera en arrière-plan.

PS: vous avez probablement besoin d'append une key GPG aussi.