¿Alguien sabe cómo (o si se puede) especificar un requisito alternativo o un conjunto de requisitos en un archivo de especificaciones, en lugar de un solo requisito?
Por ejemplo, digamos que hay dos paquetes disponibles, convenientemente nombrados foo-bar
y bar-foo
. Mi paquete requiere uno de estos pero no ambos, y no me importa cuál esté presente. En tiempo de ejecución utilizo el que esté disponible.
Así que efectivamente me gustaría una manera de decir:
Requires: foo-bar OR bar-foo
Por lo que puedo decir, eso no es posible, pero creo que hay personas aquí que saben mucho más sobre RPM que yo, así que tal vez haya una manera de hacerlo.
ACTUALIZACIÓN: solo controlo el empaque de bar-foo
, no foo-bar
, así que tener ambos proporcionar un paquete virtual no funcionará.
ACTUALIZACIÓN: Lo que realmente necesito es en sí un paquete virtual dentro de cada uno de los paquetes. Digamos que foo-bar provides eagle' and
bar-foo proporciona beagle and my package works with either (or both); but other packages require either
eagle or
beagle or
foo-bar or
bar-foo`, y el sistema de destino puede tener uno o ambos instalados.
Actualmente me estoy inclinando a resolver esto con un %pre
script que hace algo como:
rpm -q eagle || rpm -q beagle || echo "need eagle or beagle" && /bin/false
Si bien estoy bastante seguro de que funcionaría, parece una elusión brutal del seguimiento de dependencias de RPM. Por ejemplo, nunca verías mi paquete cuando lo preguntaste whatrequires foo-bar
o whatrequires beagle
.
ACTUALIZACIÓN: Pensándolo bien, el dolor de exigir a las personas que instalen foo-bar
donde no pueden ser menos que el dolor de eludir la gestión de la dependencia de RPM, al menos para mi situación. Entonces, a menos que a alguien se le ocurra una forma de requerir adecuadamente "esto O aquello" (lo cual creo que sería una gran característica para tener en general en RPM), planeo requerir solo foo-bar
y luego, en tiempo de ejecución, si bar-foo
está disponible, elegiré entre ellos de acuerdo a cualquier criterio que necesite.
ACTUALIZACIÓN: otra idea, que también sería engañar a RPM pero podría llevar las cosas al estado correcto. Tal vez podría, en %post
, jugar con la base de datos de RPM directamente. Por lo tanto %pre
me pudiera proteger de un inválido de instalar, y %post
diría retroactivamente RPM que requiero ya sea foo-bar
o bar-foo
o ambos, dependiendo de lo que está allí cuando lo instale.
Gracias por las sugerencias!
Provides: foo-bar
, de modo que satisfaga ambas dependencias. Para versiones más recientes de rpm, verifique las dependencias booleanas . Manténgase alejado de los %pre
y las %post
secciones, no trate de anular el sistema .