Comment les fichiers * .dsc sont liés aux fichiers * .deb et au code source

Sans système d’emballage, nous avons un code source (A) qui peut être traduit / compilé en code binary (B).

Dans le cas des paquets debian / ubuntu, nous avons (1) le code source, (2) le paquet source – le fichier dsc et (3) le fichier binary – deb . Comment se fait-il que le paquet source (2) soit associé à (1) et (3)? Pourquoi en avons-nous besoin? Et, la question la plus importante: quel est le stream de production générant (2) et (3) à partir de (1)?

Le workflow va généralement à peu près comme ceci:

  1. Une personne non affiliée à Debian écrit du code source et le publie sous forme de package sur le Web, par exemple, splint-3.1.2.tar.gz
  2. Quelqu’un chez Debian télécharge le code source et écrit

    1. Un ensemble de fichiers de correctifs pour créer le source sur Debian et se conformer aux directives Debian. Courir

      curl -s 'http://archive.ubuntu.com/ubuntu/pool/universe/s/splint/splint_3.1.2.dfsg1-2.diff.gz' | gunzip -dc | less 

      pour voir ceci pour le package exemple.

    2. Un fichier de métadonnées textuel décrivant le paquet, c’est le fichier .dsc et le fichier debian/control . “DSC” est un acronyme pour Debian Source Control.
  3. Les packages binarys .deb sont créés pour chaque architecture à partir du code source amont d’origine avec les correctifs spécifiques à Debian appliqués. Voici un de ces fichiers . Le HOWTO de création de paquets binarys Debian explique le format de ces fichiers et comment les inspecter.

Le fichier .dsc n’est pas utilisé pour la logique de construction, mais plutôt pour les métadonnées. Cependant, de nombreux outils le nécessitent. Par exemple, le champ Build-Depends: est utilisé pour installer les dépendances de génération requirejses.

C’est en fait beaucoup plus compliqué que ça. L’idée derrière les paquets Debian est qu’ils contiennent toutes les informations nécessaires pour créer une page. Généralement, la source est modifiée pour inclure un répertoire debian qui inclut un fichier de control décrivant les dépendances de ce package et des autres packages avec lesquels il interagit (par exemple, des interruptions, des remplacements, des packages virtuels). Un fichier de rules explique comment créer et installer le package. Il y a aussi des descriptions de la façon de conditionner, car un seul paquet source peut devenir de nombreux paquets binarys (par exemple, foo-utils , libfoo0 , libfoo-dev ). debuild lit réellement ces informations, effectue la compilation et produit les paquets binarys. Une subtilité: si foo utilise libbar-dev , il se peut que je ne connaisse / ne sois pas libbar la version du paquet binary libbar que j’utilise. pbuilder exécute debuild dans un environnement propre, il n’y a donc aucune chance de le comstackr avec des éléments que vous n’avez pas explicitement spécifiés.

Consultez le Guide du nouveau responsable Debian pour plus de détails.