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:
Quelqu’un chez Debian télécharge le code source et écrit
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.
.dsc
et le fichier debian/control
. “DSC” est un acronyme pour Debian Source Control. .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.