RPM: Conjunto requerido: algún paquete> = 0.5.0 Y algún paquete <0.6.0


14

¿Es posible establecer requisitos de versión de dependencia como este:

Required: somepackage >= 0.5.0 AND somepackage < 0.6.0

Por lo tanto, solo algunos paquetes 0.5.x se instalarán automáticamente.

Respuestas:


18

Sí, muy fácil hacerlo.

Solo escribe:

Requires: somepackage >= 0.5.0, somepackage < 0.6.0

en tu .specarchivo.

Agregar requisitos de versión

Cuando un paquete tiene necesidades un poco más estrictas, es posible requerir ciertas versiones de un paquete. Todo lo que es necesario es agregar el número de versión deseado, precedido por uno de los siguientes operadores de comparación:

  • Requiere paquete con una versión inferior a la versión especificada.

  • Requiere paquete con una versión menor o igual a la versión especificada.

  • Requiere paquete con una versión igual a la versión especificada.

  • Requiere un paquete con una versión igual o mayor que la versión especificada.

  • Requiere paquete con una versión mayor que la versión especificada.

Continuando con nuestro ejemplo, supongamos que la versión requerida de la barra de paquetes realmente debe ser al menos 2.7, y que el paquete baz debe ser la versión 2.1; ninguna otra versión funcionará. Así es como se vería la línea de etiqueta requerida: requiere: barra> = 2.7, baz = 2.1

Fuente: http://rpm.org/user_doc/more_dependencies.html

Cuidado con las capacidades virtuales / proporciona

El sistema descrito anteriormente funciona para la mayoría de los paquetes; sin embargo, si el paquete que desea solicitar se proporciona como una [capacidad virtual] [1] o se proporciona de otra manera (es decir, "Proporciona:" palabra clave) mediante paquetes de diferentes nombres (que no entren en conflicto entre sí), entonces usted puede terminar con dos paquetes diferentes instalados, cada uno de los cuales satisface individualmente uno de sus requisitos. Por ejemplo, si su archivo de especificaciones contiene:

Requires: postgresql-server >= 8.4, postgresql-server < 9.0

Puede provocar (si tiene estos paquetes disponibles para yum) la instalación de:

  • postgresql-server 8.1.23-6.el5_8 (postgresql-server <9.0)
  • postgresql92-server 9.2.5-1PGDG.rhel5 (postgresql-server> = 8.4)

Pero no instalará postgresql84-server, que probablemente sea el paquete que habría esperado tener instalado.

(En este caso, la solución sería simplemente requerir postgresql84-server; sin embargo, es probable que haya otros ejemplos que no tengan una solución fácil).


Tenía una dependencia virtual en "somethingdev (name)> = 1.0.14" pero cuando fui a yum install ... la dependencia virtual no instaló la versión requerida a pesar de estar en el repositorio RPM. Tuve que cambiar la dependencia virtual al nombre del RPM "something-name-dev> = 1.0.14" y luego funcionó.
Trevor Boyd Smith

1

No está claro para mí si está intentando construir un paquete o instalar un paquete y "limitar" sus dependencias.

No veo una manera de hacer el segundo caso sin reconstruir el paquete.

Puede recuperar el SRPM y editar el archivo de especificaciones y agregar / modificar la entrada Requiere (desea un paquete 0.5.x, ¿no?) A algo como esto:

Requires: somepackage = 0.5.0

y luego reconstruir con

rpmbuild -bb -v yourpackage.spec

Si nunca lo hiciste, parece intimidante pero resuelve tu problema. Tenga en cuenta que si está creando un paquete público para una distribución, es posible que desee leer su guía porque generalmente no se recomienda establecer la dependencia de esta manera.


2
Realmente no puedo hablar por el OP, pero a veces quieres la actualización más reciente en una serie de versiones específica, no solo una versión específica. Por ejemplo, puede saber que desea Apache 2.2.x porque 2.4.x no funcionará correctamente con su paquete. Exigir específicamente 2.2.23 no permitiría instalar actualizaciones futuras en 2.2.x.
Alan Krueger
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.