Installieren eines RPM-Pakets auf einem Server ohne Internetzugang

Installieren eines RPM-Pakets auf einem Server ohne Internetzugang

Ich habe einen minimalen CentOS-Server ohne Internetzugang. Nennen wir ihnServer A.

Mein Ziel ist es, eine Shell-Skriptdatei zu erstellen, um eine bestimmte Version einer lokalen RPM-Datei für eine Anwendung zu installieren. Nehmen wir an, die Zielanwendung ist Apache. Das Problem besteht darin, dass jedes RPM Abhängigkeiten hat.

Auf einem anderen Server, auf dem es einen Zugang zum Internet gibt, den ich nenneServer B, lade ich das Paket herunter:

wget http://repo.okay.com.mx/centos/7/x86_64/release/httpd-2.4.35-5.el7.x86_64.rpm

Verschieben Sie es dann auf Server A und versuchen Sie, es zu installieren:

rpm -i httpd-2.4.35-5.el7.x86_64.rpm

Screenshot der Yum-Installationsabhängigkeit:
Screenshot der Abhängigkeitsinstallation von Yum

Es gibt mehrere Anforderungen:

rpm -qpR httpd-2.4.35-5.el7.x86_64.rpm

Screenshot der Abhängigkeiten durchsuchen:
Screenshot von Abhängigkeiten durchsuchen

Einige der Anforderungen sind für mich nicht nachvollziehbar:

1- Was ist das /etc/mime.types? Ich habe keine solche Datei. Wo kann ich sie bekommen?

2- Einige Pakete werden mehrfach erwähnt, wie zum Beispiel

systemd-utils
systemd-utils
systemd-utils

Was bedeutet das?

3- Einige Pakete haben mehrere Varianten. Welche davon soll ich installieren? libc.so

4- Es scheint, dass die Liste alphabetisch sortiert ist. Wie ist die Reihenfolge der Installation?

5- Der dnf repoqueryBefehl stellt auch eine andere Liste bereit. Welcher soll ich folgen?

DNF-Repoquery-Screenshot:
DNF-Repoquery-Screenshot

6- Gibt es keine automatischere Möglichkeit, das zu erreichen, was ich suche?

Antwort1

# Install Yumdownloader using the following command as root user.

yum install yum-utils

# Once installed, run the following command to download a package, for example httpd.
# To download packages with all dependencies, use --resolve option:

mkdir httpd && cd httpd && yumdownloader --resolve httpd

# it will download httpd with all dependencies into working dir.

getestet auf CentOS 7 im Docker:

[root@187dddae557b httpd]# ls
apr-1.4.8-7.el7.x86_64.rpm                   httpd-2.4.6-97.el7.centos.5.x86_64.rpm
apr-util-1.5.2-6.el7.x86_64.rpm              httpd-tools-2.4.6-97.el7.centos.5.x86_64.rpm
centos-logos-70.0.6-3.el7.centos.noarch.rpm  mailcap-2.1.41-2.el7.noarch.rpm

Antwort2

  1. in einem solchen Fall ist es viel einfacher, ein lokales Repository zu erstellen, auf das der betreffende Host zugreifen kann.
  2. dnfStellen Sie eine größere Liste bereit, da ALLE Abhängigkeiten angezeigt werden, nicht nur die fehlenden.
  3. Wenn Sie diese Methode verwenden möchten, laden Sie einfach dnfdie erforderlichen Pakete herunter und installieren Sie sie.
  4. Mit rpmsehen Sie beispielsweise das abhängige Paket. apr15Laden Sie es herunter, übertragen Sie es, installieren Sie es und versuchen Sie erneut, das Hauptpaket zu installieren. Wenn Sie nur den Dateinamen sehen, können Sie mit versuchen, yum provides /etc/mime.typesden Paketnamen zu erhalten.

verwandte Informationen