Debugging rpm package installation order

Jacek Konieczny jajcus at jajcus.net
Fri Aug 9 13:55:30 CEST 2013


On Thu, 08 Aug 2013 13:52:02 -0400
Jeffrey Johnson <n3npq at me.com> wrote:
> What follows is a dependency LOOP with exactly the same information
> as before.

Before the RPM upgrade when I got a 'LOOP:' message, it contain two or
three clearly related packages:

error: LOOP:
error: removing lighttpd-1.4.28-6.aos1.i686 "Requires(hint): lighttpd-mod_accesslog" from tsort relations.
error:     lighttpd-1.4.28-6.aos1.i686              Requires(hint): lighttpd-mod_accesslog
error: removing lighttpd-mod_accesslog-1.4.28-6.aos1.i686 "Requires: lighttpd = 1.4.28-6.aos1" from tsort relations.
error:     lighttpd-mod_accesslog-1.4.28-6.aos1.i686 Requires: lighttpd = 1.4.28-6.aos1

Those were easy to understand and to fix. I have eventually fixed all the loop
problems reported by rpm 4.5, although those problems usually were not fatal to
the build process.

Now I get a 'LOOP:' message with 30 packages, where relations between them are
not clear. It is the same package set where RPM 4.5 reported no loops, the same
package set where Poldek order verification finds no loops. Yet, RPM 5.4.12
from PLD reports a large loop and does the installation in wrong order.

> The easiest way to identify if a "fix" is functional is to use this
> macro to select exactly one edge to ignore in order to break the LOOP.a

Exactly one edge of 30 problematic edges reported?

And how is that a loop:

D: LOOP:
D: removing iproute2-3.4.0-1.aos2.i686 "Requires(auto): /bin/sh" from tsort relations.
D: removing pdksh-5.2.14-56.aos2.i686 "Requires: /usr/share/man/man1" from tsort relations.
D: removing axeos-pbx-api-0.13-aos1.noarch "Requires: /etc/lighttpd/webapps.d" from tsort relations.
D: removing lighttpd-1.4.32-1.aos1.i686 "Requires(pre): /bin/id" from tsort relations.
D: removing coreutils-8.16-1.aos1.i686 "Requires: /usr/share/locale/es/LC_MESSAGES" from tsort relations.
D: removing openssh-5.8p2-2.aos1.i686 "Requires: pam >= 0.99.7.1" from tsort relations.
D: removing pam-1.1.5-7.aos2.i686 "Requires: /usr/share/locale/mr/LC_MESSAGES" from tsort relations.
[...]

First two are clear:

iproute2-3.4.0-1.aos2.i686 requires '/bin/sh', so it pulls pdksh…
then pdksh-5.2.14-56.aos2.i686 requires '/usr/share/man/man1' and…?

axeos-pbx-api-0.13-aos1.noarch does not provide '/usr/share/man/man1' (it does not
even contain any manual pages), nor any of the 27 other packages listed below.

Maybe the package dependencies are right, but the RPM dependency checking is
broken for some reason? Any ideas?

Greets,
	Jacek


More information about the pld-devel-en mailing list