Como instalar dependências do módulo Python do meu RPM?

2

Eu tenho um aplicativo que estou empacotando como um RPM e instalando no CentOS 7. Quando eu instalar o RPM, eu quero que ele instale alguns binários compilados, assim como alguns módulos Python com suas dependências.

Meus módulos Python exigem uma versão mais nova do Python do que a fornecida pelo CentOS, portanto, instalarei os módulos em um altinstall do Python em /usr/local/lib/python2.7/site-packages . Isso significa que não posso usar RPMs fornecidos pelo CentOS, pois eles são instalados em /usr/lib . Eu posso instalar facilmente os módulos em /usr/local/lib usando pip .

Existe uma maneira de empacotar meu aplicativo de forma que:

  • Eu posso instalar meu aplicativo a partir de um RPM.
  • Meus módulos Python são instalados em /usr/local/lib quando o aplicativo é instalado.
  • Quaisquer dependências do Python também são instaladas.
  • Evito manter pacotes RPM para as dependências do Python.

Existe uma convenção para esse tipo de coisa? Ou existem alguns exemplos? Eu não vi nada diretamente relevante em documentação do Fedora Python Packaging .

As opções que eu considerei são:

  1. Agrupe meu aplicativo, módulos Python e todas as dependências do Python em um RPM.

    Eu não gosto dessa opção porque não seria capaz de atualizar dependências individuais no sistema cliente sem atualizar meu aplicativo inteiro para uma nova versão.

  2. Crie RPMs individuais para meu aplicativo, meus módulos Python e dependências de terceiros.

    Eu não gosto dessa opção porque eu teria que manter os RPMs para cada módulo de terceiros na minha árvore de dependências.

  3. Chame pip de dentro do meu RPM.

    Eu não gosto dessa opção porque o RPM não seria capaz de rastrear as alterações que o pip faz, e eu não seria capaz de determinar se eu posso remover com segurança módulos Python de terceiros ao remover o RPM. / p>

por M. Dudley 11.12.2015 / 22:52

1 resposta

0

Usando as Coleções de Software, você pode ter uma nova versão dos módulos no sistema antigo ou em módulos antigos no novo sistema. Vejo: link

    
por 12.12.2015 / 17:18