Estou tentando criar um RPM a partir de bibliotecas que foram construídas externamente.
Minha especificação é basicamente esta:
Name: ace-tao
Version: 6.5.3
Release: 1
Summary: ACE and TAO libraries
License: other
Vendor: My Corp
Group: Applications/Engineering
Packager: My Corp <[email protected]>
Prefix: /usr/local/foo
%description
Contains the ACE and TAO libraries.
%install
mkdir -p %{buildroot}/%{prefix}/lib
cp -f %{_sourcedir}/deps/libACE*.so.%{version} %{buildroot}/%{prefix}/lib/
cp -f %{_sourcedir}/deps/libTAO*.so.2.5.3 %{buildroot}/%{prefix}/lib/
(
cd %{buildroot}/%{prefix}/lib/
for lib in libTAO*.so.2.5.3; do
ln -s $lib ${lib%.3}
ln -s $lib ${lib%.5.3}
ln -s $lib ${lib%.2.5.3}
done
)
%files
%defattr(-,root,root,-)
%{prefix}
A biblioteca TAO exige que haja links simbólicos libTAO*.so
e libTAO*.so.2
to libTAO*.so.2.5
, libTAO*.so.2.5.3
daí as ln
chamadas.
Depois de construir isso rpmbuild -bb ace-tao.spec
, recebo um arquivo ace-tao-6.5.3-1.x86_64.rpm
. No entanto, a instalação gera avisos:
15:16:32,868 WARN packaging: ace-tao-6.5.3-1.x86_64 requires libTAO.so.2.5.3()(64bit)
15:16:32,868 WARN packaging: ace-tao-6.5.3-1.x86_64 requires libTAO_CodecFactory.so.2.5.3()(64bit)
15:16:32,868 WARN packaging: ace-tao-6.5.3-1.x86_64 requires libTAO_10RTable.so.2.5.3()(64bit)
... snip ...
Verificando os requisitos do pacote com rpm -qRp ace-tao-6.5.3-1.x86_64.rpm
listas de fato
libTAO.so.2.5.3()(64bit)
libTAO_AnyTypeCode.so.2.5.3()(64bit)
libTAO_CodecFactory.so.2.5.3()(64bit)
... snip ...
O RPM não os fornece:
$ rpm --provides -qp ace-tao-6.5.3-1.x86_64.rpm
ace-tao = 6.5.3-1
ace-tao(x86-64) = 6.5.3-1
Mesmo que os contenha:
$ rpm -qlp ace-tao-6.5.3-1.x86_64.rpm | grep TAO
/usr/local/foo/lib/libTAO.so
/usr/local/foo/lib/libTAO.so.2
/usr/local/foo/lib/libTAO.so.2.5
/usr/local/foo/lib/libTAO.so.2.5.3
/usr/local/foo/lib/libTAO_AnyTypeCode.so
/usr/local/foo/lib/libTAO_AnyTypeCode.so.2
/usr/local/foo/lib/libTAO_AnyTypeCode.so.2.5
/usr/local/foo/lib/libTAO_AnyTypeCode.so.2.5.3
/usr/local/foo/lib/libTAO_CodecFactory.so
/usr/local/foo/lib/libTAO_CodecFactory.so.2
/usr/local/foo/lib/libTAO_CodecFactory.so.2.5
/usr/local/foo/lib/libTAO_CodecFactory.so.2.5.3
... snip ...
Por que é que? O que preciso alterar para que o RPM forneça as bibliotecas que contém?
Estou no CentOS 7.9.