Descargue los paquetes RPM para el comando que ya está instalado

12

Tengo una máquina CentOS en la que ya instalé openssl-devel usando

$ yum install openssl-devel 

Descargó e instaló todos los paquetes de dependencia. Ahora necesito todos esos paquetes RPM. ¿Es posible descargar solo los paquetes RPM? Cuando hago esto:

 $ yum install  openssl-devel -y --downloadonly 

Dice

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

Ya está instalado.

¿Alguien sabe cómo descargar esos paquetes RPM en el mismo sistema?

abubacker
fuente

Respuestas:

13

Es posible descargar los paquetes de un RPM que ya está instalado con el --downloadonlyinterruptor. No estoy seguro de por qué yum no verifica esta configuración antes de verificar si el paquete ya está instalado, pero supongo que podría deberse a la arquitectura subyacente de la herramienta.

De todos modos, todo lo que necesita hacer es decirle a yum que reinstale el paquete:

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

Por supuesto, yum no sabrá qué dependencias se instalaron solo para este paquete, por lo que si toma los RPM e intenta instalarlos en un sistema diferente, es posible que falten algunas dependencias. Hay formas de explorar todo el gráfico de dependencia y estoy seguro de que esto ya se describió en otra parte de SE.

JohnEye
fuente
7

yumdownloaderin yum-utilsdescargará todos los paquetes que le pases, u opcionalmente generará las URL desde las que se pueden descargar los paquetes.

Ignacio Vazquez-Abrams
fuente
no está resolviendo dependencias, solo descarga openssl-
devel.x86_64.rpm
No, no resuelve dependencias. Pero, ¿qué tan atrás le gustaría que la herramienta resolviera las dependencias? glibc? filesystem?
Ignacio Vazquez-Abrams
1
mi requisito es sencilla, lo que necesito para obtener la lista de RPM, para instalarlo en otro equipo, que está en línea
abubacker
Dices "simple", pero en realidad no es tan simple como piensas. No existe una herramienta que resuelva las dependencias dada solo una lista de los paquetes que ya están instalados.
Ignacio Vazquez-Abrams
1
en realidad es simple, yum install openssl-devel -y --downloadonly si hago este comando en otra máquina, resolverá todas las dependencias, pero mi pregunta es si es posible hacer lo mismo en una máquina en la que instalamos ese comando ya
abubacker
3

Puede usar el comando repotrack del paquete yum-utils. Descargará todo el árbol de dependencias, incluso si ya está instalado .

Ejemplo:

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


Salida de muestra:

[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
Sami Badra
fuente
1
Retiré la nota sobre el error de arquitectura, ya que en realidad es el comportamiento esperado. (x86_64 es un superconjunto de i686, por lo que el comando también descarga paquetes i686) Consulte este y este artículo para obtener más información.
Sami Badra
2

Una posibilidad a largo plazo podría ser designar una máquina como la que se descargará de Internet, luego ejecutar NFS (o un servidor web) para exponer / var / cache / yum a los hosts internos.

Luego necesitaría actualizar su configuración de yum para agregar:

[main]
keepcache = 1

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

Una vez que habilitó el almacenamiento en caché, cada operación de yum puede descargar los datos del paquete de los repositorios configurados.

En términos más prácticos:

$ 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

Las otras respuestas realmente resolverán su problema inmediato, donde esto solo ayudará si ejecuta yum reinstalllos paquetes que ya tiene y desea RPM.

iwaseatenbyagrue
fuente
0

Esto es lo que hago:

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

Escasa
fuente