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-bare 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' andbarra-foo fornece beagle and my package works with either (or both); but other packages require eitheráguia orbeagle orfoo-bar orbar-foo`, e o sistema de destino pode ter um ou ambos instalados.
Atualmente, estou inclinado a resolver isso com um %prescript 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-barou whatrequires beagle.
ATUALIZAÇÃO: Pensando bem, a dor de exigir que as pessoas instalem foo-baronde 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-fooestiver 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 %postmexer diretamente com o banco de dados do RPM. Assim %prepoderia me proteger de um inválido instalar, e %postteria efeitos retroactivos dizer RPM que eu exigir quer foo-barou bar-fooou 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 %pree não tente derrotar o sistema . %post