Resolving Dependencies

Greg_Swift at aotx.uscourts.gov Greg_Swift at aotx.uscourts.gov
Thu Jul 14 14:31:24 UTC 2011


Actually, you want to stick to just the Requires: definitions, this is not
appropriate work for scriptlets.  A .so.X dependancy is valid, as it is
something that the package providing it will say it provides.

# yum whatprovides libQtCore.so.4
Loaded plugins: downloadonly, rhnplugin, security
Excluding Packages in global exclude list
Finished
qt4-4.2.1-1.i386 : The shared library for the Qt GUI toolkit
Repo        : rhel-x86_64-server-5
Matched from:
Other       : libQtCore.so.4

However, you shouldn't have to define these requires, as RPM will usually
evaluate your code and package to determine most dependancies.

RPM itself will not resolve those dependancies for you, that is where yum
comes in.  RPM will just tell you what it needs, and you have to go find it
yourself.  Yum will evaluate the dependancies against all of its available
packages to find those for you.

Installation of your package will work as long as the following is true:

1: your package lists its proper requirements
2: yum is used to install it
3: the system has access to a repository that can meet those requirements.


What seems to be happening to you use that you are installing your
myApplication RPM manually, and it tells you what you need.  Try doing the
following:

yum install myApplication-1.0-1.x86_64.rpm

-greg

rpm-list-bounces at lists.rpm.org wrote on 07/14/2011 09:17:09 AM:

> The dependencies in RPM are only meaningful when it comes to
> packages (and virtual resources) that are in the RPM DB.
>
> If you say "Requires: libQtCore.so.4", RPM thinks there is another
> RPM package called libQtCore.so.4 that has to be installed prior to
> this and it checks its database and it doesn't find it, hence the error.
>
> What you really want is file dependency. I am not sure if RPM
> supports that, but you can simply put something like this in your "%
> pre" section:
>
>
> ###########
> %pre
>
> if [ ! -e /usr/lib/libQtCore.so.4 ]
> then
>   echo "ERROR: /usr/lib/libQtCore.so.4 doesn't exist! Bailing out."
>   exit 1
> fi
>
> # end of %pre
> ###########
>
> You can write as much script as you want in the %pre section and do
> all sorts of thing before your package is actually installed.
>
> I hope this helps,
> -ramin
>
>
> On 7/14/2011 10:02 AM, kali c wrote:
> Hi,
> I have my application which I want to build a rpm package. The
> application has some dependencies that has to be installed. It
> requires few  .so files that has to be present in the application
> running machine. Say for e.g libQtCore.so.4. The command ldd reveals
> other dependencies as well. I tried giving those dependencies in the
> SPEC file under the requires field as Requires: libQtCore.so.4 ....
>
> I have also added the liQtCore.so.4 in the %files section with the
> absolute path. I can build the SPEC file to .rpm without any errors.
>
> But I am getting errors regarding those dependencies while installing
them.
>
> Specifically error: Failed dependencies:
>         libQtCore.so.4 is needed by myApplication-1.0-1.x86_64
>
> How I can specify in my SPEC file such that I can install those
> dependencies even if they are not present in the target system? I
> need this because not all the dependencies will be available in the
> target system so that I can specify in some way so that either the
> entire packages get installed or the required .so files are referred
> by the application appropriately while installing my application.
>
> I am quite new to RPM so sorry if the question is a very basic one.



More information about the Rpm-list mailing list