Red Hat Training

A Red Hat training course is available for RHEL 8

3.3.2. Construindo RPMs binários

Os seguintes métodos são viáveis para a construção de RPMs binários:

  • Reconstruindo um RPM binário a partir de um RPM fonte
  • Construção de um RPM binário a partir do arquivo da SPEC
  • Construção de um RPM binário a partir de um RPM de origem

3.3.2.1. Reconstruindo um RPM binário a partir de um RPM fonte

O procedimento a seguir mostra como reconstruir um RPM binário a partir de um RPM fonte (SRPM).

Procedimento

  • Para reconstruir bello, pello e cello a partir de suas SRPMs, executar:

    $ rpmbuild --rebuild ~/rpmbuild/SRPMS/bello-0.1-1.el8.src.rpm
    [output truncated]
    
    $ rpmbuild --rebuild ~/rpmbuild/SRPMS/pello-0.1.2-1.el8.src.rpm
    [output truncated]
    
    $ rpmbuild --rebuild ~/rpmbuild/SRPMS/cello-1.0-1.el8.src.rpm
    [output truncated]
Nota

A invocação de rpmbuild --rebuild envolve:

  • Instalando o conteúdo do SRPM - o arquivo SPEC e o código fonte - no diretório ~/rpmbuild/.
  • Construção utilizando o conteúdo instalado.
  • Remoção do arquivo SPEC e do código fonte.

Para reter o arquivo SPEC e o código fonte após a construção, você pode:

  • Ao construir, use o comando rpmbuild com a opção --recompile ao invés da opção --rebuild.
  • Instale os SRPMs usando estes comandos:

    $ rpm -Uvh ~/rpmbuild/SRPMS/bello-0.1-1.el8.src.rpm
    Updating / installing…​
       1:bello-0.1-1.el8               [100%]
    
    $ rpm -Uvh ~/rpmbuild/SRPMS/pello-0.1.2-1.el8.src.rpm
    Updating / installing…​
    …​1:pello-0.1.2-1.el8              [100%]
    
    $ rpm -Uvh ~/rpmbuild/SRPMS/cello-1.0-1.el8.src.rpm
    Updating / installing…​
    …​1:cello-1.0-1.el8            [100%]

A saída gerada ao criar um RPM binário é verbosa, o que é útil para a depuração. A saída varia para diferentes exemplos e corresponde a seus arquivos SPEC.

Os RPMs binários resultantes estão no diretório ~/rpmbuild/RPMS/YOURARCH onde YOURARCH é sua arquitetura ou no diretório ~/rpmbuild/RPMS/noarch/, se o pacote não for específico da arquitetura.