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

Попытка установить недавно созданный RPM, но он говорит, что он зависит от библиотеки, от которой не должен зависеть

Речь идет о пакете samba-3.6.7. Я успешно собрал пакет, но при попытке установить он возвращается,

error: failed dependencies:
libtalloc.so.1 is needed by samba-3.6.7

Понятия не имею, почему это происходит. libtalloc.so.1 предоставляется моим текущим пакетом samba (который я заменяю), но эта новая samba предоставляет libtalloc.so и libtalloc.so.2. Почему это все еще зависит от libtalloc.so.1 и как это исправить?

Создайте свои RPM, используя mock. Это строится внутри chroot, содержащего только необходимые пакеты для построения RPM, и помогает предотвратить подобные ситуации.

Отредактируйте файл спецификации и удалите запись required для libtalloc.so.1. Восстановите, и он должен работать. Ошибки в этих метаданных могут быть довольно сложно отследить.

libtalloc.so.1 был добавлен автоматическим генератором зависимостей, который не является безошибочным.

Другая возможность заключается в том, что что-то в вашей сборке действительно связано с libtalloc.so.1 вот почему так важны среды сборки.

Предполагая, что автоматический генератор зависимостей не работает, и вы хотите исправить это, вы делаете это, переопределив __perl_requires (в зависимости от версии rpm) в вашем файле спецификации:

source1: %{name}-filter-requires.sh
%define __perl_requires %{SOURCE1}

затем %{name}-filter-requires.sh является:

#!/bin/sh

/usr/lib/rpm/perl.req $* |\
  sed -e '/libtalloc.so.1/d'