Alguém sabe como (ou se pode) especificar um requisito alternativo ou conjunto de requisitos em um arquivo de especificação, em oposição a um único requisito?
Por exemplo, diga que existem dois pacotes disponíveis, convenientemente nomeados foo-bar
e bar-foo
. Meu pacote exige um desses, mas não ambos, e não me importo com qual deles esteja presente. Em tempo de execução, uso o que estiver disponível.
Tão eficazmente, eu gostaria de uma maneira de dizer:
Requires: foo-bar OR bar-foo
Até onde eu sei, isso não é possível, mas acho que há pessoas aqui que sabem muito mais sobre RPM do que eu, então talvez haja uma maneira de fazê-lo.
ATUALIZAÇÃO: Eu apenas controlo o empacotamento bar-foo
, não foo-bar
, portanto, ter ambos fornecendo um pacote virtual não funcionará.
ATUALIZAÇÃO: O que eu realmente preciso é um pacote virtual dentro de cada um dos pacotes. Digamos foo-bar provides eagle' and
barra-foo fornece beagle and my package works with either (or both); but other packages require either
águia or
beagle or
foo-bar or
bar-foo`, e o sistema de destino pode ter um ou ambos instalados.
Atualmente, estou inclinado a resolver isso com um %pre
script que faz algo como:
rpm -q eagle || rpm -q beagle || echo "need eagle or beagle" && /bin/false
Embora tenha certeza de que funcionaria, parece uma brutal evasão ao rastreamento de dependências do RPM. Por exemplo, você nunca veria meu pacote quando pedisse whatrequires foo-bar
ou whatrequires beagle
.
ATUALIZAÇÃO: Pensando bem, a dor de exigir que as pessoas instalem foo-bar
onde elas não podem é menor que a dor de contornar o gerenciamento de dependências de RPM, pelo menos para a minha situação. Portanto, a menos que alguém encontre uma maneira de exigir adequadamente "isto ou aquilo" (o que eu acho que seria um ótimo recurso para o RPM em geral), planejo exigir apenas foo-bar
e, em tempo de execução, se bar-foo
estiver disponível, vou escolher entre de acordo com os critérios que eu precisar.
UPDATE: outra idéia, que também estaria enganando o RPM, mas poderia colocar as coisas no estado certo. Talvez eu pudesse %post
mexer diretamente com o banco de dados do RPM. Assim %pre
poderia me proteger de um inválido instalar, e %post
teria efeitos retroactivos dizer RPM que eu exigir quer foo-bar
ou bar-foo
ou ambos, dependendo do que está lá quando eu instalar.
Obrigado pelas sugestões!
Provides: foo-bar
, para satisfazer as duas dependências. Para versões mais recentes do rpm, verifique Dependências booleanas . Fique longe de seções %pre
e não tente derrotar o sistema . %post