showing dependency trees

Debayan Banerjee debayanin at gmail.com
Thu Aug 27 06:09:00 UTC 2009


On 27/08/2009, Björn Persson <bjorn at xn--rombobjrn-67a.se> wrote:
>
> Jeff Spaleta wrote:
> > Are you suggesting that things are out of balance now?
>
> > [...]
>
> > Are you seriously suggesting expending the manpower at the
> > distribution level to poke at which functional calls need to broken
> > out into more libraries?
>
>
> All I have suggested is that we should have a certain tool. Rahul Sundaram
> described a way to check for unnecessary dependencies. I found that method
> somewhat unwieldy


Well, I develop a debian distribution for my organisation and I often need
to confirm whether the packages in the repository are installable or not. I
use edos-debcheck. Here is a sample invocation.

debayan at deep-blue:/data/all/distros/deepofix-trunk/install_cd/deepofix/dists/doublethink/main/binary-i386$
edos-debcheck -failures -explain < Packages
Parsing package file...  0.4 seconds     684 packages
Generating constraints...  0.2 seconds
libarchive-tar-perl (= 1.30-2): FAILED
The following constraints cannot be satisfied:
  libarchive-tar-perl (= 1.30-2) conflicts with perl-modules (= 5.10.0-19)
  libarchive-tar-perl (= 1.30-2) depends on perl (>= 5.6.0-16) {perl (=
5.10.0-19)}
  perl (= 5.10.0-19) depends on perl-modules (>= 5.10.0-19) {perl-modules
(= 5.10.0-19)}
liblocale-maketext-simple-perl (= 0.12-2): FAILED
The following constraints cannot be satisfied:
  liblocale-maketext-simple-perl (= 0.12-2) depends on
liblocale-maketext-lexicon-perl {liblocale-maketext-lexicon-perl (=
0.66-1)}
  liblocale-maketext-simple-perl (= 0.12-2) conflicts with perl-modules (=
5.10.0-19)
  liblocale-maketext-lexicon-perl (= 0.66-1) depends on
liblocale-maketext-perl {perl-modules (= 5.10.0-19)}
libssp0 (= 4.1.1-21): FAILED
The following constraints cannot be satisfied:
  libssp0 (= 4.1.1-21) depends on gcc-4.1-base (= 4.1.1-21) {NOT AVAILABLE}
libversion-perl (= 0.6701-1): FAILED
The following constraints cannot be satisfied:
  libversion-perl (= 0.6701-1) depends on perlapi-5.8.8 {NOT AVAILABLE}
Checking packages... 0.3 seconds


As you can see, it tells me which packages can not be installed due to
dependency failure. It takes the Packages file metadata and processes
it.

For your particular case, where you want to check dependency tress for
a particular package, I think that can be done too.

"debayan at deep-blue:~$ edos-debcheck --help
Usage: edos-debcheck [OPTION]... [PACKAGE]...
Check whether the given packages can be installed.  A binary package
control file is read from the standard input.  The names (for instance,
'emacsen') of the packages to be tested should be given on the command
line.  A specific version of a package can be selected by following
the package name with an equals and the version of the package to test
(for instance, 'xemacs21=21.4.17-1').  When no package name is provided,
all packages in the control file are tested.

Options:
  -check  Double-check the results
  -explain  Explain the results
  -rules  Print generated rules
  -quiet do not emit warnings nor progress/timing info
  -failures  Only show failures
  -successes  Only show successes
  -help  Display this list of options
  --help  Display this list of options
"

Replace edos-debcheck with edos-rpmcheck.

There is also an apt-cache flag that generates visual dependency
graphs for a particular package.

"
 dotty pkg(s)
           dotty takes a list of packages on the command line and generates
           output suitable for use by dotty from the GraphViz[1] package. The
           result will be a set of nodes and edges representing the
           relationships between the packages. By default the given packages
           will trace out all dependent packages; this can produce a very
           large graph. To limit the output to only the packages listed on the
           command line, set the APT::Cache::GivenOnly option.

           The resulting nodes will have several shapes; normal packages are
           boxes, pure provides are triangles, mixed provides are diamonds,
           missing packages are hexagons. Orange boxes mean recursion was
           stopped [leaf packages], blue lines are pre-depends, green lines
           are conflicts.
"

The above excerpt is from 'man apt-cache'. I am not sure if similar
facility is available in yum.

           Caution, dotty cannot graph larger sets of packages.


-- 
Regards,
Debayan Banerjee

Support Free Software
http://deeproot.in
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/fedora-devel-list/attachments/20090827/de0574e9/attachment.htm>


More information about the fedora-devel-list mailing list