[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ suivant ]
Ce chapitre touche aux mécanismes internes de bas niveau du système de gestion de paquets Debian. Si vous êtes avant tout intéressé par l'utilisation des outils appropriés, passez aux chapitres Outils de gestion des paquets Debian, Chapitre 8 et Garder son système Debian à jour, Chapitre 9.
Les paquets contiennent généralement tous les fichiers nécessaires pour implémenter un ensemble de commandes ou de fonctionnalités. Il y a deux sortes de paquets Debian :
Les paquets binaires contenant les exécutables, les fichiers de
configuration, les pages de manuel ou d'info, les informations de copyright et
d'autres documentations. Ces paquets sont distribués sous un format d'archive
spécifique à Debian (voir Quel est le format d'un
paquet binaire Debian ?, Section 7.2). Ils sont habituellement
reconnaissables par l'extension « .deb ». Les paquets binaires
peuvent être décompressés en utilisant l'utilitaire dpkg
(éventuellement avec une interface comme aptitude
) ; vous
trouverez plus de détails dans les pages de manuel.
Les paquets sources sont constitués d'un fichier .dsc
décrivant le paquet source (incluant le nom des fichiers suivants), un fichier
.orig.tar.gz contenant le code source original non modifié au
format tar compressé avec gzip et habituellement un fichier
.diff.gz contenant les modifications spécifiques à Debian par
rapport au source original. L'utilitaire dpkg-source permet
l'archivage et le désarchivage des sources Debian ; vous trouverez plus
de détails dans les pages de manuel. (Le programme apt-get
peut
être utilisé comme une interface pour dpkg-source.)
Installation of software by the package system uses "dependencies"
which are carefully designed by the package maintainers. These dependencies
are documented in the control file associated with each package.
For example, the package containing the GNU C compiler (gcc
)
"depends" on the package binutils
which includes the
linker and assembler. If a user attempts to install gcc
without
having first installed binutils
, the package management system
(dpkg) will send an error message that it also needs binutils
, and
stop installing gcc
. (However, this facility can be overridden by
the insistent user, see dpkg(8)
.) See more in Que signifie qu'un paquet dépend (Depends),
recommande (Recommends), suggère (Suggests), est en conflit
(Conflicts), remplace (Replaces), casse (Breaks) ou
fournit (Provides) un autre paquet ?, Section 7.9 below.
Les outils de gestion de paquets Debian peuvent être utilisés pour :
manipuler ou administrer les paquets ou une partie des paquets,
administrer les modifications locales (« overrides ») des fichiers d'un paquet,
aider les développeurs dans la construction de paquets
aider les utilisateurs dans l'installation de paquets résidant sur un serveur FTP distant.
Un « paquet » Debian ou un fichier d'archive Debian, contient les fichiers exécutables, les bibliothèques et la documentation liée à une suite particulière de programme ou à un ensemble de programmes. Normalement, un fichier archive Debian a un nom se terminant par .deb.
The internals of this Debian binary packages format are described in the
deb(5)
manual page. This internal format is subject to change
(between major releases of Debian GNU/Linux), therefore please always use
dpkg-deb(1)
if you need to do lowlevel manipulations on
.deb files.
Le nom des paquets binaires Debian se conforme à la convention suivante : <foo>_<NuméroVersion>-<NuméroRévisionDebian>_<ArchitectureDebian>.deb
Notez que foo est supposé être le nom du paquet. Il est possible de vérifier le nom du paquet associé à un fichier d'archive Debian particulier (fichier .deb) d'une de ces manières :
inspecter le fichier « Packages » dans le répertoire où il a été stocké sur un site FTP d'archives Debian. Ce fichier contient une description pour chaque paquet ; le premier champ de chaque description est le nom formel du paquet.
utiliser la commande dpkg --info foo_VVV-RRR_AAA.deb (où VVV, RRR et AAA sont respectivement le numéro de version, le numéro de révision et l'architecture du paquet en question). Cela affiche, entre autres, le nom du paquet correspondant au fichier archive.
Le composant VVV est le numéro de version fourni par le développeur amont. Il n'y a pas de standard ici, donc le numéro de version peut avoir différents formats comme « 19990513 » ou « 1.3.8pre1 ».
Le composant RRR est le numéro de révision Debian et il est choisi par le développeur Debian (ou un utilisateur s'il choisit de construire lui-même son paquet). Ce numéro correspond au niveau de révision du paquet Debian, ainsi, une nouvelle révision signifie généralement des modifications du Makefile Debian (debian/rules), du fichier de contrôle Debian debian/control), des scripts d'installation ou de désinstallation (debian/p*) ou des fichiers de configuration utilisés avec le paquet.
The AAA component identifies the processor for which the package
was built. This is commonly amd64, which refers to AMD64, Intel
64 or VIA Nano chips. For other possibilities review Debian's FTP directory
structure at Quels sont tous ces
répertoires dans les archives FTP de Debian ?, Section 6.7. For
details, see the description of "Debian architecture" in the manual
page dpkg-architecture(1)
.
Des détails concernant le contenu du fichier control Debian sont fournis dans la charte Debian, au chapitre cinq, voir Quelles autres documentations existent sur le système Debian ?, Section 12.1.
Brièvement, un fichier control est montré ci-dessous pour le paquet Debian hello :
Package: hello Version: 2.9-2+deb8u1 Architecture: amd64 Maintainer: Santiago Vila <sanvila@debian.org> Installed-Size: 145 Depends: libc6 (>= 2.14) Conflicts: hello-traditional Breaks: hello-debhelper (<< 2.9) Replaces: hello-debhelper (<< 2.9), hello-traditional Section: devel Priority: optional Homepage: http://www.gnu.org/software/hello/ Description: exemple de paquet basé sur GNU hello Le programme GNU hello produit un accueil familier et amical. Il permet aux non-programmeurs d'utiliser un outil informatique classique qui serait autrement indisponible pour eux. . Cependant, sérieusement : c'est un exemple de la façon de faire un paquet Debian. Il s'agit de la version Debian du programme « hello world » du projet GNU (Qui est lui-même un exemple pour le projet GNU).
Le champ « Package » contient le nom du paquet. C'est le nom par lequel les outils de gestion de paquets peuvent le manipuler. Il est habituellement similaire mais pas nécessairement le même que la première chaîne composant le nom de l'archive Debian.
Le champ de « Version » donne le numéro de version du développeur amont et (dans le dernier composant) le niveau de révision du paquet de Debian de ce programme comme expliqué dans Pourquoi les noms des paquets Debian sont-ils si longs ?, Section 7.3.
Le champ « Architecture » indique pour quel processeur ce binaire particulier a été compilé.
Le champ « Depends » donne une liste des paquets qui doivent être installés afin d'installer ce paquet avec succès.
Le champ « Installed-Size » indique l'espace disque utilisé par le paquet une fois installé. Cela est prévu pour être employé par les programmes d'installation pour vérifier s'il y a suffisamment d'espace disque disponible pour installer le programme.
La ligne « Section » indique la section où le paquet Debian est conservé sur les sites FTP de Debian.
Le champ « Priority » indique l'importance de ce paquet pour l'installation, de sorte qu'un logiciel semi-intelligent comme apt ou aptitude peut trier le paquet dans une catégorie, par exemple les paquets installés en option. Voir Qu'est ce qu'un paquet Essential, Required, Important, Standard, Optional ou Extra ?, Section 7.7.
Le champ « Maintainer » contient l'adresse électronique de la personne actuellement responsable de la maintenance du paquet.
Le champ « Description » fournit un bref résumé des fonctionnalités du paquet.
Pour plus d'informations sur les champs disponibles dans un paquet, reportez-vous au chapitre 5 de la charte Debian, « Fichiers control et leurs champs », consultez Quelles autres documentations existent sur le système Debian ?, Section 12.1.
Conffiles est une liste de fichiers de configuration (habituellement placés dans /etc) que le système de gestion de paquets n'écrasera pas lors de la mise à jour du paquet. Cela assure que les valeurs locales pour ces fichiers seront préservées et c'est un dispositif critique permettant la mise à niveau des paquets sur un système en fonctionnement.
Pour déterminer exactement quels fichiers sont préservés pendant la mise à jour, lancez :
dpkg --status package
et regardez la section « Conffiles: ».
Ces fichiers sont des scripts exécutables qui sont lancés automatiquement avant ou après l'installation ou la suppression d'un paquet. Avec le fichier appelé control, tous ces fichiers font partie de la section « control » d'une archive Debian.
Les fichiers individuels sont :
Ce script est exécuté avant que le paquet soit décompressé du fichier d'archive Debian (« .deb »). Beaucoup de scripts « preinst » arrêtent les services des paquets qui sont mis à niveau jusqu'à ce que leurs installations ou leurs mises à niveau soient terminées (suivant le succès de l'exécution du script « postinst »).
Ce script termine typiquement n'importe quelle configuration exigée du paquet foo une fois que foo a été désarchivé à partir du fichier d'archive Debian (« .deb »). Souvent le script « postinst » demande à l'utilisateur des informations et avertit l'utilisateur que s'il accepte les valeurs par défaut, il devrait se souvenir de revenir en arrière et de reconfigurer le paquet lorsque la situation le demandera. Beaucoup de scripts « postinst » exécutent toutes les commandes nécessaires au démarrage ou au redémarrage d'un service une fois qu'un nouveau paquet a été installé ou mis à jour.
Ce script arrête généralement tous les démons qui sont associés au paquet. Il est exécuté avant la suppression des fichiers associés au paquet.
Ce script modifie généralement les liens ou les autres fichiers associés à foo et/ou supprime les fichiers créés par le paquet (Voir aussi Qu'est-ce qu'un paquet virtuel ?, Section 7.8.)
Actuellement tous les fichiers de commande peuvent être trouvés dans le répertoire /var/lib/dpkg/info. Les fichiers concernant le paquet foo commencent par le nom « foo » et sont suivis par les extensions appropriées « preinst », « postinst », etc. Le fichier foo.list dans ce répertoire liste tous les fichiers installés par le paquet foo. (Notez que l'emplacement de ces fichiers est interne à dpkg ; vous ne devriez pas compter sur eux).
À chaque paquet Debian est assignée une priorité par les développeurs de la distribution, c'est une aide pour le système de gestion de paquets. Les priorités sont :
Nécessaire (Required) : paquets nécessaires pour le fonctionnement correct du système.
Cela inclut tous les outils nécessaires pour la réparation d'un système défectueux. Vous ne devez pas supprimer ces paquets ou votre système risque de devenir complètement instable et vous ne pourrez probablement pas utiliser dpkg pour corriger cela. Avec seulement les paquets nécessaires, le système sera probablement inutilisable mais il aura suffisamment de fonctionnalités pour permettre de démarrer et d'installer plus de logiciels.
Important : paquets devant être présents sur tous systèmes de type Unix
Autres paquets sans lesquels le système ne fonctionnera pas correctement ou ne sera pas utilisable. Cela n'inclut PAS Emacs, X, TeX ou aucune autre grosse application. Ces paquets constituent seulement l'infrastructure de base.
Standard : paquets présents sur n'importe quel système Linux, y compris un système raisonnablement petit mais pas limité à un système en mode console. Des outils sont inclus pour pouvoir envoyer des courriels (avec mutt) et télécharger des fichiers depuis des serveurs FTP.
C'est ce qui sera installé par défaut si les utilisateurs ne sélectionnent rien. Cela n'inclut pas les grosses applications, mais intègre l'interpréteur Python et certains serveurs comme OpenSSH (pour l'administration à distance) et Exim (pour la livraison des courriels, même s'il peut être configuré en mode local uniquement). Il comprend également une documentation générique commune que la plupart des utilisateurs trouveront utile.
Les paquets Optionnel (Optional) incluent tout ce que vous pourriez raisonnablement vouloir installer si vous ne savez pas ce que c'est ou qui n'ont pas d'exigences spécialisées.
Cela inclut X, une distribution TeX complète et beaucoup d'applications.
Extra : paquets qui entrent en conflit avec d'autres ayant des priorités plus élevées ou ayant des conditions particulières qui les rendent peu convenables pour être optionnels. Ils sont utiles seulement si vous savez déjà ce qu'ils font.
Si vous faites une installation Debian par défaut, tous les paquets ayant une priorité standard ou supérieure seront installés sur votre système. Si vous choisissez des tâches prédéfinies, vous obtiendrez aussi les paquets de priorité plus faible.
De plus, certains paquets sont marqués comme essentiels (Essential) puisqu'ils sont absolument nécessaires pour un fonctionnement correct du système. Les outils de gestion de paquets refuseront de les supprimer.
Un paquet virtuel est un nom générique qui s'applique à n'importe quel groupe de paquets fournissant une fonctionnalité de base semblable. Par exemple, les programmes konqueror et firefox-esr sont des programmes de navigation Web, et devraient donc satisfaire n'importe quelle dépendance d'un programme exigeant la présence d'un navigateur Web sur le système, afin de fonctionner ou pour être utile. Les deux sont donc capables de fournir le « paquet virtuel » appelé www-browser.
De la même façon, exim4 et sendmail fournissent tous les deux les fonctionnalités d'un agent de transport de courrier électronique. Ils sont donc capables de fournir le paquet virtuel « mail-transport-agent ». Si l'un des deux est installé, alors n'importe quel programme exigeant l'installation d'un agent de transport de courrier électronique (mail-transport-agent) sera satisfait par l'existence de ce paquet virtuel.
Debian fournit un mécanisme qui fait que, si plus d'un paquet fournissant le même paquet virtuel est installé sur le système, alors, les administrateurs peuvent choisir leur paquet préféré. La commande appropriée est update-alternatives, elle est décrite plus loin dans Certains utilisateurs apprécient mawk, d'autres gawk ; certains utilisent vim, d'autres elvis ; certains préfèrent trn, d'autres tin ; comment Debian gère-t-elle la diversité ?, Section 11.11.
Le système de paquets Debian a une gamme de « dépendances » sur les paquets qui permet d'indiquer (avec un simple drapeau) à quel niveau un programme A peut fonctionner indépendamment de l'existence du programme B sur un système donné :
Le paquet A dépend du paquet B si B doit absolument être installé pour pouvoir exécuter A. Dans certains cas, A dépend non seulement de B mais d'une version de B. Dans ce cas, la dépendance de version est une limite basse, dans le sens que A dépend de toutes versions plus récentes que celle spécifiée.
Le paquet A recommande le paquet B si le responsable du paquet pense que la plupart des utilisateurs ne voudraient pas A sans avoir également la fonctionnalité fournie par B.
Le paquet A suggère le paquet B si B contient des fichiers qui sont liés aux (et augmentent habituellement) fonctionnalités de A.
Le paquet A est en conflit avec le paquet B quand A ne peut pas fonctionner si B est installé sur le système. Le plus souvent les conflits sont des cas où A contient des fichiers qui sont une amélioration de ceux de B. Le « conflit » est souvent combiné avec le « remplacement ».
Le paquet A remplace le paquet B quand les fichiers installés par B sont supprimés et (dans certains cas) écrasés par les fichiers de A.
Le paquet A casse le paquet B quand les deux paquets ne peuvent pas être simultanément configurés. Le système de gestion des paquets refusera d'installer l'un des paquets si l'autre est déjà installé et configuré dans le système.
Le paquet A fournit le paquet B quand tous les fichiers et toutes les fonctionnalités de B sont incorporés dans A. Ce mécanisme fournit aux utilisateurs ayant une contrainte d'espace disque un moyen d'obtenir seulement la partie du paquet dont ils ont vraiment besoin.
Des informations plus détaillées sur l'utilisation de chacun de ces termes peuvent être trouvées dans la charte Debian, section 7.2, « Dépendances binaires », voir Quelles autres documentations existent sur le système Debian ?, Section 12.1.
« Pre-Depends » est une dépendance particulière. Dans le cas de la plupart des paquets, dpkg désarchivera le fichier archive (c'est-à-dire son fichier .deb) indépendamment du fait que les fichiers dont il dépend existent ou non sur le système. De manière simpliste, le désarchivage signifie que dpkg va extraire les fichiers de l'archive qui étaient censés être installés sur votre système de fichiers et les mettre en place. Si ces paquets dépendent de l'existence de quelques autres paquets sur votre système, dpkg refusera d'accomplir l'installation (par l'exécution de l'action de « configuration ») jusqu'à ce que les autres paquets soient installés.
Cependant, pour certains paquets, dpkg refusera de les désarchiver jusqu'à ce que certaines dépendances soient résolues. De tels paquets sont dits « Pré-dépendants » de la présence de quelques autres paquets. Le projet Debian fournissait ce mécanisme pour gérer la mise à niveau de systèmes utilisant le format a.out vers le format ELF, où l'ordre de désarchivage était critique. Il y a d'autres situations de mise à jour où cette méthode est utile, par exemple pour les paquets ayant une priorité « required » et des dépendances sur la libc.
Comme ci-dessus, une information plus détaillée sur l'utilisation de ce terme peut être trouvée dans la charte Debian.
Ces options indiquent ce que l'utilisateur souhaite faire avec un paquet (comme indiqué par les invocations directes de dpkg/apt/aptitude).
Leurs significations sont :
« unknown » - l'utilisateur n'a jamais indiqué s'il souhaitait le paquet.
« install » - l'utilisateur souhaite installer ou mettre à jour le paquet.
« remove » - l'utilisateur souhaite que le paquet soit supprimé, mais ne souhaite pas supprimer un fichier de configuration existant.
« purge » - l'utilisateur souhaite supprimer le paquet complètement, incluant ses fichiers de configuration.
« hold » - l'utilisateur veut que ce paquet ne soit pas traité, c'est-à-dire qu'il veut conserver la version actuelle avec l'état actuel, quel qu'il soit.
Il y a trois moyens de bloquer un paquet, avec dpkg, apt ou aptitude.
Avec dpkg, vous devez exporter la liste de sélection des paquets, avec la commande :
dpkg --get-selections \* > selections.txt
puis éditer le fichier selections.txt
, changer la ligne contenant
le paquet que vous souhaitez conserver, par exemple pour libc6
, de
ceci :
libc6 install
à ceci :
libc6 hold
sauvegarder le fichier et le recharger dans la base de données de dpkg avec :
dpkg --set-selections < selections.txt
Avec apt, vous pouvez conserver un paquet en faisant
apt-mark hold nom_du_paquet
et enlever le drapeau « hold » avec
apt-mark unhold nom_du_paquet
Avec aptitude, vous pouvez conserver un paquet en faisant
aptitude hold package_name
et enlever le drapeau « hold » avec
aptitude unhold package_name
Les paquets sources Debian ne peuvent pas être véritablement « installés », ils sont seulement dépaquetés dans n'importe quel répertoire où vous voulez en construire les paquets binaires.
Source packages are distributed on most of the same mirrors where you can
obtain the binary packages. If you set up your APT's
sources.list(5)
to include the appropriate "deb-src"
lines, you'll be able to easily download any source package by running
apt-get source foo
Pour vous aider à réellement construire le paquet source, les paquets source Debian fournissent le mécanisme dit de dépendances de construction. Cela signifie que le responsable du paquet source conserve une liste des autres paquets requis pour construire son paquet. Pour voir comment cela est utile, exécutez
apt-get build-dep foo
avant de construire les sources.
La méthode recommandée est d'utiliser les différents outils de haut-niveau (« wrappers »). Voici comment faire en utilisant les outils devscripts. Installez le paquet si cela n'est pas déjà fait.
Maintenant, commencez par récupérer le paquet source :
apt-get source foo
puis entrez dans l'arborescence source :
cd foo-*
Puis installez les dépendances de construction nécessaires (s'il y en a) :
sudo apt-get build-dep foo
Puis créez une version particulière de votre propre construction (afin de ne pas les confondre plus tard lorsque Debian publiera sa propre nouvelle version) :
dch -l local 'Blah blah blah'
Et enfin construisez votre paquet :
debuild -us -uc
Si tout a correctement fonctionné, vous devriez pouvoir installer votre paquet avec la commande :
sudo dpkg -i ../*.deb
Si vous préférez effectuer les opérations vous-même et ne voulez pas utiliser devscripts, suivez cette procédure :
Vous aurez besoin de tous les fichiers foo_*.dsc, foo_*.tar.gz et foo_*.diff.gz pour compiler les sources (remarquez que pour certains paquets il n'y a pas de fichier .diff.gz, ce sont les paquets natifs à Debian).
Une fois que vous les avez récupérés (voir Comment
est-ce que j'installe un paquet source ?, Section 7.13) et si vous
avez le paquet dpkg-dev
installé, la commande suivante :
dpkg-source -x foo_version-revision.dsc
désarchivera le paquet dans un répertoire nommé foo-version.
Si vous souhaitez juste compiler le paquet, vous devez vous placer dans le répertoire foo-version et lancer la commande
dpkg-buildpackage -rfakeroot -b
pour construire le paquet (notez que le paquet fakeroot
est aussi
nécessaire) et faites
dpkg -i ../foo_version-revision_arch.deb
pour installer le nouveau paquet.
Pour une description plus détaillée, lisez le Guide des nouveaux responsables
Debian, disponible dans le paquet maint-guide
ou à l'adresse
http://www.debian.org/doc/devel-manuals#maint-guide
,
ou le Guide pour les responsables Debian, disponible dans le paquet
debmake-doc
ou à l'adresse https://www.debian.org/doc/devel-manuals#debmake-doc
.
[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ suivant ]
La FAQ Debian GNU/Linux
version 9.0, 19 November 2020