Dépenses de package Debian

Dépenses de package Debian
Pour les distributions Linux telles que Debian GNU / Linux, il existe plus de 60.000 packages logiciels 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 faire fonctionner votre système et entièrement stable.

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

Disponibilité des packages logiciels

Comme déjà dit ci-dessus, une distribution Linux se compose de tonnes de différents packages logiciels. À ce jour, le logiciel est assez complexe, 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 un rôle tel que les packages binaires, les bibliothèques, la documentation, les exemples d'utilisation ainsi que les collections spécifiques à la langue et fournir 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 de package qui s'occupe du progiciel pour votre distribution Linux. En utilisant l'aptitude, la figure 1 répertorie les packages qui contiennent les traductions pour les différentes langues pour le webbrowser Mozilla Firefox.

Figure 1: aptitude-firefox.PNG

Cette façon de travailler permet de maintenir chaque package par un développeur différent ou en tant qu'équipe entière. De plus, la division en composants uniques permet à d'autres packages logiciels 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 d'emballage

Les outils de gestion des packages sur la distribution Debian GNU / Linux prennent constamment soin que les dépendances des packages installés sont complètement satisfaits. C'est particulièrement le cas si un progiciel est destiné à être installé, mis à jour ou supprimé sur ou de votre système. Des 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 démontre pour la suppression du package «mc-data» en utilisant «apt-get». Le package «MC-Data» recommande également de supprimer automatiquement le package «MC», car il n'a plus de sens d'être installé sans «Mc-Data».

Figure 2: APT-Get-Remove-MC.PNG

Marques et drapeaux de package

Pendant son travail, les outils de gestion des packages respectent les drapeaux et les marques de package définis. Ils sont soit réglés automatiquement, soit définis manuellement par l'administrateur système. Surtout ce comportement fait référence au «package essentiel» du drapeau qui est défini pour les packages qui ne doivent pas être supprimés. Un avertissement clair est émis avant de le faire (voir figure 3).

Figure 3: APT-Get-Remove.PNG

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

Entre autres, la commande «Apt-Mark» gère les marques et les drapeaux en utilisant les sous-communs suivants:

  • Auto: définissez un package comme automatiquement installé
  • Hold: maintenez la version actuelle du package
  • Manuel: définissez un package comme installé manuellement
  • showauto: afficher les packages installés automatiquement
  • showmanual: afficher les packages installés manuellement
  • Cresseur: énumérez les packages en attente
  • UNSHORD: supprimez le drapeau de maintien pour le package donné

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

$ apt-mark showmanual
abiword
guide ABS
ack-grep
ACL
ACPI

$

Afin de maintenir une version de package, utilisez la sous-commande `` Hold ''. L'exemple ci-dessous le montre pour le package 'MC'.

# apt-mark hold mc
MC Set en attente
#

La sous-commande `` Showhold '' répertorie les packages qui sont en attente (dans notre cas, c'est le package 'MC', seulement):

# APT-Mark Showhold
MC
#

En utilisant une autre méthode 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 dans le référentiel logiciel.

Description du package

En utilisant une autre méthode 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 dans le référentiel logiciel.

Chaque progiciel est livré avec sa propre description de package standardisée. Entre autres champs, cette description spécifie explicitement quel out package (s) il dépend de. Des outils spécifiques à la distribution extraient ces informations de la description du package et calculez et visualisez les dépendances pour vous, puis. L'exemple suivant utilise la commande «apt-cache show» afin d'afficher la description du package du package «poppler-utils» (voir figure 4).

Figure 4: pack-description-Poppler-utils.PNG

La description du package contient une section appelée «dépend». Cette section répertorie les autres packages logiciels plus le numéro de version dont dépend le package 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

La lecture de la description du package est le moyen difficile de comprendre les dépendances du package. Ensuite, nous vous montrerons comment simplifier cela.

Il existe plusieurs façons d'afficher les dépendances des packages 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é «dépend». L'exemple ci-dessous le démontre pour le package 'Skypeforlinux-64.Deb ':

$ dpkg-deb -f téléchargements / skypeforlinux-64.Deb dépend
GCONF-Service, 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), LibSetret-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 de même pour un package installé, utilisez «apt-cache». Le premier exemple combine le sous-commande `` show '' suivi du nom du package. La sortie est envoyée à la commande «grep» qui filtre la ligne «dépend»:

$ apt-cache show xpdf | Le 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 «le package grep-status -f -s dépend xpdf» rapportera les mêmes informations.

Plus spécifique, le deuxième exemple utilise à nouveau «apt-cache» mais avec la sous-commande «dépend», à 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: gsfont-x11
Recommande: CUPS-BSD
Cups-BSD: i386
Entre en collision avec:
Entre en collision avec:
Entre en collision avec:
Entre en collision avec:
Remplace:
Remplace:
Remplace:
Remplace:
Collision avec: xpdf: i386
$

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

$ apt-cache dépend -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 de même mais avec des informations de version si spécifiées dans la description:

$ apt-rdepends xpdf
Listes de packages de lecture… fait
Arbre de dépendance à la construction
Lire les informations sur l'é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 le montre pour le package «xpdf». La lettre «A» dans la deuxième colonne de la sortie de «l'aptitude» identifie le package comme étant automatiquement installé.

Figure 5: Aptitude-RDENDENCES.PNG

Les dépendances du package peuvent être un peu délicates. Cela peut aider à afficher 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 une image comme suit:

$ Debtree xpdf | dot -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

Montrer les dépendances inverses

Jusqu'à présent, nous avons affiché, nous avons répondu à la question quels packages sont requis pour un colis. Il y a aussi l'inverse - les soi-disant dépendances à la recherche. 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 rdepends xpdf
xpdf
Inverse dépend:
| octave-doc
xpdf: i386
libfontconfig1: i386
| xmds-doc
xfe
wiipdf
| vim-latexsuite
scapie de python
| Ruby-tioga
| python-tables-doc
| Page-Crunch
| octave-doc
| Muttprint-manuel
mozplugger
MLPOST
libmlpost-oCaml-dev

$

Les packages, qui dépendent des 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 répertorier les packages qui ont une référence dure au package «XPDF» (voir figure 7).

Figure 7: Recherche d'aptitude.PNG

Valider l'installation pour les packages manquants

«Apt-get» offre le sous-commande «chèque» qui permet de valider l'installation. Si vous voyez la sortie suivante, aucun package n'est manquant:

# chèque apt-get
Listes de packages de lecture… fait
Arbre de dépendance à la construction
Lire les informations sur l'état… terminé
#

Conclusion

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

Liens et références

  • Axel Beckert, Frank Hofmann: Das Debian-Paketmanagement-Buch, https: // www.dpmb.org /