Manter versão de 32 e 64 bits do rpm

1

deixe-me explicar isso um pouco, eu estou encarregado de atualizar parte do produto da nossa empresa de 32 para 64 bits.

No final, devemos ter um kernel de 64bits + 32bits + alguns aplicativos de 64bits. Com este cenário, deduzimos que eu preciso de 32 & 64bits versão de alguns rpms, principalmente dependências, mas a imagem fica um pouco feia depois que eu começo a trabalhar com as dependências.

Suponha que eu tenha apenas um programa, o Program1, que será de 64 bits e o restante do sistema de 32 bits. Este programa1 requer libgcc. Antes que qualquer coisa seja feita no sistema, eu consultei minha versão atual da libgcc

$>rpm -qa --queryformat '%{NAME}.%{ARCH}\n' | grep libgcc

E a resposta:

$>libgcc.i386

Eu vou e instale o libgcc rpm para 64 bits:

$>rpm -ivh --force --ignorearch libgcc-4.3.2-7.x86_64

Mas agora, depois da consulta

$>rpm -qa --queryformat '%{NAME}.%{ARCH}\n' | grep libgcc

Eu recebo apenas uma entrada, em vez de duas

$>libgcc.x86_64

Se eu verificar os arquivos, as bibliotecas e os programas serão executados como esperado, para que não haja nenhum problema ... até que eu queira atualizar nossa infraestrutura comum em ambas as versões.

Suponha agora o novo pacote comum, por exemplo, commonlibraries.i386.rpm e commonlibraries.x86_64.rpm.

Se eu quiser atualizar o commonlibraries.i386, ele requer libgcc.i386 e, como pudemos ver, apenas uma arquitetura é relatada, após a atualização x86_64 e, como conseqüência, o processo de upgrade falha.

O fato engraçado é na minha estação de trabalho, eu posso obter ambas as versões,

$ rpm -qa --queryformat '%{NAME}.%{ARCH}\n' | grep libgcc
libgcc.x86_64
libgcc.i686

Mas em nosso produto, parece impossível ter o mesmo pacote para múltiplas arquiteturas (e isso acontece com alguns pacotes, como libgcc, mas não com outros como kerberos5-libraries). Existe algum guru por aí que teve esse problema no passado?

Eu já li aqui o link para executar o rpm -e --justbd - -nodeps PackageName e instale depois o rpms ... mas isso não funciona.

    
por Raistmaj 31.08.2015 / 14:49

1 resposta

0

Finalmente alcançamos a migração desejada para 64 bits. O problema parece mais com um problema de empacotamento em uma distro antiga do que com um problema real de 32-64 bits.

Quando tentei instalar a libgcc sem a força, ela entrou em conflito com alguns binários da parte da macro% post, algo como post_libgcc_upgrade. Então, para cada pacote rpm que conflitou para 32-64 bits, nós "perdemos" esse pacote de 32 bits.

No final, peguei todas as dependências do conjunto de pacotes rpm, seus scripts e criei meu próprio pacote rpm com nomes diferentes para os arquivos em conflito, modificando os scripts de acordo. Levou alguns dias para reunir todas as informações e as testou corretamente, mas valeu a pena.

De qualquer forma, talvez isso seja útil para alguém, e é por isso que postei a solução que tirei.

    
por 04.09.2015 / 19:30

Tags