Können Sie mir bei meinem Problem mit der Softwareabhängigkeit helfen?


12

Dies ist eine kanonische Frage zu Kompilierungsabhängigkeiten und Paketverwaltung.

Ich habe eine Frage zum Kompilieren von Ports / Software oder zum Installieren von RPMs auf meinem * nix-Server. Wenn ich das versuche, erhalte ich viele Meldungen über fehlende Abhängigkeiten.

Kann die Server-Fehler-Community bitte helfen?

Antworten:


10

Willkommen bei Serverfehler. Im Allgemeinen ist diese Art von Frage hier nicht zum Thema. Es wird erwartet, dass sich die meisten Systemadministratoren bereits mit diesem Problem befasst haben, bevor sie zum Systemadministrator wurden, indem sie an ihren eigenen Arbeitsstationen bastelten. Sysadmins, die aus einem Windows-Hintergrund stammen, haben dies jedoch möglicherweise nicht gemeistert. Daher sind folgende Punkte zu beachten:

Verwenden Sie einen Paket-Manager, um Software auf Ihrem Server zu installieren.

Paketmanager wie yumoder aptbehandeln diese Abhängigkeiten für Sie. Darüber hinaus können sie auch zum Verwalten von Updates der Software auf Ihrem Server verwendet werden. Bei den meisten Versionen von * nix ist standardmäßig ein Paket-Manager installiert, insbesondere bei VPS, auf denen das Betriebssystem vorinstalliert ist. Wenn Ihnen dies wirklich neu ist, können Sie eines davon in Ihrem Produktionssystem verwenden und Abenteuer beim Kompilieren oder Installieren der neuesten RPMs für Ihre Testumgebung ersparen.

Ich muss jedoch ein aktuelleres Paket verwenden als das, was in meinem Paketmanager verfügbar ist!

Die meisten Paketmanager können so konfiguriert werden, dass sie unterschiedliche Repositorys verwenden. Möglicherweise gibt es ein Repository, das die von Ihnen benötigte Version des Pakets bereitstellt und es Ihnen weiterhin ermöglicht, die Funktionen Ihres Paketmanagers zu nutzen.

Das benötigte Paket ist nicht über Repos oder Paketmanager erhältlich

In diesem Fall werden Sie wahrscheinlich tun müssen , um herauszufinden , die Abhängigkeiten (oder es aufzusaugen und eine stabilere / gemeinsame Version der Software verwenden). In einer Testumgebung sollten Sie wahrscheinlich Folgendes tun und sich genau notieren, was Sie tun:

  • Lesen Sie unbedingt die Dokumentation der zu installierenden Software. In dieser Liste wird möglicherweise aufgeführt, was Sie zuerst installieren müssen, nicht jedoch, was für diese Software erforderlich ist .
  • Verwenden Sie Ihr Paket - Manager , die Dinge zu installieren , die erforderlich sind - in den meisten Fällen diese werden zur Verfügung stehen.
  • Versuchen Sie anschließend die Installation.
  • Wenn weiterhin Meldungen zu fehlenden Abhängigkeiten angezeigt werden, notieren Sie sich alle und versuchen Sie erneut, mit Ihrem Paketmanager so viele wie möglich zu installieren.
  • Wenn eine Abhängigkeit nicht gefunden wird, müssen Sie sie als Teilaufgabe betrachten und rekursiv behandeln (Quell-Tarball suchen, Abhängigkeiten suchen, installieren).
  • Es ist ein iterativer Prozess.

Ich habe immer noch Probleme!

Wenn Sie alle oben genannten Schritte ausgeführt haben und immer noch Probleme haben, sind Sie möglicherweise auf ein seltsames Problem gestoßen, bei dem andere Server-Fehler möglicherweise gerne helfen. Erstellen Sie eine neue Frage und geben Sie an, welche Software Sie installieren möchten, welche Version und welche genauen Fehlermeldungen angezeigt werden.

Spezifische Hinweise für wichtige Paketverwaltungssysteme

RPM (RHEL / Fedora und Klone) und DEB (Debian / Ubuntu und Klone) Paketverwaltung

  • yum whatprovides filename ist eine hervorragende Methode, um das Paket zu finden, das eine bestimmte Datei oder Bibliothek auf einem RHEL-System enthält.
  • Nicht ./configure && make && make installblind anwenden, wenn möglich! Die Paketverwaltung wurde genau aus diesem Grund entwickelt, um die umständlichen und nicht zu wartenden Probleme zu vermeiden, die durch die nicht nachvollziehbare Installation vieler widersprüchlicher Dateien entstehen.
  • Viele Bibliotheken sind in zwei Teile unterteilt: Binär (zum Beispiel gemeinsam genutzte Objekte) und Entwicklung (Header). Sie benötigen also beide libfoound libfoo-devel(oder -dev) Pakete.
  • Erwägen Sie die Verwendung von fpm( https://github.com/jordansissel/fpm ), um Tarballs in ordentliche RPMs und DEBs zu konvertieren
  • Wenn Sie Ihre eigenen Pakete rollen, sind SIE die Person, die für deren Aktualisierungen, Tests und Wartung verantwortlich ist. Wenn Sie keine Infrastruktur dafür haben, zielen Sie definitiv zu hoch.

Suchen von Abhängigkeiten nach Dateinamen für RPMs

http://rpmfind.net ist ein guter Ort, um nach Namen von Paketen zu suchen, wenn Sie den Namen der Datei kennen, über die sich der Installationsvorgang beschwert. Das Abgleichen und Mischen von Paketen verschiedener Distributionen wird jedoch nicht empfohlen.


Ich denke, es wäre nützlich, einen Abschnitt bereitzustellen, in dem das Problem der Bibliotheksabhängigkeiten erörtert wird, dessen Lösung etwas schwieriger sein kann - aber ich habe weniger Erfahrung damit -.
Donnerstag,

Zu den Elementen, die ich wärmstens empfehlen würde, gehören Details zu src-RPMs und zur Verwaltung eines benutzerdefinierten lokalen Repositorys. Das Erstellen von Deb- oder RPM-Dateien sollte Teil eines jeden Toolbelt sein, der mit den Anforderungen von Offbeat-Paketen arbeiten muss.
Tim Brigham

Könnte es sich lohnen, dies zu erweitern, um das Thema Anwendungsstapel und ihre Fallstricke zu behandeln. Die Frage nach dem "aktuelleren Paket" erinnerte mich an eine aktuelle Frage .
Andrew B

Es ist ein Community-Wiki. Fühlen Sie sich also frei, Dinge hinzuzufügen, oder geben Sie natürlich Ihre eigene Antwort :-)
dunxd
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.