Ask Your Question
1

Install issue with a homemade package, nothing provides libXXX...

asked 2018-08-02 08:23:23 -0600

bioinfornatics gravatar image

Dear,

After sucesfult build the rpm I tried to install it. But I fail to install the devel package for this reason:

Error:
 Problem: conflicting requests
  - nothing provides libstdx-allocator-ldc.so.2()(64bit) needed by stdx-allocator-devel-2.77.2-1.fc28.x86_64

What i do:

  1. build rhe rpm rpmbuild -ba stdx-allocator.spec
  2. Install main package

sudo dnf install ../RPMS/x8664/stdx-allocator-2.77.2-1.fc28.x8664.rpm

  1. Install devel package

    sudo dnf install ../RPMS/x8664/stdx-allocator-devel-2.77.2-1.fc28.x8664.rpm

It is strange as the main package own the requested file:

# rpm -ql stdx-allocator | grep libstdx-allocator-ldc.so.2
/usr/lib64/libstdx-allocator-ldc.so.2
/usr/lib64/libstdx-allocator-ldc.so.2.77.2

I checked the soname:

$ objdump -p libstdx-allocator-ldc.so.2.77.2 | grep -i soname
 SONAME               libstdx-allocator-ldc.so.2

It is the intended soname. I even try to put an explicit provides into the main package

Provides:   lib%{name}-ldc.so.%{major_version}%{?_isa} = %{version}-%{release}

After this the rpm queries:

$ rpm -q --provides ../RPMS/x86_64/stdx-allocator-2.77.2-1.fc28.x86_64.rpm
libstdx-allocator-ldc.so.2(x86-64)
stdx-allocator = 2.77.2-1.fc28
stdx-allocator(x86-64) = 2.77.2-1.fc28
$ rpm -q --requires ../RPMS/x86_64/stdx-allocator-devel-2.77.2-1.fc28.x86_64.rpm
/usr/bin/pkg-config
libstdx-allocator-ldc.so.2()(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsXz) <= 5.2-1
stdx-allocator(x86-64) = 2.77.2-1.fc28

I got always the same error message!

The spec file -> here

Thanks for your help

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2018-08-03 02:30:09 -0600

villykruse gravatar image

updated 2018-08-03 06:00:01 -0600

Your provides is libstdx-allocator-ldc.so.2(x86-64)

Your requires is libstdx-allocator-ldc.so.2()(64bit)

Try add a Provides: libstdx-allocator-ldc.so.2()(64bit) which is the normal form of provides and requires for libraries.

It probably makes it easer if you used the names libstdx-allocator-ldc and libstdx-allocator-ldc-devel. That is how most Fedora library packages are named.

edit flag offensive delete link more

Comments

Thanks villykruse for your help. I agree, the statement "provides", imply the required library is softly different. How should I rewrite: Provides: lib%{name}-ldc.so.%{major_version}%{?_isa} = %{version}-%{release} in order to get the same thing ? I could to do: Provides: lib%{name}-ldc.so.%{major_version}()(%{?__isa_bits:%{__isa_bits}bit}) = %{version}-%{release} but I do not knowk which variable should be between the empty parenthesis () ?

bioinfornatics gravatar imagebioinfornatics ( 2018-08-03 02:52:13 -0600 )edit

Try first with the exaxt text Provides: libstdx-allocator-ldc.so.2()(64bit).

villykruse gravatar imagevillykruse ( 2018-08-03 06:02:12 -0600 )edit

Question Tools

1 follower

Stats

Asked: 2018-08-02 07:06:49 -0600

Seen: 72 times

Last updated: Aug 03 '18