Télécharger les packages RPM pour la commande déjà installée


12

J'ai une machine CentOS dans laquelle j'ai déjà installé openssl-devel en utilisant

$ yum install openssl-devel 

Il a téléchargé et installé tous les packages de dépendances. Maintenant, j'ai besoin de tous ces packages RPM. Est-il possible de télécharger uniquement les packages RPM? Quand je fais ça:

 $ yum install  openssl-devel -y --downloadonly 

Ça dit

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

car il est déjà installé.

Quelqu'un sait-il comment télécharger ces packages RPM sur le même système?

Réponses:


13

Il est possible de télécharger les packages d'un RPM déjà installé à l'aide du --downloadonlycommutateur. Je ne sais pas pourquoi yum ne vérifie pas ce paramètre avant de vérifier si le package est déjà installé, mais je suppose que cela pourrait être dû à l'architecture sous-jacente de l'outil.

Quoi qu'il en soit, tout ce que vous devez faire est de dire à yum de réinstaller le package:

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

Bien sûr, yum ne saura pas quelles dépendances ont été installées uniquement pour ce package, donc si vous prenez les RPM et essayez de les installer sur un système différent, certaines dépendances peuvent être manquantes. Il existe des moyens d'explorer l'ensemble du graphique des dépendances et je suis sûr que cela a déjà été décrit ailleurs sur SE.


7

yumdownloaderin yum-utilstélécharge tous les packages que vous lui transmettez ou génère éventuellement les URL à partir desquelles les packages peuvent être téléchargés.


ses dépendances ne résolvent pas, il suffit de télécharger openssl-devel.x86_64.rpm
abubacker

Non, cela ne résout pas les dépendances. Mais jusqu'où voudriez-vous que l'outil résout les dépendances? glibc? filesystem?
Ignacio Vazquez-Abrams

1
mon exigence est simple, j'ai besoin d'obtenir la liste des rpms, pour l'installer sur une autre machine, qui est en mode hors connexion
abubacker

Vous dites "simple", mais ce n'est pas aussi simple que vous le pensez. Il n'y a aucun outil qui résoudra les dépendances étant donné juste une liste des packages déjà installés.
Ignacio Vazquez-Abrams

1
en fait, c'est simple, yum install openssl-devel -y --downloadonly si je fais cette commande sur une autre machine, cela résoudra toutes les dépendances, mais ma question est de savoir s'il est possible de faire de même dans une machine sur laquelle nous avons installé cette commande déjà
abubacker

3

Vous pouvez utiliser la commande repotrack du package yum-utils. Il télécharge la totalité de l'arborescence des dépendances - même si elle est déjà installée .

Exemple:

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


Exemple de sortie:

[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
J'ai retiré la note sur le bogue d'architecture car il s'agit en fait du comportement attendu. (x86_64 est un surensemble de i686, c'est pourquoi la commande télécharge également les packages i686) Voir ceci et cet article pour plus d'informations.
Sami Badra

2

Une possibilité à plus long terme pourrait être de désigner une machine comme celle à télécharger à partir d'Internet, puis d'exécuter NFS (ou un serveur Web) dessus pour exposer / var / cache / yum aux hôtes internes.

Vous devrez ensuite mettre à jour votre configuration yum, pour ajouter:

[main]
keepcache = 1

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

Une fois que vous avez activé la mise en cache, chaque opération yum peut télécharger des données de package à partir des référentiels configurés.

En termes plus pratiques:

$ 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

Les autres réponses résoudront en fait votre problème immédiat, où cela ne vous sera utile que si vous exécutez yum reinstallpour les packages que vous avez déjà et souhaitez des RPM.


0

Voici ce que je fais:

sudo yum install --config =. / yum.conf --installroot = / tmp / f541Sdex --downloadonly --downloaddir / tmp / DL-e25xds $ (liste de packages cat)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.