
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:
Es gibt mehrere Anforderungen:
rpm -qpR httpd-2.4.35-5.el7.x86_64.rpm
Screenshot der 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 repoquery
Befehl stellt auch eine andere Liste bereit. Welcher soll ich folgen?
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
- in einem solchen Fall ist es viel einfacher, ein lokales Repository zu erstellen, auf das der betreffende Host zugreifen kann.
dnf
Stellen Sie eine größere Liste bereit, da ALLE Abhängigkeiten angezeigt werden, nicht nur die fehlenden.- Wenn Sie diese Methode verwenden möchten, laden Sie einfach
dnf
die erforderlichen Pakete herunter und installieren Sie sie. - Mit
rpm
sehen Sie beispielsweise das abhängige Paket.apr15
Laden 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.types
den Paketnamen zu erhalten.