Comment faire en sorte que le paquetage Debian génère deux paquets avec une archive source en amont?

14

J'emballe quelque chose pour mon PPA. La source en amont est une .tar.gzarchive basée sur Makefile.

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

  • paquet
  • package -data

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

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

Nathan Osman
la source

Réponses:

14

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

Tout d'abord, nous devons créer le package dans debian/control. Il y a maintenant trois strophes. Un pour le package source et un pour chaque package binaire. Notez que le paquet foo-data devrait l'être Architecture: all. Notez également que l'imagination dépend imagination-common (= ${source:Version}).

Ensuite, nous créons un debian/imagination.installfichier. Celui-ci contient les fichiers ou chemins spécifiques que nous voulons retrouver dans le paquet imagination. Pour ce package, nous voulons tous les fichiers dépendants de l'architecture. Le fichier de bureau est inclus comme il doit le dire avec le binaire qu'il appelle dans sa Exec:ligne.

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

Nous devons créer un debian/imagination-common.installfichier. Il contiendra tous les fichiers indépendants de l'architecture, les images, les traductions, les documents, etc.

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

man dh_install décrit ce qui se passe réellement ici:

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

Ce que cela signifie par "les répertoires de construction de package appropriés", c'est qu'à la fin du processus de construction, tout ce qui se trouvera dans le résultat foo.debsera trouvé dans src/debian/foo. Les fichiers qui se foo-data.debretrouveront se trouveront dans src/debian/foo-data. Comme il debian/ruless'agit essentiellement d'un Makefile, vous pouvez commencer à imaginer d'autres façons d'obtenir le même résultat.

andrewsomething
la source
Merci beaucoup! Explication très claire et fonctionne parfaitement.
Nathan Osman