rpm -ivh, falha na dependência já instalada

4

Estou com problemas para instalar um conjunto de rpms de compilação personalizados. O arquivo de especificações produz 7 rpms binários. Eu instalei 5 deles usando rpm -ivh e decidi que também precisava dos dois restantes. Quando tento instalar esses, o rpm reclama:

# sudo rpm -ivh foo-lib-cpp-devel-0.7.0-1.x86_64.rpm
error: Failed dependencies:
    foo = 0.7.0-1 is needed by foo-lib-cpp-devel-1:0.7.0-1.x86_64

No entanto, essa dependência exata já está instalada:

# rpm -q foo
foo-0.7.0-1.x86_64

Eu descobri 'rpm -R', que fornece mais detalhes sobre o pacote:

# rpm -qvRp foo-lib-cpp-devel-0.7.0-1.x86_64.rpm
auto: /usr/bin/pkg-config  
manual: boost-devel  
manual: libevent-devel >= 1.2
auto: libfoo.so.0()(64bit)  
auto: libfootnb.so.0()(64bit)  
auto: libfooz.so.0()(64bit)  
auto: pkgconfig(foo) = 0.7.0
rpmlib: rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib: rpmlib(FileDigests) <= 4.6.0-1
rpmlib: rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib: rpmlib(VersionedDependencies) <= 3.0.3-1
manual: foo = 0.7.0-1
manual: zlib-devel  
rpmlib: rpmlib(PayloadIsXz) <= 5.2-1

A única coisa suspeita que eu vejo é o token '-1:' no pacote lib-cpp-devel, que eu não consigo explicar.

O que é o '-1:' e isso pode estar relacionado a esse problema? Como posso depurar isso mais ou contornar isso? FWIW tudo isso ocorre em uma instalação relativamente nova do CentOS 6.

Obrigado!

    
por bfallik-bamboom 10.11.2011 / 23:17

2 respostas

2

O token -1: é a tag Epoch, então parece que seu RPM pode ter sido construído com uma Epoch igual a 1. Se for esse o caso, a dependência de foo-lib-cpp-devel em foo deve incluir o Época , assim:

Requires: foo = 1:0.7.0-1

Ou usando macros:

Requires: foo = %{epoch}:%{version}-%{release}
    
por 11.11.2011 / 05:19
3

Se você tem certeza absoluta de que os dois pacotes são compatíveis, faça o seguinte:

  1. Remova o pacote foo-lib-cpp-devel atual usando o switch --nodeps no rpm.

1a. Instale o novo pacote foo-lib-cpp-devel usando rpm (pode ser necessário usar --nodeps ou --force switches)

OR
  1. Instale o novo pacote foo-lib-cpp-devel usando os switches --force -nodeps no rpm.
por 10.11.2011 / 23:59

Tags