<br><br><div><span class="gmail_quote">On 27/08/2009, <b class="gmail_sendername">Björn Persson</b> &lt;<a href="mailto:bjorn@xn--rombobjrn-67a.se">bjorn@xn--rombobjrn-67a.se</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Jeff Spaleta wrote:<br> &gt; Are you suggesting that things are out of balance now?<br> <br>&gt; [...]<br> <br>&gt; Are you seriously suggesting expending the manpower at the<br> &gt; distribution level to poke at which functional calls need to broken<br>
 &gt; out into more libraries?<br> <br> <br>All I have suggested is that we should have a certain tool. Rahul Sundaram<br> described a way to check for unnecessary dependencies. I found that method<br> somewhat unwieldy</blockquote>
</div><br>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.<br><br><pre>
debayan@deep-blue:/data/all/distros/deepofix-trunk/install_cd/deepofix/dists/doublethink/main/binary-i386$<br>edos-debcheck -failures -explain &lt; Packages<br>Parsing package file...  0.4 seconds     684 packages<br>Generating constraints...  0.2 seconds<br>
libarchive-tar-perl (= 1.30-2): FAILED<br>The following constraints cannot be satisfied:<br>  libarchive-tar-perl (= 1.30-2) conflicts with perl-modules (= 5.10.0-19)<br>  libarchive-tar-perl (= 1.30-2) depends on perl (&gt;= 5.6.0-16) {perl (=<br>
5.10.0-19)}<br>  perl (= 5.10.0-19) depends on perl-modules (&gt;= 5.10.0-19) {perl-modules<br>(= 5.10.0-19)}<br>liblocale-maketext-simple-perl (= 0.12-2): FAILED<br>The following constraints cannot be satisfied:<br>  liblocale-maketext-simple-perl (= 0.12-2) depends on<br>
liblocale-maketext-lexicon-perl {liblocale-maketext-lexicon-perl (=<br>0.66-1)}<br>  liblocale-maketext-simple-perl (= 0.12-2) conflicts with perl-modules (=<br>5.10.0-19)<br>  liblocale-maketext-lexicon-perl (= 0.66-1) depends on<br>
liblocale-maketext-perl {perl-modules (= 5.10.0-19)}<br>libssp0 (= 4.1.1-21): FAILED<br>The following constraints cannot be satisfied:<br>  libssp0 (= 4.1.1-21) depends on gcc-4.1-base (= 4.1.1-21) {NOT AVAILABLE}<br>libversion-perl (= 0.6701-1): FAILED<br>
The following constraints cannot be satisfied:<br>  libversion-perl (= 0.6701-1) depends on perlapi-5.8.8 {NOT AVAILABLE}<br>Checking packages... 0.3 seconds<br><br><br>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.<br>
<br>For your particular case, where you want to check dependency tress for a particular package, I think that can be done too.<br><br>&quot;debayan@deep-blue:~$ edos-debcheck --help<br>Usage: edos-debcheck [OPTION]... [PACKAGE]...<br>
Check whether the given packages can be installed.  A binary package<br>control file is read from the standard input.  The names (for instance,<br>&#39;emacsen&#39;) of the packages to be tested should be given on the command<br>
line.  A specific version of a package can be selected by following<br>the package name with an equals and the version of the package to test<br>(for instance, &#39;xemacs21=21.4.17-1&#39;).  When no package name is provided,<br>
all packages in the control file are tested.<br><br>Options:<br>  -check  Double-check the results<br>  -explain  Explain the results<br>  -rules  Print generated rules<br>  -quiet do not emit warnings nor progress/timing info<br>
  -failures  Only show failures<br>  -successes  Only show successes<br>  -help  Display this list of options<br>  --help  Display this list of options<br>&quot;<br><br>Replace edos-debcheck with edos-rpmcheck.<br><br>There is also an apt-cache flag that generates visual dependency graphs for a particular package.<br>
<br>&quot;<br> dotty pkg(s)<br>           dotty takes a list of packages on the command line and generates<br>           output suitable for use by dotty from the GraphViz[1] package. The<br>           result will be a set of nodes and edges representing the<br>
           relationships between the packages. By default the given packages<br>           will trace out all dependent packages; this can produce a very<br>           large graph. To limit the output to only the packages listed on the<br>
           command line, set the APT::Cache::GivenOnly option.<br><br>           The resulting nodes will have several shapes; normal packages are<br>           boxes, pure provides are triangles, mixed provides are diamonds,<br>
           missing packages are hexagons. Orange boxes mean recursion was<br>           stopped [leaf packages], blue lines are pre-depends, green lines<br>           are conflicts.<br>&quot;<br><br>The above excerpt is from &#39;man apt-cache&#39;. I am not sure if similar facility is available in yum.<br>
<br>           Caution, dotty cannot graph larger sets of packages.<br></pre><br>-- <br>Regards,<br>Debayan Banerjee<br><br>Support Free Software<br><a href="http://deeproot.in">http://deeproot.in</a><br>