Por que instalar o mesmo pacote duas vezes com o yum não me fornece os mesmos arquivos?

5

A situação que estou enfrentando: eu configurei uma máquina CentOS 5.9 que deveria ser a cópia mais próxima possível de outra máquina do CentOS 5.9, mas não um clone. Usando o yum, instalei (na medida do possível) todos os pacotes na máquina de destino que também estão instalados na máquina de origem (conforme relatado por yum list installed e rpm -qa ). Depois eu usei o md5deep para encontrar arquivos que ainda estão faltando na máquina de destino. Eu encontrei muito mais arquivos ausentes do que eu esperava e, assim, descobri o meu problema atual.

No alvo & máquinas de origem o pacote traceroute-3: 2.0.1-6.el5.i386 está instalado (diz yum list installed ). Em ambas as máquinas, repoquery --info --show-duplicates traceroute lista apenas esta versão do pacote e me diz que ela pode ser encontrada no repositório base. Em ambas as máquinas rpm -ql traceroute-2.0.1-6.el5.i386 lista os mesmos arquivos. Em ambas as máquinas rpm -V traceroute-2.0.1-6.el5.i386 me diz que a instalação correu bem (nenhum arquivo modificado / faltando). Uma rápida olhada no traceroute-2.0.1-6.el5.i386.rpm mostra apenas um arquivo binário (/ bin / traceroute), links simbólicos e documentação, então eu não espero que a compilação aconteça quando eu instalar esse pacote (mas Eu não sou um especialista em RPM e foi apenas uma olhada rápida, não um exame completo). file /bin/traceroute me diz /bin/traceroute: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), stripped em ambas as máquinas. / bin / traceroute tem o mesmo tamanho em ambas as máquinas.

Ainda assim, quando executo md5sum /bin/traceroute em ambas as máquinas, obtenho resultados diferentes. xxd & diff mostra que várias dúzias de bytes diferem e as diferenças parecem estar no código real (ainda não as desmontaram, mas as partes alteradas não são cadeias legíveis por humanos). traceroute é apenas um exemplo aleatório, existem várias dezenas de arquivos diferentes em / bin, / sbin & / lib.

Alguma ideia do que está acontecendo? Eu sempre tive a impressão de que instalar o mesmo pacote duas vezes resultaria exatamente nos mesmos arquivos, desde que a compilação / edição não fizesse parte da instalação. No mínimo eu estava esperando que rpm -V me contasse sobre arquivos que foram adulterados. Ajudaria se o yum tivesse um recurso para me dizer de qual repositório ele baixou o arquivo RPM, mas, de acordo com o meu conhecimento, este recurso não existe na minha versão do yum (3.2.22). Para ser claro: o repoquery não me diz de qual repositório um pacote foi baixado, ele apenas me diz onde ele está disponível. Se o mesmo pacote estiver disponível em 2 ou mais repositórios ativados, repoquery listará todos os pacotes. O Yum pode decidir qual das duplicatas deseja e não parece registrar essa decisão em nenhum arquivo de log.

    
por user2845840 04.10.2013 / 12:08

1 resposta

3

Já corri para isso antes em uma distro do RHEL. Um homem mais esperto do que eu identificou a fonte do comportamento: prelink

Para testá-lo, execute o seguinte em ambos os sistemas que identificaram hashes diferentes e compare a saída.

/usr/sbin/prelink -y /bin/traceroute | md5sum
    
por 05.10.2013 / 02:54

Tags