Travailler avec les dépendances de package sur Red Hat Linux

Travailler avec les dépendances de package sur Red Hat Linux

Objectif

Notre objectif est de s'habituer aux outils disponibles pour trouver des informations sur les dépendances des packages sur un système basé sur RPM.

Système d'exploitation et versions logicielles

  • Système opérateur: Red Hat Enterprise Linux 7.5
  • Logiciel: RPM 4.11, miam 3.4.3

Exigences

Accès privilégié au système.

Difficulté

FACILE

Conventions

  • # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
  • $ - Étant donné les commandes Linux à exécuter en tant qu'utilisateur non privilégié régulier

Introduction

RPM, qui signifie Red Hat Package Manager, est un gestionnaire de packages bien connu et mature utilisé par toutes les distributions de saveurs Red Hat, ainsi que SUSE. Avec RPM, le Packager peut définir les relations entre les packages, et même avec des versions de packages - par exemple, un serveur Apache Tomcat a besoin d'un environnement Java approprié pour pouvoir exécuter.

D'un autre côté, pour installer un environnement Java, vous n'avez pas besoin d'un serveur Tomcat - vous pouvez décider d'exécuter une application basée sur Java différente, peut-être que celle écrite par vous-même démarrée à la main lorsque vous avez besoin pour faire son travail. En d'autres termes, le serveur Tomcat dépend sur Java.

RPM peut faciliter la vie d'un système sysadmin en présentant ces dépendances - et des outils s'appuyant sur RPM tel que le RPM utilité, ou Miam Peut résoudre automatiquement ces dépendances et installer tous les packages supplémentaires nécessaires pour qu'un nouveau composant fonctionne correctement.



La collecte d'informations

Pour découvrir la liste des packages qui foo.Le package de bar dépend de, exécutez simplement:

# yum deplist foo.bar

Et pour trouver la liste des packages qui nécessitent (dépendre) package foo.bar:

RPM -Q - WhatRequires foo.bar

Un exemple réel avec un package générique: frapper. Voyons quels packages nécessaires par le forfait bash:

# Yum Deplist Bash Package: bash.x86_64 4.2.46-30.Dépendance EL7: LIBC.donc.6 () (64bit) Proviseur: GLIBC.x86_64 2.17-222.Dépendance EL7: LIBC.donc.6 (glibc_2.11) (64 bits) Proviseur: GLIBC.x86_64 2.17-222.Dépendance EL7: LIBC.donc.6 (glibc_2.14) (64 bits) Proviseur: GLIBC.x86_64 2.17-222.Dépendance EL7: LIBC.donc.6 (glibc_2.15) (64 bits) Proviseur: GLIBC.x86_64 2.17-222.Dépendance EL7: LIBC.donc.6 (glibc_2.2.5) (64 bits) Proviseur: GLIBC.x86_64 2.17-222.Dépendance EL7: LIBC.donc.6 (glibc_2.3) Proviseur (64bit): GLIBC.x86_64 2.17-222.Dépendance EL7: LIBC.donc.6 (glibc_2.3.4) (64 bits) Proviseur: GLIBC.x86_64 2.17-222.Dépendance EL7: LIBC.donc.6 (glibc_2.4) (64 bits) Proviseur: GLIBC.x86_64 2.17-222.Dépendance EL7: LIBC.donc.6 (glibc_2.8) (64 bits) Proviseur: GLIBC.x86_64 2.17-222.Dépendance EL7: libdl.donc.2 () (64bit) Proviseur: GLIBC.x86_64 2.17-222.Dépendance EL7: libdl.donc.2 (glibc_2.2.5) (64 bits) Proviseur: GLIBC.x86_64 2.17-222.Dépendance EL7: libtinfo.donc.5 () (64bit) Proviseur: Ncurses-libs.x86_64 5.9-14.20130511.EL7_4 Dépendance: RTLD (GNU_HASH) Proviseur: GLIBC.x86_64 2.17-222.Fournisseur EL7: GLIBC.i686 2.17-222.EL7 
Copie

Du point de vue du package, frapper est très générique, et comme on le voit ci-dessus, dépend de quelques noyaux package. Mais si nous aimerions installer quelque chose de beaucoup plus dépendant, disons, le konzole Émulateur de terminal KDE sur un Hat Linux rouge avec un gestionnaire de bureau Gnome, nous pouvons obtenir plus d'une page de dépendance de longue date. Et avec konzole, Le cas est encore plus compliqué, car il s'appuie sur les packages QT et KDE, donc pour l'installer, vous devrez installer l'environnement KDE à côté de Gnome (ce que vous pouvez certainement faire) pour fournir tout konzole besoins.

Pour obtenir plus d'informations sur les packages qui seront installés, consultez la liste fournie par Yum avant de démarrer l'installation:

# Yum Installer les dépendances de résolution de Konsole -> Exécution de la vérification des transactions ---> package konsole.x86_64 0: 4.dix.5-4.EL7 sera installé -> Traitement Dépendance: konsole-parti = [… .]] 
Copie

Dans le cas d'un système de chapeau rouge avec Gnome, il peut prendre un certain temps pour résoudre les dépendances d'une application KDE pour la première fois, et quand cela sera terminé, Yum présentera le paquet unique que nous avons demandé, avec une belle petite taille. Suivi de plus de cent de packages installés pour les dépendances:

[… .] -> Exécution de chèques de transaction ---> Système de boost de package.x86_64 0: 1.53.0-27.EL7 sera installé ---> Boost-thread de package.x86_64 0: 1.53.0-27.EL7 sera installé -> Dépend des dépendances de résolution de dépendance finie résolus ================================================================================= ==============================================. ==================================. ==============================================. ==============================================. =================== Installation: Konsole x86_64 4.dix.5-4.EL7 RHEL-7-Server-RPMS 78 K Installation pour les dépendances: OpenExr-libs [… .]] 
Copie

Et dans le résumé, nous pouvons voir que l'installation utilisera beaucoup plus d'espace sur le disque à la fin, puis la taille du package dont nous avons besoin:

[… .] Résumé des transactions ============================================================ ==============================================. ========================== 
Copie

C'est beaucoup, mais nous avons obtenu une information utile sur la quantité d'espace utilisée. Ceci est particulièrement utile si nous installons de nombreux packages dans une seule transaction.

Alors que dans ce cas, la transaction est un gaspillage, l'objectif des dépendances consiste finalement à enregistrer les ressources: si quelqu'un met en œuvre une fonctionnalité dans son code, et qui peut être appelé sur le système, le prochain développeur peut ne pas avoir besoin d'implémenter les mêmes fonctionnalités Encore une fois, mais utilisez l'implémentation déjà existante. Pour le konzole Exemple, si vous souhaitez installer akregator La prochaine fois, le système aura déjà de nombreuses dépendances résolues, comme kdepim package contenant akregator s'appuie également sur QT, kdelibs, et autres choses de ce genre.

On peut utiliser RPM Utilité les informations sur les informations dans l'autre sens: énumérons les packages installés qui nécessitent le frapper emballer:

# RPM -Q - WhatRequires Bash Dracut-033-535.EL7.x86_64 INITScripts-9.49.41-1.EL7.x86_64 Autofs-5.0.7-83.EL7.x86_64 lvm2-2.02.177-4.EL7.x86_64 RSYSLOG-8.24.0-16.EL7.x86_64 
Copie

Nettoyage des forfaits inutiles

Si nous gardons nos systèmes à jour et changeons ou étendons leurs rôles, les forfaits «indésirables» apparaîtront inévitablement. Dans le package, la camelote signifie plus et / ou les forfaits obsolètes. Pour suivre l'exemple ci-dessus, nous n'avons plus besoin akregator, Parce que nous avons déplacé le «service» de la gestion RSS vers un concentrateur RSS central hypothétique dans notre système, donc après avoir migré nos aliments vers le lieu central, nous désinstallons l'application de traitement RSS locale. Cela ne supprimera pas tous les packages KDE, car de nombreux autres packages peuvent en dépendre. Mais sinon, ces packages sont indésirables et consommeront des ressources, y compris des temps de mise à jour plus longs, comme Miam Par défaut mettra à jour tout aveuglément, il trouve de nouveaux packages / errata pour.

Dépenser des ressources pour la mise à niveau de quelques packages inutiles sur un ordinateur portable avec connexion à large bande et SSD peut ne pas sembler être un problème, mais imaginez un centre de données avec des centaines ou des milliers d'ordinateurs, et vous obtenez l'image. C'est généralement une bonne idée de garder tous les systèmes simples, et la gestion des ressources n'est qu'un seul point. Plus un système est complexe, plus il est sujet aux erreurs. Plus de composants signifient plus de bugs possibles.

Pour obtenir un aperçu des packages inutiles installés sur le système, nous pouvons utiliser YUM et le nettoyage de package de la même manière que sur Centos, ou une autre fonctionnalité de Yum, autoron:

Yum Autoremove


Les packages que ces outils marquent comme inutiles ne sont pas identiques.

Lorsque vous utilisez l'un de ces outils, il est conseillé de revérifier ce Miam va supprimer et éventuellement tester ce que le nettoyage se traduira sur les machines de test avec un contenu de package identique avant de nettoyer les systèmes de production.

Ces outils sont en effet intelligents, mais pas entiers: par exemple, il n'y aura pas d'entrée dans la base de données RPM sur une application PHP personnalisée fonctionnant en plus d'un serveur Web qui appelle tasses Pour imprimer des commandes entrantes sur une imprimante connectée au serveur. C'est-à-dire là peut être une entrée si l'application est emballée avec les bonnes dépendances incluses et installées correctement avec RPM ou Miam - Mais cela prend des efforts, et tous les services doivent être emballés de la même manière si vous voulez vous sentir en sécurité avec les nettoyages automatiques basés sur YUM.

Résoudre les problèmes de dépendance

Surtout dans de grands environnements, il peut y avoir des problèmes de dépendance lors de l'installation ou de la mise à niveau des systèmes.

La capture d'écran ci-dessous montre un problème simple:

Résoudre les dépendances avec RPM

Dans l'écran du terminal ci-dessus, nous essayons d'installer le NRPE Package, le client devait surveiller de nombreux aspects du système avec Nagios. Nous avons téléchargé le client pour la distribution, mais les deux RPM et Miam échoue avec la même erreur: le NRPE Le package nécessite (dépend de) le nagios-commun emballer. Dans cet exemple, nous pouvons obtenir le package nécessaire à partir de la même source, et lors de l'installation RPM L'utilitaire voit que la dépendance sur laquelle nous avons échoué précédemment sera satisfaite d'ici la fin de la transaction et installe les deux packages, sortant silencieusement avec succès.

Conclusion

Yum et RPM sont des outils essentiels lorsque vous travaillez avec des distributions à l'aide du RPM Package Manager. En connaissant l'ensemble d'outils, il est beaucoup plus facile et généralement plus sûr de résoudre, mettre à niveau et modifier des tâches sur l'environnement logiciel d'un système donné.

Tutoriels Linux connexes:

  • Choses à installer sur Ubuntu 20.04
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • Fichiers de configuration Linux: 30 premiers
  • Téléchargement Linux
  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Linux peut-il obtenir des virus? Exploration de la vulnérabilité de Linux…
  • Comment installer Yum sur Linux
  • Choses à faire après l'installation d'Ubuntu 22.04 Jammy Jellyfish…
  • Meilleure distribution Linux pour les développeurs
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?