rpm pergunta sobre o arquivo temporário (rpm-tmp)

3

Ao instalar um RPM no CentOS, recebo a seguinte mensagem de erro:

/var/tmp/rpm-tmp.44492: line 578: [: too many arguments

O problema que estou tendo é que o arquivo /var/tmp/rpm-tmp.xxxxx é sempre deletado após a instalação do RPM e eu quero ver o número da linha com a qual ele está tendo problemas. Qual é a melhor maneira de preservar esse arquivo durante a instalação para que os problemas de depuração com o rpm sejam mais fáceis? Até agora, coloquei isso na seção %pre do meu arquivo de especificação do rpm para lidar com esse problema:

cp -vf /var/tmp/rpm-tmp* /tmp/%module_name-rpm-tmp-copy

Copiando /var/tmp/rpm-tmp* para /tmp , consegui ver a linha 578 e corrigir o erro de sintaxe em meu código facilmente. Existe uma maneira de referenciar o arquivo rpm-tmp que o RPM está usando durante a instalação? Algo de env que eu possa usar no meu arquivo de especificações para copiar a declaração correta rpm-tmp em vez de uma manta cp (cópia /var/tmp/rpm-tmp* files)?

    
por GoinOff 28.08.2014 / 18:41

2 respostas

1

Eu também já vi esse problema hoje no SLES 11SP4 (RPM verion 4.4.2.3): não há nem --noclean nem a reescrita da solução sugerida %clean tag impede a exclusão do script /var/tmp/rpm-tmp.* .

Eu poderia resolver o problema adicionando um exit -1 sucinto ao final da fase que eu estava depurando: o rpmbuilder sai com um

error: Bad exit status from /var/tmp/rpm-tmp.00000 (%install)

e o arquivo persiste para ser depurado.

    
por 06.05.2016 / 20:18
0

Com rpmbuild , você tem duas opções.

1. --noclean

Você pode instruir rpmbuild para não remover esses arquivos com essa opção quando você estiver --rebuild 'em um pacote.

$ rpmbuild --rebuild --noclean ....

NOTA: Isso está disponível na maioria das versões às quais tenho acesso.

$ rpmbuild --help |& grep clean
      --clean                    remove build tree when done
      --noclean                  do not execute %clean stage of the build
Fedora 20
$ rpmbuild --version
RPM version 4.11.2
CentOS 5.x
$ rpmbuild --version
RPM version 4.4.2.3

2. O rpmbuild não suporta --noclean

Se você estiver usando rpmbuild --rebuild para criar um pacote usando seu próprio arquivo .spec . e não suporta esta opção, você pode adicionar sua própria rotina à fase %clean desse arquivo .spec .

%Clean
%if "%{noclean}" == ""
   rm -rf $RPM_BUILD_ROOT
%endif

Referências

por 28.08.2014 / 22:09

Tags