web-dev-qa-db-fra.com

Comment un paquet Debian peut-il générer deux paquets avec une archive source en amont?

Je suis en train d’emballer quelque chose pour mon PPA. La source en amont est une archive .tar.gz basée sur Makefile.

Étant donné que ce paquet contient une quantité importante de données indépendantes de l'architecture, il serait sage que les scripts de génération génèrent deux paquets:

  • paquet
  • paquet-Les données

Comment puis-je configurer cela? J'ai édité mon fichier Debian control pour générer deux paquets, mais je ne sais pas comment obtenir les bons fichiers dans le bon paquet.

Puisque les fichiers de données sont actuellement tous installés via le Makefile, je suis un peu perdu ici.

14
Nathan Osman

C'est un endroit où j'ai toujours trouvé la documentation manquante. J'ai à peu près seulement appris comment cela fonctionne en regardant comment cela se fait dans d'autres packages. Comme avec la plupart des choses dans les paquets Debian, il y a plusieurs façons de le faire. Je trouve que le moyen le plus simple est d’utiliser des fichiers _debian/package.install_. Voici un exemple de paquet sur lequel j'ai travaillé, imagination (branche bzr) .

Premièrement, nous devons créer le package dans debian/control . Il y a trois strophes maintenant. Un pour le paquet source et un pour chaque paquet binaire. Notez que le paquetage foo-data doit être _Architecture: all_. Notez également que l'imagination dépend de imagination-common (= ${source:Version}).

Ensuite, nous créons un fichier _debian/imagination.install_. Cela contient les fichiers ou chemins spécifiques que nous voulons finir dans le paquet imagination. Pour ce paquet, nous voulons tous les fichiers dépendants de l'architecture. Le fichier desktop est inclus car il doit dire avec le binaire qu'il appelle dans sa ligne _Exec:_.

_usr/bin/
usr/lib/
/usr/share/applications/imagination.desktop
_

Nous devons créer un fichier _debian/imagination-common.install_. Cela contiendra tous les fichiers, images, traductions, documents, etc., indépendants de l’architecture.

_/usr/share/doc/
/usr/share/icons/
/usr/share/imagination/
/usr/share/locale/
_

_man dh_install_ décrit ce qui se passe réellement ici:

peut-être avez-vous un gros paquet qui construit plusieurs paquets binaires. Vous pouvez utiliser le fichier Makefile en amont pour tout installer dans debian/tmp, puis utiliser dh_install pour copier les répertoires et les fichiers à partir de là dans les répertoires de construction du paquet appropriés.

Ce que cela signifie par "les répertoires de construction du paquet approprié" est que, à la fin du processus de construction, tout ce qui se trouvera dans le résultat _foo.deb_ sera trouvé dans _src/debian/foo_. Les fichiers qui finiront par _foo-data.deb_ seront trouvés dans _src/debian/foo-data_. Comme _debian/rules_ est essentiellement un Makefile, vous pouvez commencer à imaginer d’autres façons d’obtenir le même résultat.

14
andrewsomething