7247ecbda7
It can be observed that, while packages require their dependencies, the dependencies in turn are not always required by their packages: $ rpm -qa --requires |awk '{print$1}' |sort -u |xargs rpm -q --whatrequires >/dev/null warning: no package requires /bin/chgrp warning: no package requires /bin/chmod warning: no package requires /bin/mv warning: no package requires /etc/rc.d/init.d/postfix warning: no package requires /sbin/pidof warning: no package requires /sbin/post_ldconfig warning: no package requires /usr/bin/alt-docs-genextras warning: no package requires /usr/bin/gpasswd warning: no package requires /usr/bin/gtk-query-immodules-2.0 warning: no package requires /usr/bin/mkfontdir warning: no package requires /usr/sbin/alternatives-update warning: no package requires /usr/sbin/control-dump warning: no package requires /usr/sbin/control-restore warning: no package requires /usr/sbin/gconf_install_schema warning: no package requires /usr/sbin/groupadd warning: no package requires /usr/sbin/indexhtml-update warning: no package requires /usr/sbin/post_service warning: no package requires /usr/sbin/useradd warning: no package requires /usr/sbin/usermod warning: no package requires /usr/share/php/scripts/php_postin.sh warning: no package requires dvdrwtools-control warning: no package requires libguile-vhttpd warning: no package requires php5-suhosin warning: no package requires rpmlib(CompressedFileNames) warning: no package requires rpmlib(PartialHardlinkSets) warning: no package requires rpmlib(PayloadFilesHavePrefix) warning: no package requires rpmlib(PayloadIsLzma) warning: no package requires rpmlib(SetVersions) warning: no package requires rpmlib(VersionedDependencies) warning: no package requires x11presetdrv $ This is because rpm removes "install prerequisites" from rpmdb index. As a consequence, rpm will allow (but apt will not) to remove packages with "not required" dependencies: $ rpm -e --test x11presetdrv $ This is possibly wrong, and it makes dependency optimization hard (e.g. can't merge duplicate names with different flags). Also, the code was buggy: testing isInstallPreReq was not enough as it is not mutually exclusive with isErasePreReq - e.g. Requries(pre,preun) dependencies can be used in specfile. |
||
---|---|---|
.. | ||
.lclintrc | ||
db3.c | ||
dbconfig.c | ||
fprint.c | ||
fprint.h | ||
hdrinline.h | ||
hdrNVR.c | ||
header.c | ||
jhash.h | ||
legacy.c | ||
Makefile.am | ||
merge.c | ||
poptDB.c | ||
rpmdb.c | ||
rpmdb.h | ||
rpmhash.c | ||
rpmhash.h | ||
rpmvercmp.c | ||
tagname.c |