RPM: Set Requerido: somepackage = 0.5.0 AND somepackage 0.6.0

11

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

Required: somepackage >= 0.5.0 AND somepackage < 0.6.0

Assim, apenas o somepackage 0.5.x será instalado automaticamente.

    
por coxx 26.07.2012 / 15:19

2 respostas

15

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

Basta escrever:

Requires: somepackage >= 0.5.0, somepackage < 0.6.0

no seu arquivo .spec .

Adding Version Requirements

When a package has slightly more stringent needs, it's possible to require certain versions of a package. All that's necessary is to add the desired version number, preceded by one of the following comparison operators:

  • Requires package with a version less than the specified version.

  • Requires package with a version less than or equal to the specified version.

  • Requires package with a version equal to the specified version.

  • Requires package with a version equal to or greater than the specified version.

  • Requires package with a version greater than the specified version.

Continuing with our example, let's suppose that the required version of package bar actually needs to be at least 2.7, and that the baz package must be version 2.1 — no other version will do. Here's what the requires tag line would look like: requires: bar >= 2.7, baz = 2.1

Fonte: link

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 [recurso virtual] [1] ou fornecido (isto é, "Fornece:" palavra-chave) por pacotes de nomes diferentes (que não conflitam uns com os outros), então você pode acabar com dois pacotes diferentes instalados, cada um dos quais individualmente satisfazem um dos 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ê esperava ter instalado.

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

    
por 26.07.2012 / 18:15
1

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

Não vejo como fazer 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ê quer um pacote de som 0.5.x, não é?) para algo assim:

Requires: somepackage = 0.5.0

e, em seguida, reconstrua com

rpmbuild -bb -v yourpackage.spec

Se você nunca fez isso, parece intimidante, mas resolve o seu problema. Lembre-se de que, se estiver criando um pacote público para uma distribuição, talvez você queira ler sua orientação, pois geralmente não é recomendável definir dependências dessa maneira.

    
por 26.07.2012 / 17:38

Tags