Ich habe zwei CentOS-Maschinen, eine 6.3-Box ( A ) und eine weitere CentOS 6.1. ( B )
6.3 Box ist mit Internetverbindung, 6.1 Box ist ohne Internetverbindung.
Ich möchte ALLE Abhängigkeiten eines Produkts von Box A herunterladen, dann diese n Box B kopieren und das Produkt installieren.
Ich habe es mit versucht
yum --downloadonly --downloaddir=*~/downloadrepo* -y install *product*`
cd *~/downloadrepo*
createrepo .
Dann habe ich alle Repos (mit --disablerepo) außer meinem Repo deaktiviert und das Produkt auf demselben Computer installiert (Box A). Keine Fehler.
yum install *product*
Wenn ich dieses Repo in Box B kopiere und versuche, es mit demselben Befehl zu installieren, wird es installiert, es werden jedoch viele Fehler wie folgt angezeigt:
Fehler: Fehlende Abhängigkeit: libldap-2.3.so.0 () (64 Bit) wird vom Paket php-ldap-5.1.6-27.el5_5.3.x86_64 (installiert) benötigt.
Wie kann ich auf irgendeine Weise erreichen, was ich brauche?
AKTUALISIEREN
Als ich anfing, mit der von @rkosegi vorgeschlagenen Option ( --releasever = version ) zu arbeiten, erhielt ich eine neue Box mit derselben Version von CentOS 6.1 ( C ).
Ich habe die oben genannten Befehle in Box C ausprobiert und sie in Box B kopiert. Trotzdem ist sie fehlgeschlagen. Der Grund: Obwohl beide Felder 6.1 sind, sind diese nicht identisch ( uname -r gibt unterschiedliche Zeichenfolgen zurück).
Yum lädt keine Abhängigkeiten herunter, sofern diese bereits installiert sind. Mein Repo enthielt also einige der Abhängigkeiten (einschließlich OpenJDK) nicht. Wenn ich also versuche, auf Box B zu installieren, schlägt dies fehl.
Ziemlich frustrierend !!!
Aber dann habe ich hier den Befehl ' repotrack ' gefunden .
cd ~/downloadrepo
repotrack -p . -a x86_64 product
createrepo .
Ich habe viel mehr Dateien als mit yum, hoffentlich reicht es.
Ich werde aktualisieren, sobald ich versuche zu installieren.
AKTUALISIEREN
Command Repotrack hat bei mir nicht funktioniert. Beim Versuch, aus einem mit 'repotrack' erstellten Repository zu installieren, wurden folgende Fehler angezeigt:
Error: Package: perl-CGI-3.51-127.el6.x86_64 (repo-local)
Requires: perl = 4:5.10.1-127.el6
Installed: 4:perl-5.10.1-119.el6_1.1.x86_64 (@anaconda-CentOS-201112102333.x86_64/6.2)
perl = 4:5.10.1-119.el6_1.1
Error: Package: audit-libs-python-2.2-2.el6.x86_64 (repo-local)
Requires: audit-libs = 2.2-2.el6
Installed: audit-libs-2.1.3-3.el6.x86_64 (@anaconda-CentOS-201112102333.x86_64/6.2)
audit-libs = 2.1.3-3.el6
Ich habe versucht, diese beiden Dateien aus dem Ordner zu entfernen und das Repository mit 'createrepo' neu zu erstellen. Es gab eine weitere Reihe von Fehlern.
Ich bin mir nicht sicher, welche Optionen ich im Moment habe ...
quelle
Antworten:
Wenn Sie dies häufig tun müssen, sollten Sie sich die Zeit nehmen, um Spacewalk einzurichten . Es wird das Erstellen des Repositorys automatisieren und es mit den entsprechenden Paketen (oder, wenn Sie möchten, allen) füllen. Ganz zu schweigen von allem anderen, was es tut ...
quelle
Sie müssen yum anweisen, aus dem Repository der gleichen Version wie der Zielcomputer (6.1) herunterzuladen.
Stellen Sie außerdem sicher, dass auf dem Computer (6.3), der den Download ausführt, einige Abhängigkeiten, die auf dem Zielcomputer (6.1) fehlen, noch nicht installiert sind.
quelle
Wenn Sie keine "saubere" Maschine bekommen können, müssen Sie entweder manuell mit
yum provides
oder nach den fehlenden Teilen suchenSie müssen Ihre RPMs, die sich bereits in Ihrem Repo befinden, durchgehen und ihre Abhängigkeiten abfragen :
rpm -qp --requires RPM
. Wenn diese Liste etwas Neues enthält, das noch nicht Teil Ihres Repos ist, müssen Sie es hinzufügen.quelle