Ошибка зависимости RPM на этапе сборки файла спецификации RPM - PullRequest
0 голосов
/ 12 сентября 2011

Моя цель - распространить уже собранную libmy.so как устанавливаемую библиотеку через RPM.

Ниже приведен фрагмент файла .spec:

%define elX el5
%define arch x86_64

Name: my_rpm
Version: 1.0
Requires: <package name which installs libxx.so >

%prep

%define debug_package %{nil}

%build

%install

%files

%defattr(-, root, root)

/home/%{elX}/%{arch}/%{name}_%{version}/lib/libmy.so

Во время компиляции libmy.so я связываю его с libxx.so, который устанавливается как часть другого RPM.

При установке RPM, созданного как часть вышеупомянутого шага 1, он выдает следующую ошибку зависимости, даже если на компьютере установлен libxx.so

$ rpm -ivh *rpm

error: Failed dependencies:

libxx.so()(64bit) is needed by *rpm

Мы пробовали следующие вещи.

В ходе анализа мы наблюдали, что путь, где находится libxx.so, отсутствует в ld.so.conf. Однако добавление записи пути, где находится libxx.so, не помогло нам.

Пожалуйста, дайте нам знать, нужно ли нам выполнять какие-либо дополнительные шаги для устранения этой ошибки зависимости.

1 Ответ

3 голосов
/ 12 сентября 2011

При установке rpm ищет запись в базе данных RPM;он не проверяет наличие файла в системе или связанного с ним.

Что означает вывод

$ rpm -q --whatprovides libXX.so

В этом списке будет указан пакет, содержащий libXX.so.Если ни один пакет не предоставляет его, у вашего RPM будет ошибка зависимости.Удалите libXX.so из записи Requires:.Если вы не указали его вручную, он может быть обнаружен автоматически.В вашем spec-файле вы можете установить:

AutoReqProv: no

Это отключит ВСЕ автоматическое обнаружение Requires:.

http://ftp.rpm.org/max-rpm/s1-rpm-depend-auto-depend.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...