Debugging rpm package installation order

Jacek Konieczny jajcus at jajcus.net
Sun Aug 11 21:19:12 CEST 2013


On Fri, 09 Aug 2013 16:49:28 -0400
Jeffrey Johnson <n3npq at me.com> wrote:
> > But THERE IS NO LOOP. RPM shows loop due to some imaginary
> > dependency.
> > 
> 
> Before shouting (or comparing to rpm-4.5 behavior),

It was a bit rude, indeed. But I am frustrated. And my mail with
important details didn't get through to the list, I have not noticed it
before I shouted…

> Meanwhile you have reported a LOOP message (and you have already seen
> that the _dependency_whiteout macro changes/simplifies rpm behavior).

Yes, but I don't like using _dependency_whiteout macro applied to random
packages.

> rpm-5.x has additional dependency rules:
> 
> 	1) every file "requires" its parent directory
> 	2) every symlink "requires" its target end-point
> 
> I put the "requires" in quote solely because yoi will _NOT_ see this
> information with
> 	rpm -qp --requires foo*.rpm
> queries. Otherwise the additional "requires" behave exactly like
> other Requires:, both as dependency assertions and as pre-requsites
> for topologically sorting.

I understand this behaviour. But it only explains the 'requires' parts
of my „phantom” dependencies. Look once more at this:

D: LOOP:
D: removing iproute2-3.4.0-1.aos2.i686 "Requires: /sbin" from tsort relations.
D: removing net-snmp-5.6.1-4.aos3.i686 "Requires(auto): libnetsnmp.so.25" from tsort relations.
D: removing net-snmp-libs-5.6.1-4.aos3.i686 "Requires(auto): libnl.so.3" from tsort relations.
D: removing libnl-3.0-3.aos2.i686 "Requires(auto): libc.so.6" from tsort relations.
D: removing glibc-2.15-10.aos1.i686 "Requires: /usr/share/man/fr/man5" from tsort relations.
D: removing nagios-nrpe-2.12-2.aos3.i686 "Requires(post): /sbin/chkconfig" from tsort relations.
[...]

It is true, that iproute2 requires /sbin and that glibc requires
/usr/share/man/fr/man5, as those packages contain files in this directories.
But why does 'Requires: /sbin' pull 'net-snmp' and why 'Requires:
/usr/share/man/fr/man5' pulls nagios-nrpe? Both '/sbin' and
'/usr/share/man/fr/man5' are contained in the 'FHS' package.

The requirements are valid, but RPM seems to pick random packages to satisfy
them.

$ rpm -qp --provides nagios-nrpe-2.14-1.aos1.i686.rpm 
config(nagios-nrpe) = 0:2.14-1.aos1
nagios-core
nagios-nrpe = 0:2.14-1.aos1

$ rpm -qlp nagios-nrpe-2.14-1.aos1.i686.rpm
/etc/nagios/nrpe.cfg
/etc/nagios/nrpe.d
/etc/rc.d/init.d/nrpe
/usr/lib/tmpfiles.d/nagios-nrpe.conf
/usr/sbin/nrpe
/usr/share/doc/nagios-nrpe-2.14
/usr/share/doc/nagios-nrpe-2.14/Changelog.gz
/usr/share/doc/nagios-nrpe-2.14/LEGAL.gz
/usr/share/doc/nagios-nrpe-2.14/README.SSL.gz
/usr/share/doc/nagios-nrpe-2.14/README.Solaris.gz
/usr/share/doc/nagios-nrpe-2.14/README.gz
/usr/share/doc/nagios-nrpe-2.14/SECURITY.gz
/var/run/nrpe

$ rpm -qp --provides net-snmp-5.7.2-1.aos2.i686.rpm 
config(net-snmp) = 0:5.7.2-1.aos2
snmpd
net-snmp = 0:5.7.2-1.aos2

$ rpm -qlp net-snmp-5.7.2-1.aos2.i686.rpm
/etc/init/snmpd.conf
/etc/rc.d/init.d/snmpd
/etc/snmp/snmpd.conf
/etc/snmp/snmpd.local.conf
/etc/sysconfig/snmpd
/usr/bin/net-snmp-create-v3-user
/usr/bin/sshtosnmp
/usr/lib/snmp
/usr/lib/snmp/dlmod
/usr/sbin/snmpd
/usr/share/doc/net-snmp-5.7.2
/usr/share/doc/net-snmp-5.7.2/AGENT.txt.gz
/usr/share/doc/net-snmp-5.7.2/CHANGES.gz
/usr/share/doc/net-snmp-5.7.2/COPYING.gz
/usr/share/doc/net-snmp-5.7.2/ChangeLog.gz
/usr/share/doc/net-snmp-5.7.2/EXAMPLE.conf.def.gz
/usr/share/doc/net-snmp-5.7.2/EXAMPLE.conf.gz
/usr/share/doc/net-snmp-5.7.2/FAQ.gz
/usr/share/doc/net-snmp-5.7.2/NEWS.gz
/usr/share/doc/net-snmp-5.7.2/README.agent-mibs.gz
/usr/share/doc/net-snmp-5.7.2/README.agentx.gz
/usr/share/doc/net-snmp-5.7.2/README.gz
/usr/share/doc/net-snmp-5.7.2/README.snmpv3.gz
/usr/share/doc/net-snmp-5.7.2/README.sql.gz
/usr/share/doc/net-snmp-5.7.2/README.thread.gz
/usr/share/doc/net-snmp-5.7.2/TODO.gz
/usr/share/doc/net-snmp-5.7.2/local
/usr/share/doc/net-snmp-5.7.2/local/FAQ2HTML.gz
/usr/share/doc/net-snmp-5.7.2/local/Makefile.gz
/usr/share/doc/net-snmp-5.7.2/local/Makefile.in.gz
/usr/share/doc/net-snmp-5.7.2/local/README.mib2c.gz
/usr/share/doc/net-snmp-5.7.2/local/Version-Munge.pl.gz
/usr/share/doc/net-snmp-5.7.2/local/certgen-test.pl.gz
/usr/share/doc/net-snmp-5.7.2/local/convertcode.gz
/usr/share/doc/net-snmp-5.7.2/local/fixproc.gz
/usr/share/doc/net-snmp-5.7.2/local/fixproc.made.gz
/usr/share/doc/net-snmp-5.7.2/local/gittools
/usr/share/doc/net-snmp-5.7.2/local/gittools/shell-functions.gz
/usr/share/doc/net-snmp-5.7.2/local/html-add-header-footer.pl.gz
/usr/share/doc/net-snmp-5.7.2/local/html-textfile-fix.pl.gz
/usr/share/doc/net-snmp-5.7.2/local/ipf-mod.pl.gz
/usr/share/doc/net-snmp-5.7.2/local/ipf-mod.pl.made.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/default-mfd-top.m2c.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/details-enums.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/details-node.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/details-table.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-ctx-copy.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-ctx-get.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-ctx-set.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-data-allocate.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-data-context.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-get-U64.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-get-char.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-get-decl-bot.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-get-decl.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-get-long.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-get-oid.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-header-bottom.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-header-top.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-source-includes.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-table-constants.m2c.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-table-enums.m2c.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-table-indexes-from-oid.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-table-indexes-set.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-table-indexes-to-oid.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-table-indexes-varbind-setup.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-table-indexes.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-table-oids.m2c.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-value-map-func.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-value-map-reverse.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/generic-value-map.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/m2c-internal-warning.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/m2c_setup_enum.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/m2c_setup_node.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/m2c_setup_table.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/m2c_table_save_defaults.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/mfd-access-container-cached-defines.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/mfd-access-unsorted-external-defines.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/mfd-data-access.m2c.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/mfd-data-get.m2c.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/mfd-data-set.m2c.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/mfd-doxygen.m2c.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/mfd-interactive-setup.m2c.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/mfd-interface.m2c.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/mfd-makefile.m2m.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/mfd-persistence.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/mfd-readme.m2c.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/mfd-top.m2c.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/node-get.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/node-set.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/node-storage.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/node-validate.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/node-varbind-validate.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/parent-dependencies.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/parent-set.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/subagent.m2c.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/syntax-COUNTER64-get.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/syntax-DateAndTime-get.m2d.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/syntax-DateAndTime-get.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/syntax-DateAndTime-readme.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/syntax-InetAddress-get.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/syntax-InetAddress-set.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/syntax-InetAddressType-get.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/syntax-InetAddressType-set.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/syntax-RowStatus-dependencies.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/syntax-RowStatus-get.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/syntax-RowStatus-varbind-validate.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/syntax-StorageType-dependencies.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-conf.d/syntax-TestAndIncr-get.m2i.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c-update.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.access_functions.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.array-user.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.check_values.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.check_values_local.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.column_defines.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.column_enums.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.column_storage.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.container.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.create-dataset.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.emulation.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.genhtml.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.int_watch.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.iterate.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.iterate_access.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.made.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.mfd.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.notify.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.old-api.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.perl.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.raw-table.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.row.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.scalar.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/mib2c.table_data.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/minimalist
/usr/share/doc/net-snmp-5.7.2/local/minimalist/feature-check.gz
/usr/share/doc/net-snmp-5.7.2/local/minimalist/feature-makedocs.gz
/usr/share/doc/net-snmp-5.7.2/local/minimalist/feature-remove.gz
/usr/share/doc/net-snmp-5.7.2/local/minimalist/find-unused-code.gz
/usr/share/doc/net-snmp-5.7.2/local/minimalist/ignore.regexp.gz
/usr/share/doc/net-snmp-5.7.2/local/minimalist/remove-unneeded-modules.gz
/usr/share/doc/net-snmp-5.7.2/local/minimalist/removeifdefcode.pl.gz
/usr/share/doc/net-snmp-5.7.2/local/minimalist/sizetests.gz
/usr/share/doc/net-snmp-5.7.2/local/net-snmp-cert.conf.gz
/usr/share/doc/net-snmp-5.7.2/local/net-snmp-cert.gz
/usr/share/doc/net-snmp-5.7.2/local/net-snmp-cert.made.gz
/usr/share/doc/net-snmp-5.7.2/local/pass_persisttest.gz
/usr/share/doc/net-snmp-5.7.2/local/passtest.gz
/usr/share/doc/net-snmp-5.7.2/local/passtest.pl.gz
/usr/share/doc/net-snmp-5.7.2/local/snmp-bridge-mib.gz
/usr/share/doc/net-snmp-5.7.2/local/snmp-bridge-mib.made.gz
/usr/share/doc/net-snmp-5.7.2/local/snmp-ucd.sh.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpcheck.def.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpcheck.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpcheck.made.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmp-data
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmp-data/authopts.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmp-data/debugging.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmp-data/mibs.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmp-data/output.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmp-data/snmpconf-config.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmpd-data
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmpd-data/acl.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmpd-data/basic_setup.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmpd-data/extending.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmpd-data/monitor.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmpd-data/operation.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmpd-data/snmpconf-config.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmpd-data/system.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmpd-data/trapsinks.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmptrapd-data
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmptrapd-data/authentication.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmptrapd-data/formatting.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmptrapd-data/logging.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmptrapd-data/runtime.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmptrapd-data/snmpconf-config.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.dir/snmptrapd-data/traphandle.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpconf.made.gz
/usr/share/doc/net-snmp-5.7.2/local/snmpdump.pl.gz
/usr/share/doc/net-snmp-5.7.2/local/tkmib.gz
/usr/share/doc/net-snmp-5.7.2/local/tkmib.made.gz
/usr/share/doc/net-snmp-5.7.2/local/traptoemail.gz
/usr/share/doc/net-snmp-5.7.2/local/traptoemail.made.gz
/usr/share/man/man1/net-snmp-create-v3-user.1.gz
/usr/share/man/man5/snmpd.conf.5.gz
/usr/share/man/man5/snmpd.examples.5.gz
/usr/share/man/man5/snmpd.internal.5.gz
/usr/share/man/man5/variables.5.gz
/usr/share/man/man8/snmpd.8.gz
/usr/share/snmp/snmp_perl.pl
/var/lib/net-snmp
/var/log/snmpd.log

Do you still think everything is ok here?

Greets,
	Jacek


More information about the pld-devel-en mailing list