it-swarm.com.de

Wie verwende ich yum, um alle erforderlichen RPMs für die Offline-Verwendung zu erhalten?

Ich habe einen Server mit Netzverbindung, auf dem ich "yum install $ PACKAGE" verwenden kann.
Ich möchte einen yum-Befehl wie yum cache-rpms $PACKAGE $DIRECTORY, Damit alle erforderlichen RPM-Dateien in $ DIRECTORY heruntergeladen werden. Dort befindet sich auch eine Datei (Install.sh), In der die Reihenfolge angegeben ist um diese RPMs auf vielen anderen Servern ohne Netzverbindung zu installieren.
Install.sh Kann sogar ein Shell-Skript sein, das das gleiche Verhalten wie yum install $PACKAGE Hat, außer dass es das Netzwerk nicht verwendet, sondern nur $DIRECTORY .

Möglich?

Ich suche nach einer allgemeinen Lösung, bei der yum und RPM verfügbar sind, jedoch aus Gründen der Spezifität: Sie befindet sich auf einer Reihe von CENTOS 6.7-Servern.

32
Prem

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 platzieren Sie die heruntergeladenen RPMs:

# yum install yum-plugin-downloadonly yum-utils createrepo
# mkdir /var/tmp/httpd
# mkdir /var/tmp/httpd-installroot

Laden Sie die RPMs herunter. Dies verwendet den hier vorgeschlagener Installroot-Trick , 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.

# yum install --downloadonly --installroot=/var/tmp/httpd-installroot --releasever=6 --downloaddir=/var/tmp/httpd httpd

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 RPM-Stapel in ein YUM-Repo umzuwandeln, und bereinigen Sie die Dinge, die wir nicht mehr benötigen:

# createrepo --database /var/tmp/httpd
# rm -rf /var/tmp/httpd-installroot

Konfigurieren Sie das Download-Verzeichnis als Repo. Beachten Sie, dass für CentOS7 der gpgkey "7" anstelle von "6" heißt:

# vi /etc/yum.repos.d/offline-httpd.repo
[offline-httpd]
name=CentOS-$releasever - httpd
baseurl=file:///var/tmp/httpd
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

So überprüfen Sie die fehlenden Abhängigkeiten:

# repoclosure --repoid=offline-httpd

Ich habe nicht herausgefunden, warum unter CentOS7 Dinge wie libssl.so.10(libssl.so.10)(64bit) in httpd-tools Fehlen, wenn openssl-libs-1.0.1e-51.el7_2.2.x86_64.rpm (Der Anbieter dieser Bibliothek) eindeutig im Verzeichnis vorhanden ist. Wenn Sie jedoch feststellen, dass etwas offensichtlich fehlt, ist dies möglicherweise eine gute Gelegenheit, es mit derselben yum install --downloadonly - Methode wie oben hinzuzufügen.

Wenn Sie offline sind oder das Repo-Verzeichnis /var/tmp/httpd Auf den anderen Server kopiert haben, richten Sie das Repo dort ein:

# vi /etc/yum.repos.d/offline-httpd.repo
[offline-httpd]
name=CentOS-$releasever - httpd
baseurl=file:///var/tmp/httpd
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
# yum --disablerepo=\* --enablerepo=offline-httpd install httpd

Hoffentlich keine fehlenden Abhängigkeiten!

41
Steve Bonds

Ich brauchte es mehrmals, also habe ich die Antwort von @Steve Bonds automatisiert. Stellen Sie nur sicher, dass Sie PKG als das Paket definieren, das auf beiden Computern installiert werden soll (Haftungsausschluss: für CentOS 7. Ändern Sie für CentOS 6 das --releasever und CentOS-7 Stelle.

Online-Maschine

PKG=... # NAME OF THE PACKAGE TO INSTALL ON OFFLINE MACHINE
yum install --downloadonly --installroot=/tmp/$PKG-installroot --releasever=7 --downloaddir=/tmp/$PKG $PKG
createrepo --database /tmp/$PKG
rm -rf /tmp/$PKG-installroot
rsync -arv /tmp/$PKG/ [IP of the machine]:/tmp/$PKG

auf Offline-Maschine :

PKG=... # NAME OF THE PACKAGE
echo "[offline-$PKG]
name=CentOS-\$releasever - $PKG
baseurl=file:///tmp/$PKG/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7" >  /etc/yum.repos.d/offline-$PKG.repo

# install package offline:
yum --disablerepo=\* --enablerepo=offline-$PKG install --nogpgcheck $PKG
5
shosaco

Anscheinend fragen Sie nach yumdownloader, das im Paket yum-utils Enthalten ist. Es gibt bereits einige Fragen und Antworten dazu, siehe z. Laden Sie alle Abhängigkeiten mit yumdownloader herunter, auch wenn sie bereits installiert sind? oder Wie finde ich Paket-URLs mit Yum?

yumdownloader lädt die Pakete herunter, generiert jedoch keine Datei Install.sh, da die Reihenfolge von yum selbst festgelegt werden kann, sodass Sie die Pakete über auf der Zielbox installieren können
yum install ./*rpm Im Ordner mit Ihren heruntergeladenen Paketen (der alle Abhängigkeiten im Vergleich zu einer Basisinstallation enthalten muss - siehe den ersten Link oben zu repotrack)

4
doktor5000