What does "require" actually mean?

Suvayu Ali fatkasuvayu+linux at gmail.com
Mon Aug 26 01:21:22 UTC 2013


On Sun, Aug 25, 2013 at 01:48:58AM +0200, Michael Schwendt wrote:
> On Sat, 24 Aug 2013 16:35:22 +0200, Suvayu Ali wrote:
> 
> > > package. Run "rpm -e --test libvdpau" to display those dependencies.
> > > The package may be renamed (or the contents moved to a different
> > > package) without breaking the dependencies.
> > > 
> > > The repoquery tool can distinguish between --exactdeps and --alldeps
> > > queries:
> > > 
> > >   $ repoquery --exactdeps --whatrequires libvdpau
> > >   $
> > 
> > I was also confused by this for a long time.  Thanks for the
> > explanation.  Given the two kinds of dependencies, shouldn't one always
> > query for --alldeps?
> 
> Yes, preferably.
> 
> For repoquery that option is the default for a long time (but it hasn't
> been the default always).
> 
> > That seems the more practical option.  If that is
> > the case, what good is `rpm -q --whatrequires'?
> 
> Well, it's a matter of definition. That low-level RPM based query doesn't
> operate on package names, but on "things" provided by packages. RPM
> dependencies are not restricted to package names. With the example
> of "libvdpau", even a completely different package with a different name
> could provide something called "libvdpau". It's coincidence that it's
> also the name of an installed package. The package name is also just one
> of the "things" provided by the package:
> 
>   $ rpm -q --provides libvdpau
>   config(libvdpau) = 0.7-1.fc20
>   libvdpau = 0.7-1.fc20
>   libvdpau(x86-64) = 0.7-1.fc20
>   libvdpau.so.1()(64bit)
>   libvdpau_trace.so.1()(64bit)
> 
> Nowadays, with automatic dependencies on the actual library name,
> typically there is no extra dependency on the package name anymore.
> 
>   $ rpm -q --whatrequires 'libvdpau.so.1()(64bit)'
>   gstreamer1-plugins-bad-free-1.1.3-1.fc20.x86_64
>   gstreamer-plugins-bad-free-0.10.23-19.fc20.x86_64
> 
> That's why RPM told the truth that no package requires "libvdpau" anymore.
> 
> > I also notice that --alldeps is a repoquery only option, does that mean
> > the only way to get this info when offline is to do `rpm -e --test',
> > `yum remove', or call repoquery with -C?
> 
> Yes. "rpm -e --test" is a very very old command, btw.

Thanks a lot Michael!  :)

-- 
Suvayu

Open source is the future. It sets us free.


More information about the users mailing list