RPM: Set Necessário: somepackage> = 0.5.0 AND somepackage <0.6.0

14

É possível definir requisitos de versão de dependência como este:

Required: somepackage >= 0.5.0 AND somepackage < 0.6.0

Portanto, apenas algum pacote 0.5.x será instalado automaticamente.

coxx
fonte

Respostas:

18

Sim, é muito fácil fazê-lo.

Apenas escreva:

Requires: somepackage >= 0.5.0, somepackage < 0.6.0

no seu .specarquivo.

Adicionando requisitos de versão

Quando um pacote tem necessidades um pouco mais rigorosas, é possível exigir determinadas versões de um pacote. Tudo o que é necessário é adicionar o número da versão desejada, precedido por um dos seguintes operadores de comparação:

  • Requer pacote com uma versão menor que a versão especificada.

  • Requer pacote com uma versão menor ou igual à versão especificada.

  • Requer pacote com uma versão igual à versão especificada.

  • Requer pacote com uma versão igual ou superior à versão especificada.

  • Requer pacote com uma versão maior que a versão especificada.

Continuando com o nosso exemplo, vamos supor que a versão exigida da barra de pacotes realmente precise ser pelo menos 2,7 e que o pacote baz deve ser a versão 2.1 - nenhuma outra versão servirá. Aqui está como seria a linha de tag de requisitos: require: bar> = 2.7, baz = 2.1

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

Cuidado com os Recursos Virtuais / Fornece

O sistema descrito acima funciona para a maioria dos pacotes; no entanto, se o pacote que você deseja exigir for fornecido como uma [capacidade virtual] [1] ou for fornecido de outra forma (por exemplo, "Fornece:" palavra-chave)) por pacotes de nomes diferentes (que não entrem em conflito), você pode acabar com dois pacotes diferentes instalados, cada um deles satisfazendo individualmente um de seus requisitos. Por exemplo, se o seu arquivo de especificação contiver:

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

Pode resultar em (se você tiver esses pacotes disponíveis para o yum) a instalação de:

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

Mas não instalará o postgresql84-server, que é provavelmente o pacote que você esperaria ter instalado.

(Nesse caso, a solução seria simplesmente exigir o postgresql84-server; no entanto, provavelmente existem outros exemplos que não têm uma solução fácil.)

MikeyB
fonte
eu tinha uma dependência virtual em "somethingdev (name)> = 1.0.14" mas quando fui para o yum install ... a dependência virtual não instalou a versão necessária, apesar de estar no repositório do RPM. Eu tive que mudar a dependência virtual para o nome do RPM "something-name-dev> = 1.0.14" e funcionou.
Trevor Boyd Smith
1

Não está claro para mim se você está tentando criar um pacote ou instalar um pacote e "limitar" suas dependências.

Não vejo uma maneira de apresentar o segundo caso sem reconstruir o pacote.

Você pode recuperar o SRPM e editar o arquivo de especificações e adicionar / modificar a entrada Requer (você deseja algum pacote 0.5.x, não é?) Para algo assim:

Requires: somepackage = 0.5.0

e depois reconstrua com

rpmbuild -bb -v yourpackage.spec

Se você nunca fez isso, parece intimidador, mas resolve o seu problema. Lembre-se de que, se você estiver criando um pacote público para uma distribuição, talvez queira ler sua diretriz, pois a dependência definida dessa maneira geralmente não é recomendada.

sebelk
fonte
2
Eu realmente não posso falar pelo OP, mas às vezes você deseja a atualização mais recente em uma série de versões específica, não apenas uma versão específica. Por exemplo, você pode saber que deseja o Apache 2.2.x porque o 2.4.x não funcionará corretamente com o seu pacote. A exigência específica de 2.2.23 não permitiria a instalação de futuras atualizações no 2.2.x.
Alan Krueger