Laden Sie RPM-Pakete für den Befehl herunter, der bereits installiert ist


11

Ich habe einen CentOS-Rechner, auf dem ich openssl-devel bereits installiert habe

$ yum install openssl-devel 

Es wurden alle Abhängigkeitspakete heruntergeladen und installiert. Jetzt brauche ich all diese RPM-Pakete. Ist es möglich, nur die RPM-Pakete herunterzuladen? Wenn ich das mache:

 $ yum install  openssl-devel -y --downloadonly 

Es sagt

Package 1:openssl-devel-1.0.1e-4.fc18.x86_64 already installed and latest version

da es schon installiert ist.

Weiß jemand, wie man diese RPM-Pakete auf dasselbe System herunterlädt?

Antworten:


12

Es ist möglich, die Pakete eines RPM herunterzuladen, das bereits über den --downloadonlySwitch installiert wurde . Ich bin nicht sicher, warum yum diese Einstellung nicht überprüft, bevor überprüft wird, ob das Paket bereits installiert ist, aber ich denke, es könnte durch die zugrunde liegende Architektur des Tools verursacht werden.

Alles, was Sie tun müssen, ist yum zu sagen, dass es das Paket neu installieren soll :

yum --downloadonly --downloaddir=/tmp/rpm_files/ reinstall package_name

Natürlich weiß yum nicht, welche Abhängigkeiten nur für dieses Paket installiert wurden. Wenn Sie also die RPMs verwenden und versuchen, sie auf einem anderen System zu installieren, fehlen möglicherweise einige Abhängigkeiten. Es gibt Möglichkeiten, das gesamte Abhängigkeitsdiagramm zu untersuchen, und ich bin sicher, dass dies bereits an anderer Stelle in SE beschrieben wurde.


7

yumdownloaderIn yum-utilslädt alle Pakete herunter, die Sie an das Paket übergeben, oder generiert optional die URLs, von denen die Pakete heruntergeladen werden können.


Es löst keine Abhängigkeiten auf, es lädt einfach
openssl

Nein, Abhängigkeiten werden nicht aufgelöst. Aber wie weit zurück soll das Tool die Abhängigkeiten auflösen? glibc? filesystem?
Ignacio Vazquez-Abrams

1
Meine Anforderung ist einfach, ich muss die Liste der RPMs erhalten, um sie auf einem anderen Computer zu installieren, der offline ist
abubacker

Sie sagen "einfach", aber es ist eigentlich nicht so einfach, wie Sie denken. Es gibt kein Tool, das Abhängigkeiten auflöst, wenn nur eine Liste der bereits installierten Pakete angegeben wird.
Ignacio Vazquez-Abrams

1
Eigentlich ist es einfach, yum install openssl-devel -y --downloadonly Wenn ich diesen Befehl auf einem anderen Computer ausführe, werden alle Abhängigkeiten aufgelöst, aber meine Frage ist, ob es möglich ist, dasselbe auf einem Computer zu tun, auf dem wir diesen Befehl installiert haben schon
abubacker

3

Sie können den Befehl repotrack aus dem Paket yum-utils verwenden. Es wird der gesamte Abhängigkeitsbaum heruntergeladen - auch wenn er bereits installiert ist .

Beispiel:

sudo yum install yum-utils      # Install yum-utils
sudo repotrack openssl-devel    # Download all dependencies for openssl-devel


Beispielausgabe:

[sbadra@rhel6 ~]$ sudo yum install openssl-devel
Loaded plugins: product-id, search-disabled-repos, subscription-manager
Setting up Install Process
Package openssl-devel-1.0.1e-57.el6.x86_64 already installed and latest version
Nothing to do

[sbadra@rhel6 ~]$ sudo repotrack openssl-devel
Downloading audit-libs-2.4.5-6.el6.x86_64.rpm
Downloading audit-libs-2.4.5-6.el6.i686.rpm
Downloading basesystem-10.0-4.el6.noarch.rpm
Downloading bash-4.1.2-48.el6.x86_64.rpm
Downloading ca-certificates-2017.2.14-65.0.1.el6_9.noarch.rpm
Downloading chkconfig-1.3.49.5-1.el6.x86_64.rpm
Downloading coreutils-8.4-46.el6.x86_64.rpm
Downloading coreutils-libs-8.4-46.el6.x86_64.rpm
.... more packages ....
Downloading openssl-1.0.1e-57.el6.i686.rpm
Downloading openssl-1.0.1e-57.el6.x86_64.rpm
Downloading openssl-devel-1.0.1e-57.el6.i686.rpm
Downloading openssl-devel-1.0.1e-57.el6.x86_64.rpm
.... more packages ....
Downloading sed-4.2.1-10.el6.x86_64.rpm
Downloading setup-2.8.14-23.el6.noarch.rpm
Downloading tzdata-2018c-1.el6.noarch.rpm
Downloading zlib-1.2.3-29.el6.x86_64.rpm
Downloading zlib-1.2.3-29.el6.i686.rpm
Downloading zlib-devel-1.2.3-29.el6.i686.rpm
Downloading zlib-devel-1.2.3-29.el6.x86_64.rpm

1
Ich habe den Hinweis zum Architekturfehler zurückgezogen, da es sich tatsächlich um das erwartete Verhalten handelt. (x86_64 ist eine Obermenge von i686, weshalb der Befehl auch i686-Pakete herunterlädt.) Weitere Informationen finden Sie in diesem und diesem Artikel.
Sami Badra

2

Eine Möglichkeit auf längere Sicht könnte darin bestehen, einen Computer als den Computer zu bestimmen, der aus dem Internet heruntergeladen werden soll, und dann NFS (oder einen Webserver) darauf auszuführen, um / var / cache / yum den internen Hosts zur Verfügung zu stellen.

Sie müssten dann Ihre yum-Konfiguration aktualisieren, um Folgendes hinzuzufügen:

[main]
keepcache = 1

Per https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Working_with_Yum_Cache.html :

Sobald Sie das Caching aktiviert haben, kann jeder yum-Vorgang Paketdaten aus den konfigurierten Repositorys herunterladen.

Praktischer ausgedrückt:

$ sudo yum install -y nginx
$ sudo find /var/cache/yum/ -type f -name '*.rpm'
<...snip....>
/var/cache/yum/x86_64/7/epel/packages/nginx-1.10.2-1.el7.x86_64.rpm

Die anderen Antworten lösen tatsächlich Ihr unmittelbares Problem, bei dem dies nur hilft, wenn Sie yum reinstallfür die bereits vorhandenen Pakete ausgeführt werden und RPMs für möchten.


0

Folgendes mache ich:

sudo yum install --config =. / yum.conf --installroot = / tmp / f541Sdex --downloadonly --downloaddir / tmp / DL-e25xds $ (Cat-Liste der Pakete)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.