Um RPM já está instalado? Binário comparar

0

No meu local atual de trabalho, às vezes recebemos um pacote de RPMs e somos informados para atualizar nosso ambiente. A entidade que nos fornece as atualizações é muito frouxa com seus processos e às vezes faz alterações em um pacote sem atualizar qualquer número de versão, etc. Portanto, temos que instalar cegamente o que eles nos dão (o que pode demorar muito).

por exemplo: Às vezes temos o abc-1.2.3.rpm instalado e, em seguida, obtemos um novo abc-1.2.3.rpm que contém correções, mas tem exatamente os mesmos números de versão! Sim. É estúpido, mas temos que lidar com isso.

Existe uma maneira de saber se um arquivo RPM específico corresponde a um que está atualmente instalado? Via MD5SUM, SHA1 ou diff binário etc?

Para resolver esse problema, copiamos todos os RPMs instalados em um determinado diretório em nosso sistema e, em seguida, comparamos um arquivo binário entre eles e quaisquer novos arquivos que venham (se eles tiverem nomes de arquivos correspondentes). Se a comparação binária mostrar diferente, então instalamos esse RPM e também movemos o arquivo RPM para esse diretório 'instalado' (para comparação futura)

Deve haver uma maneira melhor de fazer isso. Alguma sugestão?

    
por TheIronChef 01.04.2014 / 01:58

1 resposta

1

À primeira vista, você pode considerar algo baseado em rpm --verify, mas isso não permite que você pergunte 'os arquivos instalados são iguais aos do arquivo RPM?', em vez disso, ele pergunta 'são os arquivos instalados o mesmo que listado no banco de dados RPM [de pacotes instalados] '

No entanto, você poderia escrever um script para fazer uma coisa similar baseada em 'rpm --query --dump --package some.rpm', que produziria os nomes dos arquivos (com MD5), que você poderia verificar.

Idealmente, parece que o empacotador realmente precisa usar o campo Release.

    
por 01.04.2014 / 05:44

Tags