For Fun and Profit

Testando a distribuição na spec de um RPM

Eventualmente é preciso testar, no arquivo de spec de um RPM, qual a distribuição na qual está sendo gerado o rpm, desta maneira tornando possível modificar, por exemplo, as dependências de um pacote de acordo com a distribuição. A solução não é das mais limpas, uma vez que é preciso criar uma macro para cada distribuição, mas funciona para os casos mais simples.

A solução que encontrei foi a seguinte:


1) Crie as macros para testar as distribuições desejas:

PLAIN TEXT
CODE:
  1. %define is_suse %(test -e /etc/SuSE-release && echo 1 || echo 0)
  2. %define is_fedora %(test -e /etc/fedora-release && echo 1 || echo 0)

Note que apenas é testada a existência dos arquivos de release das respectivas distribuições.

2) Teste as variáveis e defina os resultados:

PLAIN TEXT
CODE:
  1. %if %is_suse
  2. %define macro valor-01
  3. %endif
  4.  
  5. %if %is_fedora
  6. %define macro valor-01 valor-02 ... valor-n
  7. %endif

3) Pronto, agora você pode usar %macro aonde os valores forem diferentes, de acordo com %is_suse ou %is_fedora.

Podemos usar como exemplo a seção "Requires" da spec do RPM:

PLAIN TEXT
CODE:
  1. %if %is_suse
  2. %define dist_require /sbin/ldconfig
  3. %endif
  4.  
  5. %if %is_fedora
  6. %define dist_require /sbin/ldconfig initscripts
  7. %endif
  8.  
  9. # outra seções
  10. ...
  11. Requires: %{dist_require}

A solução é extremamente simples, embora não seja muito prática caso seja necessário suportar diversas distribuições no mesmo spec.

Referência: spec file example.

Esta entrada foi postada em Wednesday, January 3rd, 2007 at 8:19 am na categoria Desenvolvimento, Tecnologia. Você pode acompanhar as respostas através do RSS 2.0 feed. Você pode deixar uma resposta, ou um trackback do seu site.

« Guia de migração de Unix para Windows
Furando o bloqueio ao youtube »

Comentar

  • Páginas

    • Sobre
    • Meu Mundo de TI
      • Artigos
      • Filesystem Hierarchy Standard
      • Pacotes RPM (RPM Packages)
      • Screenshots
    • Variedades
      • Fotos
      • Mapas
      • Museu do IRC RioMafrense
      • Receitas
  • Arquivos

    • December 2008
    • November 2008
    • October 2008
    • September 2008
    • August 2008
    • July 2008
    • June 2008
    • May 2008
    • April 2008
    • March 2008
    • February 2008
    • January 2008
    • November 2007
    • October 2007
    • September 2007
    • June 2007
    • April 2007
    • March 2007
    • February 2007
    • January 2007
    • December 2006
    • November 2006
    • October 2006
    • September 2006
    • August 2006
    • July 2006
    • June 2006
    • May 2006
    • April 2006
    • March 2006
    • February 2006
    • January 2006
  • Categorias

    • Ciência (4)
    • Dica (21)
    • Geral (69)
      • Curiosidades (6)
    • Mentes Brilhantes (1)
    • Sistemas Operacionais (37)
      • FreeBSD (1)
      • Linux (19)
        • Arch Linux (2)
        • Gentoo (13)
      • Mac OS X (11)
      • Outros Sistemas (1)
      • Unix (4)
      • Windows (2)
    • Tecnologia (84)
      • Banco de Dados (6)
      • Desenvolvimento (62)
        • Análise (1)
        • C & C++ (5)
        • POG (2)

For Fun and Profit is proudly powered by WordPress | Bob