Назад | Перейти на главную страницу

rpm -ivh, неудачная зависимость уже установлена

У меня проблемы с установкой набора настраиваемых rpms-пакетов. Файл спецификации производит 7 двоичных оборотов в минуту. Я установил 5 из них, используя rpm -ivh, а затем решил, что мне также нужны оставшиеся два. Когда я пытаюсь их установить, rpm жалуется:

# 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

Тем не менее, эта точная зависимость уже установлена:

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

Я обнаружил 'rpm -R', который предоставляет более подробную информацию о пакете:

# 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

Единственное, что я вижу подозрительно, - это токен «-1:» в пакете lib-cpp-devel, который я не могу объяснить.

Что такое "-1:" и может ли это быть связано с этой проблемой? Как я могу отладить это дальше или исправить это? FWIW все это происходит на относительно новой установке CentOS 6.

Спасибо!

Если вы абсолютно уверены, что эти два пакета совместимы, вы можете сделать одно из следующих действий:

  1. Удалите текущий пакет foo-lib-cpp-devel с помощью переключателя --nodeps в rpm.

1а. Установите новый пакет foo-lib-cpp-devel с помощью rpm (возможно, придется использовать переключатели --nodeps или --force)

OR
  1. Установите новый пакет foo-lib-cpp-devel с помощью переключателя --force --nodeps в rpm.

В -1: token - это тег Epoch, поэтому похоже, что ваш RPM мог быть построен с Epoch, равным 1. В этом случае foo-lib-cpp-develзависимость от foo должен включать эпоху, вот так:

Requires: foo = 1:0.7.0-1

Или, используя макросы:

Requires: foo = %{epoch}:%{version}-%{release}