Ich habe einen Server mit Netzkonnektivität, auf dem ich "yum install $ PACKAGE" verwenden kann.
Ich möchte einen yum-Befehl, yum cache-rpms $PACKAGE $DIRECTORY
so dass alle erforderlichen RPM-Dateien in $ DIRECTORY heruntergeladen werden, das auch eine Datei ( Install.sh
) enthält, in der die Reihenfolge angegeben ist, in der diese RPMs auf vielen anderen Servern ohne Netzverbindung installiert werden.
Install.sh
Möglicherweise handelt es sich sogar um ein Shell-Skript, das das gleiche Verhalten aufweist wie yum install $PACKAGE
, außer dass es das Netzwerk nicht verwendet, sondern nur verwendet $DIRECTORY
.
Möglich?
Ich bin auf der Suche nach einer allgemeinen Lösung, bei der YUM und RPM verfügbar sind, aber aus Gründen der Spezifität: Es ist auf einer Reihe von CENTOS 6.7-Servern.
Antworten:
Hier ist ein spezielles Beispiel, in dem "httpd" als Paket zum Herunterladen und Installieren verwendet wird. Dieser Prozess wurde sowohl auf CentOS6 als auch auf CentOS7 getestet.
Installieren Sie das benötigte Material und erstellen Sie einen Speicherort für die heruntergeladenen RPMs:
Laden Sie die RPMs herunter. Hierbei wird der hier vorgeschlagene Trick installroot verwendet , um einen vollständigen Download aller Abhängigkeiten zu erzwingen, da in diesem leeren Stammverzeichnis nichts installiert ist. Yum wird dort einige Metadaten erstellen, aber wir werden alles wegwerfen. Beachten Sie, dass für CentOS7
releasever
"7" wäre.Ja, das war die kleine Version. Sie sollten die Größe der Full-Repo-Downloads gesehen haben!
Generieren Sie die Metadaten, die erforderlich sind, um unseren neuen Stapel von RPMs in ein YUM-Repo zu verwandeln, und bereinigen Sie die Dinge, die wir nicht mehr benötigen:
Konfigurieren Sie das Download-Verzeichnis als Repo. Beachten Sie, dass für CentOS7 der gpgkey "7" anstelle von "6" heißt:
So überprüfen Sie die fehlenden Abhängigkeiten:
Ich habe nicht herausgefunden, warum auf CentOS7 Dinge gemeldet werden, die
libssl.so.10(libssl.so.10)(64bit)
fehlen,httpd-tools
wennopenssl-libs-1.0.1e-51.el7_2.2.x86_64.rpm
(der Anbieter dieser Bibliothek) eindeutig im Verzeichnis vorhanden ist. Wenn Sie dennoch feststellen, dass etwas offensichtlich fehlt, ist dies möglicherweise eine gute Gelegenheit, es mit deryum install --downloadonly
oben beschriebenen Methode wieder hinzuzufügen .Wenn Sie offline sind oder das
/var/tmp/httpd
Repo-Verzeichnis auf den anderen Server kopiert haben, richten Sie das Repo dort ein:Hoffentlich keine fehlenden Abhängigkeiten!
quelle
Scheint, Sie fragen,
yumdownloader
welche im Paket enthalten istyum-utils
. Hierzu gibt es bereits einige Fragen und Antworten, siehe zB Alle Abhängigkeiten mit yumdownloader herunterladen, auch wenn bereits installiert? oder Wie finde ich mit Yum Paket-URLs?yumdownloader
Die Pakete werden heruntergeladen, es wird jedoch keine Datei generiert,Install.sh
da die Reihenfolge von yum selbst bestimmt werden kann. Sie können die Pakete also auf der Zielbox überyum install ./*rpm
den Ordner mit den heruntergeladenen Paketen installieren (der alle Abhängigkeiten im Vergleich zu a enthalten muss Basisinstallation - siehe den ersten Link oben bezüglichrepotrack
)quelle
Ich brauchte es mehrmals, also habe ich die Antwort von @Steve Bonds automatisiert. Stellen Sie nur sicher, dass Sie
PKG
das Paket definieren , das auf beiden Computern installiert werden soll (Haftungsausschluss: für CentOS 7. Ändern Sie für CentOS 6 das--releasever
undCentOS-7
spot.Online-Maschine
auf Offline-Maschine:
quelle
-y
den letzten Befehl ergänzen , um die Installation von Paketen zu bestätigen, wenn diese im Hintergrund ausgeführt werden.