Arbeiten Sie mit Paketabhängigkeiten unter Red Hat Linux

Arbeiten Sie mit Paketabhängigkeiten unter Red Hat Linux

Zielsetzung

Unser Ziel ist es, sich an die verfügbaren Tools zu gewöhnen, um Informationen zu Paketabhängigkeiten in einem RPM -basierten System zu finden.

Betriebssystem- und Softwareversionen

  • Betriebssystem: Red Hat Enterprise Linux 7.5
  • Software: Drehzahl 4.11, Yum 3.4.3

Anforderungen

Privilegierter Zugriff auf das System.

Schwierigkeit

EINFACH

Konventionen

  • # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl
  • $ - Angegebene Linux-Befehle, die als regelmäßiger nicht privilegierter Benutzer ausgeführt werden sollen

Einführung

RPM, das für Red Hat Paket Manager steht, ist ein bekannter und ausgereifter Paketmanager, der von allen Red Hat-Aroma-Verteilungen sowie SUSE verwendet wird. Mit RPM kann der Packager die Beziehungen zwischen Paketen und sogar mit Paketversionen definieren - beispielsweise benötigt ein Apache -Tomcat -Server eine ordnungsgemäße Java -Umgebung, um ausführen zu können.

Auf der anderen Seite benötigen Sie, um eine Java -Umgebung zu installieren. Mit anderen Worten, der Tomcat -Server kommt darauf an auf Java.

RPM kann das Leben eines Sysadmins erheblich erleichtern, indem sie diese Abhängigkeiten präsentieren - und Werkzeuge, die sich auf Drehzahl wie das verlassen, wie die Drehzahl Nützlichkeit, oder Yum kann diese Abhängigkeiten automatisch lösen und alle zusätzlichen Pakete installieren, die für eine neue Komponente ordnungsgemäß ausgeführt werden können.



Informationen sammeln

Um die Liste der Pakete herauszufinden, die foo foo.Das Barpaket hängt davon ab, einfach rennen:

# Yum Deplist Foo.Bar

Und um die Liste der Pakete zu finden, die (abhängig von) Paket FOO erfordern.Bar:

rpm -q -WhatRequires foo.Bar

Ein Beispiel im wirklichen Leben mit einem generischen Paket: verprügeln. Mal sehen, welche Pakete vom Bash -Paket benötigt werden:

# Yum Deplist Bash Paket: Bash.x86_64 4.2.46-30.EL7 Abhängigkeit: libc.So.6 () (64bit) Anbieter: Glibc.x86_64 2.17-222.EL7 Abhängigkeit: libc.So.6 (GLIBC_2.11) (64bit) Anbieter: Glibc.x86_64 2.17-222.EL7 Abhängigkeit: libc.So.6 (GLIBC_2.14) (64bit) Anbieter: Glibc.x86_64 2.17-222.EL7 Abhängigkeit: libc.So.6 (GLIBC_2.15) (64bit) Anbieter: Glibc.x86_64 2.17-222.EL7 Abhängigkeit: libc.So.6 (GLIBC_2.2.5) (64bit) Anbieter: Glibc.x86_64 2.17-222.EL7 Abhängigkeit: libc.So.6 (GLIBC_2.3) (64bit) Anbieter: Glibc.x86_64 2.17-222.EL7 Abhängigkeit: libc.So.6 (GLIBC_2.3.4) (64bit) Anbieter: Glibc.x86_64 2.17-222.EL7 Abhängigkeit: libc.So.6 (GLIBC_2.4) (64bit) Anbieter: Glibc.x86_64 2.17-222.EL7 Abhängigkeit: libc.So.6 (GLIBC_2.8) (64bit) Anbieter: Glibc.x86_64 2.17-222.EL7 Abhängigkeit: libdl.So.2 () (64bit) Anbieter: Glibc.x86_64 2.17-222.EL7 Abhängigkeit: libdl.So.2 (GLIBC_2.2.5) (64bit) Anbieter: Glibc.x86_64 2.17-222.EL7 Abhängigkeit: libtinfo.So.5 () (64bit) Anbieter: Ncurses-Libs.x86_64 5.9-14.20130511.EL7_4 Abhängigkeit: RTLD (GNU_HASH) Anbieter: GLIBC.x86_64 2.17-222.EL7 -Anbieter: Glibc.I686 2.17-222.EL7 
Kopieren

Aus der Paketperspektive, verprügeln ist eine sehr generische und hängt, wie oben zu sehen, von einigen Kernpaketen abhängig. Aber wenn wir etwas viel abhängigeres installieren möchten, sagen wir, die Konzol KDE -Terminalemulator auf einem Red Hat Linux mit einem Gnome -Desktop -Manager erhalten wir möglicherweise mehr als eine Seite mit langer Abhängigkeitsliste. Und mit Konzol, Der Fall ist noch komplizierter, da er sich auf QT- und KDE -Pakete stützt. Um es zu installieren, müssen Sie die gesamte KDE Konzol Bedürfnisse.

Um einen Einblick in die Installation der Pakete zu erhalten, überprüfen Sie die von YUM bereitgestellte Liste, bevor Sie mit der Installation beginnen:

# YUM Installieren Sie Konsole-Auflösungsabhängigkeiten-> Transaktionsprüfung ausführen ---> Paket Konsole.x86_64 0: 4.10.5-4.EL7 wird installiert-> Verarbeitungsabhängigkeit: Konsole-part = [… .] 
Kopieren

Im Falle eines Red Hat -Systems mit GNOME kann es einige Zeit dauern, bis die Abhängigkeiten einer KDE -Anwendung zum ersten Mal behoben werden. Wenn dies fertig ist. Gefolgt von mehr als hundert Paketen, die für Abhängigkeiten installiert sind:

[… .]-> Transaktionsprüfung ausführen-> Paket-Boost-System.x86_64 0: 1.53.0-27.EL7 wird installiert ---> Paket-Boost-Thread.x86_64 0: 1.53.0-27.EL7 wird installiert -> Abhängige Abhängigkeiten abhängig ====================================================== =======================ieben ====================================================== ====================================================== =================== installieren: Konsole x86_64 4.10.5-4.EL7 RHEL-7-SERVER-RPMS 78 K Installation für Abhängigkeiten: OpenExR-Libs [… .] 
Kopieren

In der Zusammenfassung können wir feststellen, dass die Installation am Ende viel mehr Platz auf der Festplatte nutzt und dann die Größe des Pakets, das wir benötigen:

[… .] Transaction Summary =============================================== ====================================================== ============================= Installieren Sie 1 Paket (+120 abhängige Pakete) Gesamtdownload Größe: 108 m installierte Größe: 307 m 
Kopieren

Dies ist eine Menge, aber wir haben nützliche Informationen darüber erhalten, wie viel Platz genutzt wird. Dies ist besonders nützlich, wenn wir viele Pakete in einer Transaktion installieren.

Während in diesem Fall die Transaktion verschwenderisch ist, geht es dem Ziel der Abhängigkeiten letztendlich um das Speichern von Ressourcen: Wenn jemand eine gewisse Funktionalität in seinem Code implementiert, muss das System möglicherweise nicht die gleiche Funktionalität implementieren Wieder, aber nutzen Sie die bereits vorhandene Implementierung. Für die Konzol Beispiel, wenn Sie installieren möchten Akregator Das nächste Mal wird das System bereits viele Abhängigkeiten gelöst haben, wie Kdepim Paket enthalten Akregator verlässt sich auch auf Qt, Kdelibs, und derartige.

Wir können benutzen Drehzahl Dienstprogramm die Informationen umgekehrt: Listen wir die installierten Pakete auf, für die das erforderlich ist verprügeln Paket:

# RPM -q --WhatRire 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 
Kopieren

Reinigen Sie nicht benötigte Pakete

Wenn wir unsere Systeme auf dem neuesten Stand halten und ihre Rollen ändern oder erweitern, werden „Junk“ -Pakete unweigerlich angezeigt. Im Paket Sense bedeutet Junk nicht mehr benötigt und/oder veraltete Pakete. Um dem obigen Beispiel zu folgen, brauchen wir nicht mehr Akregator, Da wir den „Dienst“ der RSS -Handhabung in einen hypothetischen zentralen RSS -Konzentrator in unserem System verlegt haben. Das wird nicht alle KDE -Pakete entfernen, da viele andere Pakete von ihnen abhängen können. Aber wenn nicht, sind diese Pakete Müll und konsumieren Ressourcen, einschließlich längerer Aktualisierungszeiten, als Yum Standardmäßig aktualisiert alles blind, es findet neue Pakete/Errata für.

Ressourcen für die Aktualisierung einiger nicht benötigter Pakete für einen Laptop mit Breitbandverbindung und SSD scheinen kein Problem zu sein, aber stellen Sie sich ein Datencenter mit Hunderten oder Tausenden von Computern vor, und Sie erhalten das Bild. Es ist im Allgemeinen eine gute Idee, alle Systeme einfach zu halten, und das Ressourcenmanagement ist nur ein Punkt. Je komplexer ein System ist, desto mehr fehleranfällig ist es. Weitere Komponenten bedeuten mehr mögliche Fehler.

Um einen Überblick über nicht benötigte auf dem System installierte nicht benötigte Pakete zu erhalten, Autoremove:

Yum Autoremove


Die Pakete, die diese Tools als nicht benötigt markieren, sind nicht identisch.

Wenn Sie eines dieser Tools verwenden, wird empfohlen, das zu überprüfen, was Yum wird entfernen und möglicherweise testen, was die Reinigung zu Testmaschinen mit identischen Paketinhalten führt, bevor die Produktionssysteme reinigen.

Diese Tools sind in der Tat klug, aber nicht allwissend: Zum Beispiel gibt es in der RPM-Datenbank beispielsweise keinen Eintrag über eine benutzerdefinierte PHP Tassen Drucken Sie eingehende Bestellungen auf einem mit dem Server verbundenen Drucker aus. Das heißt da dürfen Ein Eintrag sein, wenn die Anwendung mit den richtigen Abhängigkeiten enthalten ist, und ordnungsgemäß mit mit Drehzahl oder Yum - Das erfordert jedoch Mühe, und alle Dienste müssen auf die gleiche Weise verpackt werden, wenn Sie sich mit yum-basierten automatischen Aufräumungen sicher fühlen möchten.

Abhängigkeitsprobleme lösen

Insbesondere in großen Umgebungen kann es Abhängigkeitsprobleme bei der Installation oder Aktualisierung von Systemen geben.

Der folgende Screenshot zeigt ein einfaches Problem:

Abhängigkeiten mit Drehzahl lösen

Im obigen Terminalbildschirm versuchen wir, die zu installieren NRPE Paket, der Client, der benötigt wurde, um viele Aspekte des Systems mit Nagios zu überwachen. Wir haben den Client für die Verteilung heruntergeladen, aber beides Drehzahl Und Yum fällt mit dem gleichen Fehler aus: die NRPE Das Paket erfordert (abhängig davon) die Nagios-Common Paket. In diesem Beispiel können wir das benötigte Paket aus derselben Quelle und bei der Installation der beiden erhalten das erhalten Drehzahl Der Versorgungsunternehmen sieht, dass die Abhängigkeit, die wir früher nicht gescheitert haben.

Abschluss

Yum und Drehzahl sind wesentliche Tools bei der Arbeit mit Verteilungen mit dem RPM -Paket -Manager. Durch die Kenntnis des Toolsets ist es viel einfacher und normalerweise sicherer, die Aufgaben in der Softwareumgebung eines bestimmten Systems zu lösen, zu aktualisieren und zu ändern.

Verwandte Linux -Tutorials:

  • Dinge zu installieren auf Ubuntu 20.04
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Linux -Konfigurationsdateien: Top 30 am wichtigsten
  • Linux -Download
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Kann Linux Viren bekommen?? Erforschung der Verwundbarkeit von Linux…
  • So installieren Sie Yum unter Linux
  • Dinge zu tun nach der Installation Ubuntu 22.04 Jammy Quallen…
  • Beste Linux -Distribution für Entwickler
  • Mint 20: Besser als Ubuntu und Microsoft Windows?