Debian

Dépendances des paquets Debian

Dépendances des paquets Debian
Pour les distributions Linux telles que Debian GNU/Linux, il existe plus de 60.000 progiciels différents. Tous ont un rôle spécifique. Dans cet article, nous expliquons comment la gestion des packages gère de manière fiable ce grand nombre de packages logiciels lors d'une installation, d'une mise à jour ou d'une suppression afin de maintenir votre système fonctionnel et entièrement stable.

Pour Debian GNU/Linux, cela fait référence aux outils apt, apt-get, aptitude, apt-cache, apt-depends, apt-rdepends, dpkg-deb et apt-mark.

Disponibilité des progiciels

Comme déjà dit ci-dessus, une distribution Linux se compose de tonnes de logiciels différents. À l'heure actuelle, les logiciels sont assez complexes, et c'est pourquoi il est courant de diviser les logiciels en plusieurs packages uniques. Ces packages peuvent être classés par fonctionnalité ou par rôle tels que les packages binaires, les bibliothèques, la documentation, les exemples d'utilisation ainsi que les collections spécifiques à la langue et fournissent une partie sélectionnée du logiciel, uniquement. Il n'y a pas de règle fixe pour cela, et la division est faite soit par l'équipe de développement d'un outil, soit par le mainteneur du package qui s'occupe du package logiciel pour votre distribution Linux. En utilisant aptitude, la figure 1 répertorie les packages qui contiennent les traductions pour les différentes langues pour le navigateur Web Mozilla Firefox.

Figure 1 : aptitude-firefox.png

Cette façon de travailler permet que chaque package puisse être maintenu par un développeur différent ou en équipe entière. De plus, la division en composants individuels permet à d'autres progiciels de l'utiliser également à leurs propres fins. Une fonctionnalité requise peut être appliquée et n'a pas besoin d'être réinventée.

Organisation du paquet

Les outils de gestion de paquets sur la distribution Debian GNU/Linux veillent constamment à ce que les dépendances des paquets installés soient complètement satisfaites. C'est particulièrement le cas si un progiciel est destiné à être installé, mis à jour ou supprimé sur ou de votre système. Les packages manquants sont ajoutés au système ou les packages installés sont supprimés du système au cas où ils ne seraient plus nécessaires. La figure 2 le montre pour la suppression du package 'mc-data' à l'aide de 'apt-get'. Le package 'mc-data' recommande également de supprimer automatiquement le package 'mc', car cela n'a plus de sens d'être installé sans 'mc-data'.

Figure 2 : apt-get-remove-mc.png

Marques et drapeaux d'emballage

Au cours de son travail, les outils de gestion des packages respectent les indicateurs de package et les marques qui sont définies. Ils sont soit définis automatiquement, soit définis manuellement par l'administrateur système. En particulier, ce comportement fait référence à l'indicateur « package essentiel » qui est défini pour les packages qui ne doivent pas être supprimés. Un avertissement clair est émis avant que vous ne le fassiez (voir Figure 3).

Figure 3 : apt-get-remove.png

Aussi, les trois marques 'automatique', 'manuel' et 'hold' sont prises en compte. Ils marquent un package comme étant automatiquement installé, installé manuellement ou ne devant pas être mis à jour (conserver la version actuelle). Un progiciel est soit marqué « automatique » ou « manuel », mais pas les deux.

Entre autres, la commande 'apt-mark' gère les marques et les drapeaux à l'aide des sous-commandes suivantes :

Afin de répertorier tous les packages installés manuellement, exécutez cette commande :

$ apt-mark showmanuel
abiword
abs-guide
ack-grep
acl
acpi

$

Pour conserver une version de package, utilisez la sous-commande 'hold'. L'exemple ci-dessous le montre pour le package 'mc'.

# apt-mark hold mc
mc mis en attente
#

La sous-commande 'showhold' répertorie les packages qui sont en attente (dans notre cas, il s'agit uniquement du package 'mc'):

# apt-mark showhold
mc
#

En utilisant une méthode alternative intitulée « apt pinning », les packages sont classés par priorités. Apt les applique afin de décider comment gérer ce progiciel et les versions disponibles à partir du référentiel logiciel.

Description du forfait

En utilisant une méthode alternative intitulée « apt pinning », les packages sont classés par priorités. Apt les applique afin de décider comment gérer ce progiciel et les versions disponibles à partir du référentiel logiciel.

Chaque progiciel est livré avec sa propre description de progiciel qui est normalisée. Entre autres champs, cette description spécifie explicitement de quel(s) autre(s) package(s) elle dépend. Les outils spécifiques à la distribution extraient ces informations de la description du package, calculent et visualisent les dépendances pour vous, puis. L'exemple suivant utilise la commande 'apt-cache show' afin d'afficher la description du package 'poppler-utils' (voir Figure 4).

Figure 4 : package-description-poppler-utils.png

La description du package contient une section appelée « Dépend ». Cette section répertorie les autres progiciels ainsi que le numéro de version dont dépend le progiciel actuel. Dans la figure 4, cette section est encadrée en rouge et montre que 'poppler-utils' dépend des packages 'libpoppler64', 'libc6', 'libcairo2', 'libfreetype6', 'liblcms2-2', 'libstdc++6' et 'zlib1g'.

Afficher les dépendances du package

Lire la description du package est le moyen difficile de comprendre les dépendances du package. Ensuite, nous allons vous montrer comment simplifier cette.

Il existe plusieurs façons d'afficher les dépendances du package sur la ligne de commande. Pour un package deb en tant que fichier local, utilisez la commande 'dpkg-deb' avec deux paramètres - le nom de fichier du package et le mot-clé 'Depends'. L'exemple ci-dessous le montre pour le package 'skypeforlinux-64.deb' :

$ dpkg-deb -f Téléchargements/skypeforlinux-64.deb dépend
service gconf, libasound2 (>= 1.0.16), libatk1.0-0 (>= 1.12.4), libc6 (>= 2.17),
libcairo2 (>= 1.2.4), libcups2 (>= 1.4.0), libexpat1 (>= 2.0.1),
libfreetype6 (>= 2.4.2), libgcc1 (>= 1:4.1.1), libgconf-2-4 (>= 3.2.5),
libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.31.8), libgtk2.0-0 (>= 2.24.0),
libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.13.4-2~), libpango-1.0-0 (>= 1.14.0),
libpangocairo-1.0-0 (>= 1.14.0), libsecret-1-0 (>= 0.7), libv4l-0 (>= 0.5.0),
libx11-6 (>= 2:1.4.99.1), libx11-xcb1, libxcb1 (>= 1.6), libxcomposite1 (>= 1:0.3-1),
libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3,
libxi6 (>= 2:1.2.99.4), libxrandr2 (>= 2:1.2.99.3), libxrender1, libxss1,
libxtst6, apt-transport-https, libfontconfig1 (>= 2.11.0), libdbus-1-3 (>= 1.6.18),
libstdc++6 (>= 4.8.1)
$

Afin de faire la même chose pour un paquet installé, utilisez 'apt-cache'. Le premier exemple combine la sous-commande 'show' suivie du nom du package. La sortie est envoyée à la commande 'grep' qui filtre la ligne 'Depends' :

$ apt-cache show xpdf | grep dépend
Dépend : libc6 (>= 2.4), libgcc1 (>= 1:4.1.1), libpoppler46 (>= 0.26.2),
libstdc++6 (>= 4.1.1), libx11-6, libxm4 (>= 2.3.4), libxt6
$

La commande 'grep-status -F package -s Depends xpdf' rapportera les mêmes informations.

Plus spécifique, le deuxième exemple utilise à nouveau 'apt-cache' mais avec la sous-commande 'depends', à la place. La sous-commande est suivie du nom du package :

$ apt-cache dépend xpdf
xpdf
Dépend : libc6
Dépend : libgcc1
Dépend : libpoppler46
Dépend : libstdc++6
Dépend : libx11-6
Dépend : libxm4
Dépend : libxt6
Recommande : poppler-utils
poppler-utils:i386
Recommande: poppler-data
Recommande : gsfonts-x11
Recommande: cups-bsd
tasses-bsd: i386
Entre en collision avec :
Entre en collision avec :
Entre en collision avec :
Entre en collision avec :
Remplace :
Remplace :
Remplace :
Remplace :
Entre en collision avec : xpdf:i386
$

La liste ci-dessus est assez longue et peut être raccourcie à l'aide du commutateur '-i' (abréviation de '-important'):

$ apt-cache dépend de -i xpdf
xpdf
Dépend : libc6
Dépend : libgcc1
Dépend : libpoppler46
Dépend : libstdc++6
Dépend : libx11-6
Dépend : libxm4
Dépend : libxt6
$

La commande 'apt-rdepends' fait la même chose mais avec les informations de version si spécifiées dans la description :

$ apt-r dépend de xpdf
Lecture des listes de paquets… Terminé
Arbre de dépendance de construction
Lecture des informations d'état… Terminé
xpdf
Dépend : libc6 (>= 2.4)
Dépend : libgcc1 (>= 1:4.1.1)
Dépend : libpoppler46 (>= 0.26.2)
Dépend : libstdc++6 (>= 4.1.1)
Dépend : libx11-6
Dépend : libxm4 (>= 2.3.4)
Dépend : libxt6
libc6
Dépend : libgcc1

$

La commande 'aptitude' fonctionne également avec les commutateurs. Pour les dépendances, utilisez le commutateur '~R' suivi du nom du package. La figure 5 montre ceci pour le package 'xpdf'. La lettre 'A' dans la deuxième colonne de la sortie de 'aptitude' identifie le paquet comme étant automatiquement installé.

Figure 5 : aptitude-rdepends.png

Les dépendances des packages peuvent être un peu délicates. Il peut être utile de montrer graphiquement les dépendances des packages. Utilisez la commande 'debtree' suivie du nom du package afin de créer une représentation graphique des dépendances du package. L'outil 'dot' du package Graphviz transforme la description en image comme suit :

$ débiteur xpdf | point -Tpng > graphique.png

Dans la figure 6, vous voyez l'image PNG créée qui contient le graphique de dépendance.

Figure 6 : point.png

Afficher les dépendances inverses

Jusqu'à présent, nous avons affiché que nous avons répondu à la question quels packages sont requis pour un package. Il y a aussi l'inverse - ce qu'on appelle les dépendances inverses. Les exemples suivants traitent du package ainsi que des packages qui en dépendent. L'exemple numéro un utilise 'apt-cache' avec la sous-commande 'rdepends' comme suit :

$ apt-cache dépend de xpdf
xpdf
L'inverse dépend :
|octave-doc
xpdf:i386
libfontconfig1:i386
|xmds-doc
xfe
wiipdf
|vim-latexsuite
python-scapy
|rubis-tioga
|python-tables-doc
|page-crunch
|octave-doc
|muttprint-manuel
mozplugger
mlpost
libmlpost-ocaml-dev

$

Les packages, qui dépendent d'autres packages sont marqués d'un symbole de tuyau. Ces packages n'ont pas besoin d'être installés sur votre système mais doivent être répertoriés dans la base de données des packages.

L'exemple suivant utilise 'aptitude' pour lister les packages qui ont une référence matérielle au package 'xpdf' (voir Figure 7).

Figure 7 : recherche d'aptitude.png

Valider l'installation pour les packages manquants

'Apt-get' propose la sous-commande 'check' qui permet de valider l'installation. Si vous voyez la sortie suivante, aucun package ne manque :

# apt-get chèque
Lecture des listes de paquets… Terminé
Arbre de dépendance de construction
Lecture des informations d'état… Terminé
#

Conclusion

La recherche de dépendances de packages fonctionne bien avec les bons outils. Les utiliser correctement vous aide à comprendre pourquoi les packages sont installés et lesquels pourraient être manquants.

Liens et références

Comment modifier les paramètres de la souris et du pavé tactile à l'aide de Xinput sous Linux
La plupart des distributions Linux sont livrées avec la bibliothèque "libinput" par défaut pour gérer les événements d'entrée sur un système. Il peut ...
Remappez les boutons de votre souris différemment pour différents logiciels avec X-Mouse Button Control
Peut-être que vous avez besoin d'un outil qui pourrait faire changer le contrôle de votre souris avec chaque application que vous utilisez. Si tel est...
Examen de la souris sans fil Microsoft Sculpt Touch
J'ai lu récemment sur le Microsoft Sculpt Touch souris sans fil et j'ai décidé de l'acheter. Après l'avoir utilisé pendant un certain temps, j'ai déci...