Nghia
Nghia

Reputation: 121

RPM can't find shared library from another RPM

I have two RPMS that I made (lib.rpm and program.rpm), one containing a shared library eg. libtest.so, libtest.so.1, libtest.so.1.0. The other containing a single binary that is linked to the shared library eg. test_program.

I installed lib.rpm on a new machine with no problems. Copied over test_program and ran it fine. I then build program.rpm containing test_program, again no problems. But when I do a rpm -ivh program.rpm I get:

error: Failed dependencies:
    libtest.so.1() (64bit) is needed by test_program-0.1-1.x86_64

Yet, when doing a ldd on test_program it clearly finds the file at /usr/lib64/libtest.so.1.

Both my spec files are the bare minimum. Besides the package description I only added an entry under %files and AutoReqProv set to no.

So what gives?

Upvotes: 1

Views: 2746

Answers (1)

Dmitry Yudakov
Dmitry Yudakov

Reputation: 15734

In the pastebin_link you gave I noticed

AutoReqProv: no

I think that causes not filling Provides data of the rpm - because of this the info about the files doesn't go to rpm database.

The solution could be removing AutoReqProv or setting it to yes.

Edit: According to Nghia's comments it doesn't help:

Not sure why you need this, but if you really do, mentioning explicitly

Provides: /usr/lib64/libtest.so /usr/lib64/libtest.so.1 /usr/lib64/libtest.so.1.0

will probably solve your problem.

Upvotes: 1

Related Questions