yum instalar paquete sin actualizar otros paquetes o fallar ...?

10

¿Hay alguna manera de decirle yumque instale un paquete, seleccionando una versión de ese paquete que sería satisfecha por las dependencias instaladas actualmente?

Por ejemplo, si estoy instalando un paquete pecl y actualmente lo he instalado php-5.4.11pero hay uno más nuevo php-5.4.14disponible. En lugar de instalar el nuevo paquete (y actualizar todos los paquetes php a 5.4.14) solo quiero que seleccione una versión anterior del paquete que solicité que se instale sin actualizar todos los demás (o falla si esto no se puede hacer).

Este es un caso específico en el que sé que podría excluir o corregir el paquete php, pero estoy buscando una opción genérica que se aplique a cualquier instalación.

Algo como:

yum install php-pecl-xxxx --no-updates
Sacerdote Clint
fuente

Respuestas:

10

Solución temporal:

Usar -Cbandera:

sudo yum install foobar -C

Solución permanente:

Use la metadata_expirebandera en su yum.conf para controlar esto.

Editar /etc/yum.confy configurar

metadata_expire=15d

Puede usar d, h o m para configurar el tiempo en días, horas o minutos .

Bonificación: aquí está la documentación:

metadata_expire es el tiempo (en segundos) después del cual caducarán los metadatos. De modo que si los metadatos actuales descargados tienen menos de estos segundos, yum no actualizará los metadatos en el repositorio. Si encuentra que yum no está descargando información sobre actualizaciones con la frecuencia que desea, disminuya el valor de esta opción. También puede cambiar el valor predeterminado de usar segundos para usar días, horas o minutos agregando anuncios, ho m respectivamente. El valor predeterminado es 6 horas, para complementar la ejecución de yum-updatesd una vez por hora. También es posible usar la palabra "nunca", lo que significa que los metadatos nunca caducarán. Tenga en cuenta que cuando se utiliza un archivo metalink, el metalink siempre debe ser más nuevo que los metadatos para el repositorio, debido a la validación, por lo que este tiempo de espera también se aplica al archivo metalink. También tenga en cuenta que "nunca" no anula "yum clean expire-cache"

Shubham Chaudhary
fuente
0

No he encontrado ninguna de estas opciones a partir de ahora. Sin embargo, si desea instalar el paquete sin actualizarlo, le recomendaría descargar un rpm de la misma versión y luego instalarlo.

Aazim Parkar
fuente
0

En el yum-utilspaquete hay una herramienta llamada yumdownloader. Puede usarlo para descargar desde repos sin instalar. Se --disablerepoaplican todos los interruptores estándar como . Vea la página del manual para más información.

Creo que puede descargar el RPM y luego hacer lo que quiera usando RPM directamente.

slm
fuente
1
Esto es parte de un sistema de instalación automática de paquetes, el problema es que no queremos que yum 'instale lo último' y 'actualice todo lo que se necesita'. Realmente solo queremos que instale una versión del paquete que sea compatible con lo que ya está instalado. Básicamente una opción de instalar solo o instalar xxx -no-actualizaciones.
Clint Priest
0

Si la versión anterior del paquete todavía está en sus repositorios de yum, puede ejecutarla yum install packagename-version-release.arche instalará la versión anterior sin intentar actualizar a la última versión. Tendrá que usar el nombre completo, la versión, la versión y el arco si hay varias versiones y arquitecturas en su repositorio de yum. Puede obtener toda esa información ejecutándose yum list available 'packagename*'para buscar todos los paquetes que comiencen con 'nombre de paquete'. Si ha logrado actualizar sus paquetes y desea volver a la versión anterior, puede ejecutar yum downgrade packagename1 packagename2. Deberá incluir la lista de todos los paquetes que desea degradar, ya que probablemente incluirá muchas dependencias.

Si la versión anterior no está en su repositorio de yum, simplemente descárguela desde donde haya encontrado el paquete anterior e instálela yum install /path/to/package.rpm, aunque me gustaría evitar instalar paquetes de fuentes no confiables.

jsbillings
fuente
Pero sería mucho más útil si yumpudiera elegir la última versión compatible disponible.
forcefsck
Puede, pero depende del empaquetador definir los requisitos que sean apropiados.
jsbillings
A veces, los requisitos están cubiertos con un paquete anterior, pero yum insiste en elegir solo el último. P.ej. en el caso descrito anteriormente, debería ser posible que yum seleccione automáticamente php-pecl-5.4.11 si la versión del sistema está bloqueada a php-5.4.11. Puede ser un problema para la automatización.
forcefsck
Yum solo se actualizará a la última versión si no hay dependencias en la versión anterior. En el caso anterior, el requisito de versión nunca fue requerido por el paquete pecl. Yum no puede leer su mente y elegir una versión arbitraria a menos que indique qué versión requiere o bloqueando los paquetes pecl y php.
jsbillings
Para este ejemplo específicamente, siempre y cuando php no sea actualizable (ya sea versión bloqueada o no hay paquetes más nuevos disponibles en repositorios), yum podría seleccionar la última versión de pecl que no requiera una actualización de php. No es exactamente una lectura mental, creo que apt-get ya hace esto. Nuevamente, este es un problema para la automatización cuando necesita instalar un paquete adicional sin actualizar la mitad de su sistema y necesita que sea lo suficientemente inteligente como para manejar la solicitud, es decir, si existen varias versiones, elija la última versión compatible con los paquetes ya instalados que por cualquier razón no se puede actualizar.
forcefsck