Пытаюсь собрать Dante SOCKS сервер под CentOS и Fedora, ну и заодно разобраться со сборкой RPM-пакетов (на самом деле, это основная цель).
Для сборки использую mock, spec-файл: dante.spec.
Проблема появляется, когда я пытаюсь установить пакет dante-libs
или любой пакет, который от него зависит:
# при установке через yum/dnf из copr-репозитория:
Error: Package: dante-libs-1.4.1-1.el7.centos.x86_64 (smaximov-dante)
Requires: libsocks.so.0()(64bit)
# при установке через rpm
error: Failed dependencies:
libsocks.so.0()(64bit) is needed by dante-libs-1.4.1-1.fc24.x86_64
Но ведь libsocks.so.0 указана в директиве %files
:
## dante-libs files
%files libs
%defattr(-, root, root)
%doc README BUGS NEWS CREDITS
%license LICENSE
%{_libdir}/libdsocks.so
%{_libdir}/libsocks.so
%{_libdir}/libsocks.so.0
%{_libdir}/libsocks.so.0.1.1
Этот файл присутствует в rpm-пакете, в чём можно убедиться, распаковав пакет.
Собственно, вопросы:
- Я так понимаю, что зависимость от libsocks.so.0 задаёт неявно rpmbuild. Как сказать, чтобы он искал этот файл в самом пакете?
- Как с помощью mock одной командной собрать из spec-файла пакет? Я сейчас делаю так:
$ mock -r $CONFIG --buildsrpm --spec path/to/spec --sources path/to/sources $ mock -r $CONFIG --copyout /builddir/build/SRPMS/$PKG.src.rpm /tmp $ mock -r $CONFIG --rebuild /tmp/$PKG.src.rpm
- Возмножно ли с помощью mock/rpmbuild автоматически скачивать исходники, которые будут использоваться при сборке пакета? Про spectool знаю, это немного не то.