[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: showing dependency trees

On 27/08/2009, Björn Persson <bjorn 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 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 (=
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 (=
liblocale-maketext-simple-perl (= 0.12-2) conflicts with perl-modules (=
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 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.

-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.

Debayan Banerjee

Support Free Software

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]