Bug 141418
Summary: | RPM installation ordering predictibility (tsort) | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 3 | Reporter: | Johnray Fuller <jrfuller> |
Component: | rpm | Assignee: | Paul Nasrat <nobody+pnasrat> |
Status: | CLOSED WONTFIX | QA Contact: | Mike McLean <mikem> |
Severity: | medium | Docs Contact: | |
Priority: | medium | ||
Version: | 3.0 | CC: | nobody+pnasrat |
Target Milestone: | --- | ||
Target Release: | --- | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Fixed In Version: | Doc Type: | Bug Fix | |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2006-01-20 19:31:49 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Johnray Fuller
2004-11-30 23:59:55 UTC
OK, B needs "Requires: A", but cannot be changed. One way to figger is to add a package D that has Requires: A B and change C to do Requires: A D rather than Requires: A B that might install in ABDC order, and D is harmless. There is also a (undocumented) --anaconda CLI option that will "best effort" preserve exactly the order of the package arguments. By "best effort", I mean that packages will only be reordered to resolve existing and necessary dependencies, the original argument order will be preserved as closely as possible while also satisfying dependency closure. It's very hard to say why B is being ordered before A without real world details (like rpm -Uvv A*.rpm B*.rpm C*.rpm from whatever A/B/C actually are). DANG! I tried a package D, but had package A depend on it! I was very close :-) Here is the -ivv spewage for rpm -i A B C: # rpm -ivv A-1-1.i386.rpm B-1-1.i386.rpm C-1-1.i386.rpm D: ============== A-1-1.i386.rpm D: Expected size: 2004 = lead(96)+sigs(180)+pad(4)+data(1724) D: Actual size: 2004 D: A-1-1.i386.rpm: MD5 digest: OK (d3a0250f6ce2739f8af0c80daa1c4e04) D: added binary package [0] D: ============== B-1-1.i386.rpm D: Expected size: 2006 = lead(96)+sigs(180)+pad(4)+data(1726) D: Actual size: 2006 D: B-1-1.i386.rpm: MD5 digest: OK (2d4040f7fb2a686fc778709418059afa) D: added binary package [1] D: ============== C-1-1.i386.rpm D: Expected size: 2017 = lead(96)+sigs(180)+pad(4)+data(1737) D: Actual size: 2017 D: C-1-1.i386.rpm: MD5 digest: OK (ad242ce567dc303181fa8e203cb444a3) D: added binary package [2] D: found 0 source and 3 binary packages D: opening db environment /var/lib/rpm/Packages joinenv D: opening db index /var/lib/rpm/Packages rdonly mode=0x0 D: locked db index /var/lib/rpm/Packages D: ========== +++ A-1-1 i386/linux 0x0 D: opening db index /var/lib/rpm/Depends create mode=0x0 D: opening db index /var/lib/rpm/Basenames rdonly mode=0x0 D: opening db index /var/lib/rpm/Pubkeys rdonly mode=0x0 D: read h# 890 Header sanity check: OK D: ========== DSA pubkey id 219180cddb42a60e D: read h# 4 Header V3 DSA signature: OK, key ID db42a60e D: Requires: /bin/sh YES (db files) D: Requires: /bin/sh YES (cached) D: Requires: /bin/sh YES (cached) D: Requires: rpmlib(CompressedFileNames) <= 3.0.4-1 YES (rpmlib provides) D: Requires: rpmlib(PayloadFilesHavePrefix) <= 4.0-1 YES (rpmlib provides) D: opening db index /var/lib/rpm/Conflictname rdonly mode=0x0 D: ========== +++ B-1-1 i386/linux 0x0 D: Requires: /bin/sh YES (cached) D: Requires: /bin/sh YES (cached) D: Requires: /bin/sh YES (cached) D: Requires: rpmlib(CompressedFileNames) <= 3.0.4-1 YES (cached) D: Requires: rpmlib(PayloadFilesHavePrefix) <= 4.0-1 YES (cached) D: ========== +++ C-1-1 i386/linux 0x0 D: Requires: /bin/sh YES (cached) D: Requires: /bin/sh YES (cached) D: Requires: /bin/sh YES (cached) D: Requires: A YES (added provide) D: Requires: B YES (added provide) D: Requires: rpmlib(CompressedFileNames) <= 3.0.4-1 YES (cached) D: Requires: rpmlib(PayloadFilesHavePrefix) <= 4.0-1 YES (cached) D: closed db index /var/lib/rpm/Pubkeys D: closed db index /var/lib/rpm/Depends D: closed db index /var/lib/rpm/Conflictname D: closed db index /var/lib/rpm/Basenames D: closed db index /var/lib/rpm/Packages D: closed db environment /var/lib/rpm/Packages D: ========== recording tsort relations D: Requires: A YES (added provide) D: ignore package name relation(s) [0] libtermcap -> bash D: ignore package name relation(s) [1] modutils -> vixie-cron D: ignore package name relation(s) [2] ypbind -> yp-tools D: ignore package name relation(s) [3] ghostscript-fonts -> ghostscript D: ignore package name relation(s) [4] libgnomeprint15 -> gnome-print D: ignore package name relation(s) [5] nautilus -> nautilus-mozilla D: ignore package name relation(s) [6] tcl -> postgresql-tcl D: ignore package name relation(s) [7] arts -> kdelibs-sound D: ignore package name relation(s) [8] pango-gtkbeta-devel -> pango-gtkbeta D: ignore package name relation(s) [9] XFree86 -> Mesa D: ignore package name relation(s) [10] compat-glibc -> db2 D: ignore package name relation(s) [11] compat-glibc -> db1 D: ignore package name relation(s) [12] pam -> initscripts D: ignore package name relation(s) [13] initscripts -> sysklogd D: Requires: B YES (added provide) D: ========== tsorting packages (order, #predecessors, #succesors, tree, depth) D: 0 0 1 1 0 +B-1-1 D: 1 0 1 0 0 +A-1-1 D: ========== successors only (4154 bytes) D: 2 2 0 0 1 +C-1-1 D: installing binary packages D: opening db environment /var/lib/rpm/Packages joinenv D: opening db index /var/lib/rpm/Packages create mode=0x42 D: mounted filesystems: D: i dev bsize bavail iavail mount point D: 0 0x0305 4096 385318 735330 / D: 1 0x0002 1024 0 -1 /proc D: 2 0x0007 1024 0 -1 /dev/pts D: 3 0x0008 1024 0 -1 /proc/bus/usb D: 4 0x0302 1024 100878 37792 /boot D: 5 0x0009 4096 63921 63920 /dev/shm D: 6 0x0307 4096 257861 993524 /work D: 7 0x0307 4096 257861 993524 /home D: 8 0x0306 4096 1063329 824991 /work/RHEL-21 D: 9 0x0303 1024 117905 39793 /work/RHEL-21/boot D: 10 0x0301 4096 36852 1244875 /backup D: 11 0x0307 4096 257861 993524 /foo D: 12 0x0307 4096 257861 993524 /foo2 D: 13 0x0307 4096 257861 993524 /var/spool/up2date D: sanity checking 3 elements D: opening db index /var/lib/rpm/Name create mode=0x42 D: computing 6 file fingerprints Preparing packages for installation... D: computing file dispositions D: opening db index /var/lib/rpm/Basenames create mode=0x42 D: ========== +++ B-1-1 i386-linux 0x0 D: Expected size: 2006 = lead(96)+sigs(180)+pad(4)+data(1726) D: Actual size: 2006 D: install: B-1-1 has 2 files, test = 0 B-1-1 D: ========== Directories not explicitly included in package: D: 0 /tmp/ D: ========== D: fini 040755 2 ( 0, 0) 0 /tmp/B D: fini 100755 1 ( 0, 0) 0 /tmp/B/B.txt;41adfd0b GZDIO: 1 reads, 368 total bytes in 0.000087 secs D: +++ h# 1609 Header SHA1 digest: OK (c50f6ae0972751d729e8e1d8e037330ecfbf5590) D: adding "B" to Name index. D: adding 2 entries to Basenames index. D: opening db index /var/lib/rpm/Group create mode=0x42 D: adding "System Environment" to Group index. D: opening db index /var/lib/rpm/Requirename create mode=0x42 D: adding 5 entries to Requirename index. D: opening db index /var/lib/rpm/Providename create mode=0x42 D: adding "B" to Providename index. D: opening db index /var/lib/rpm/Dirnames create mode=0x42 D: adding 2 entries to Dirnames index. D: opening db index /var/lib/rpm/Requireversion create mode=0x42 D: adding 5 entries to Requireversion index. D: opening db index /var/lib/rpm/Provideversion create mode=0x42 D: adding "1-1" to Provideversion index. D: opening db index /var/lib/rpm/Installtid create mode=0x42 D: adding 1 entries to Installtid index. D: opening db index /var/lib/rpm/Sigmd5 create mode=0x42 D: adding 1 entries to Sigmd5 index. D: opening db index /var/lib/rpm/Sha1header create mode=0x42 D: adding "c50f6ae0972751d729e8e1d8e037330ecfbf5590" to Sha1header index. D: opening db index /var/lib/rpm/Filemd5s create mode=0x42 D: adding 2 entries to Filemd5s index. D: install: %post(B-1-1) synchronous scriptlet start D: install: %post(B-1-1) execv(/bin/sh) pid 6595 D: install: waitpid(6595) rc 6595 status 0 secs 0.052 D: opening db index /var/lib/rpm/Triggername create mode=0x42 D: ========== +++ A-1-1 i386-linux 0x0 D: Expected size: 2004 = lead(96)+sigs(180)+pad(4)+data(1724) D: Actual size: 2004 D: install: A-1-1 has 2 files, test = 0 A-1-1 D: ========== Directories not explicitly included in package: D: 0 /tmp/ D: ========== D: fini 040755 2 ( 0, 0) 0 /tmp/A D: fini 100755 1 ( 0, 0) 0 /tmp/A/A.txt;41adfd0b GZDIO: 1 reads, 368 total bytes in 0.000024 secs D: +++ h# 1610 Header SHA1 digest: OK (aceaa0fa0c406c97efcf5d2c62754de6d8411642) D: adding "A" to Name index. D: adding 2 entries to Basenames index. D: adding "System Environment" to Group index. D: adding 5 entries to Requirename index. D: adding "A" to Providename index. D: adding 2 entries to Dirnames index. D: adding 5 entries to Requireversion index. D: adding "1-1" to Provideversion index. D: adding 1 entries to Installtid index. D: adding 1 entries to Sigmd5 index. D: adding "aceaa0fa0c406c97efcf5d2c62754de6d8411642" to Sha1header index. D: adding 2 entries to Filemd5s index. D: install: %post(A-1-1) synchronous scriptlet start D: install: %post(A-1-1) execv(/bin/sh) pid 6596 D: install: waitpid(6596) rc 6596 status 0 secs 0.001 D: ========== +++ C-1-1 i386-linux 0x0 D: Expected size: 2017 = lead(96)+sigs(180)+pad(4)+data(1737) D: Actual size: 2017 D: install: C-1-1 has 2 files, test = 0 C-1-1 D: ========== Directories not explicitly included in package: D: 0 /tmp/ D: ========== D: fini 040755 2 ( 0, 0) 0 /tmp/C D: fini 100755 1 ( 0, 0) 0 /tmp/C/C.txt;41adfd0b GZDIO: 1 reads, 368 total bytes in 0.000021 secs D: +++ h# 1611 Header SHA1 digest: OK (edb6dd4040a92eaab7cb10f97406702102011875) D: adding "C" to Name index. D: adding 2 entries to Basenames index. D: adding "System Environment" to Group index. D: adding 7 entries to Requirename index. D: adding "C" to Providename index. D: adding 2 entries to Dirnames index. D: adding 7 entries to Requireversion index. D: adding "1-1" to Provideversion index. D: adding 1 entries to Installtid index. D: adding 1 entries to Sigmd5 index. D: adding "edb6dd4040a92eaab7cb10f97406702102011875" to Sha1header index. D: adding 2 entries to Filemd5s index. D: install: %post(C-1-1) asynchronous scriptlet start D: install: %post(C-1-1) execv(/bin/sh) pid 6597 D: install: waitpid(6597) rc 6597 status 0 secs 0.039 D: closed db index /var/lib/rpm/Filemd5s D: closed db index /var/lib/rpm/Sha1header D: closed db index /var/lib/rpm/Sigmd5 D: closed db index /var/lib/rpm/Installtid D: closed db index /var/lib/rpm/Provideversion D: closed db index /var/lib/rpm/Requireversion D: closed db index /var/lib/rpm/Dirnames D: closed db index /var/lib/rpm/Triggername D: closed db index /var/lib/rpm/Providename D: closed db index /var/lib/rpm/Requirename D: closed db index /var/lib/rpm/Group D: closed db index /var/lib/rpm/Basenames D: closed db index /var/lib/rpm/Name D: closed db index /var/lib/rpm/Packages D: closed db environment /var/lib/rpm/Packages # rpm -ivv B-1-1.i386.rpm A-1-1.i386.rpm C-1-1.i386.rpm D: ============== B-1-1.i386.rpm D: Expected size: 2006 = lead(96)+sigs(180)+pad(4)+data(1726) D: Actual size: 2006 D: B-1-1.i386.rpm: MD5 digest: OK (2d4040f7fb2a686fc778709418059afa) D: added binary package [0] D: ============== A-1-1.i386.rpm D: Expected size: 2004 = lead(96)+sigs(180)+pad(4)+data(1724) D: Actual size: 2004 D: A-1-1.i386.rpm: MD5 digest: OK (d3a0250f6ce2739f8af0c80daa1c4e04) D: added binary package [1] D: ============== C-1-1.i386.rpm D: Expected size: 2017 = lead(96)+sigs(180)+pad(4)+data(1737) D: Actual size: 2017 D: C-1-1.i386.rpm: MD5 digest: OK (ad242ce567dc303181fa8e203cb444a3) D: added binary package [2] D: found 0 source and 3 binary packages D: opening db environment /var/lib/rpm/Packages joinenv D: opening db index /var/lib/rpm/Packages rdonly mode=0x0 D: locked db index /var/lib/rpm/Packages D: ========== +++ B-1-1 i386/linux 0x0 D: opening db index /var/lib/rpm/Depends create mode=0x0 D: opening db index /var/lib/rpm/Basenames rdonly mode=0x0 D: opening db index /var/lib/rpm/Pubkeys rdonly mode=0x0 D: read h# 890 Header sanity check: OK D: ========== DSA pubkey id 219180cddb42a60e D: read h# 4 Header V3 DSA signature: OK, key ID db42a60e D: Requires: /bin/sh YES (db files) D: Requires: /bin/sh YES (cached) D: Requires: /bin/sh YES (cached) D: Requires: rpmlib(CompressedFileNames) <= 3.0.4-1 YES (rpmlib provides) D: Requires: rpmlib(PayloadFilesHavePrefix) <= 4.0-1 YES (rpmlib provides) D: opening db index /var/lib/rpm/Conflictname rdonly mode=0x0 D: ========== +++ A-1-1 i386/linux 0x0 D: Requires: /bin/sh YES (cached) D: Requires: /bin/sh YES (cached) D: Requires: /bin/sh YES (cached) D: Requires: rpmlib(CompressedFileNames) <= 3.0.4-1 YES (cached) D: Requires: rpmlib(PayloadFilesHavePrefix) <= 4.0-1 YES (cached) D: ========== +++ C-1-1 i386/linux 0x0 D: Requires: /bin/sh YES (cached) D: Requires: /bin/sh YES (cached) D: Requires: /bin/sh YES (cached) D: Requires: A YES (added provide) D: Requires: B YES (added provide) D: Requires: rpmlib(CompressedFileNames) <= 3.0.4-1 YES (cached) D: Requires: rpmlib(PayloadFilesHavePrefix) <= 4.0-1 YES (cached) D: closed db index /var/lib/rpm/Pubkeys D: closed db index /var/lib/rpm/Depends D: closed db index /var/lib/rpm/Conflictname D: closed db index /var/lib/rpm/Basenames D: closed db index /var/lib/rpm/Packages D: closed db environment /var/lib/rpm/Packages D: ========== recording tsort relations D: Requires: A YES (added provide) D: ignore package name relation(s) [0] libtermcap -> bash D: ignore package name relation(s) [1] modutils -> vixie-cron D: ignore package name relation(s) [2] ypbind -> yp-tools D: ignore package name relation(s) [3] ghostscript-fonts -> ghostscript D: ignore package name relation(s) [4] libgnomeprint15 -> gnome-print D: ignore package name relation(s) [5] nautilus -> nautilus-mozilla D: ignore package name relation(s) [6] tcl -> postgresql-tcl D: ignore package name relation(s) [7] arts -> kdelibs-sound D: ignore package name relation(s) [8] pango-gtkbeta-devel -> pango-gtkbeta D: ignore package name relation(s) [9] XFree86 -> Mesa D: ignore package name relation(s) [10] compat-glibc -> db2 D: ignore package name relation(s) [11] compat-glibc -> db1 D: ignore package name relation(s) [12] pam -> initscripts D: ignore package name relation(s) [13] initscripts -> sysklogd D: Requires: B YES (added provide) D: ========== tsorting packages (order, #predecessors, #succesors, tree, depth) D: 0 0 1 1 0 +A-1-1 D: 1 0 1 0 0 +B-1-1 D: ========== successors only (4154 bytes) D: 2 2 0 0 1 +C-1-1 D: installing binary packages D: opening db environment /var/lib/rpm/Packages joinenv D: opening db index /var/lib/rpm/Packages create mode=0x42 D: mounted filesystems: D: i dev bsize bavail iavail mount point D: 0 0x0305 4096 385315 735330 / D: 1 0x0002 1024 0 -1 /proc D: 2 0x0007 1024 0 -1 /dev/pts D: 3 0x0008 1024 0 -1 /proc/bus/usb D: 4 0x0302 1024 100878 37792 /boot D: 5 0x0009 4096 63921 63920 /dev/shm D: 6 0x0307 4096 257859 993524 /work D: 7 0x0307 4096 257859 993524 /home D: 8 0x0306 4096 1063329 824991 /work/RHEL-21 D: 9 0x0303 1024 117905 39793 /work/RHEL-21/boot D: 10 0x0301 4096 36852 1244875 /backup D: 11 0x0307 4096 257859 993524 /foo D: 12 0x0307 4096 257859 993524 /foo2 D: 13 0x0307 4096 257859 993524 /var/spool/up2date D: sanity checking 3 elements D: opening db index /var/lib/rpm/Name create mode=0x42 D: computing 6 file fingerprints Preparing packages for installation... D: computing file dispositions D: opening db index /var/lib/rpm/Basenames create mode=0x42 D: ========== +++ A-1-1 i386-linux 0x0 D: Expected size: 2004 = lead(96)+sigs(180)+pad(4)+data(1724) D: Actual size: 2004 D: install: A-1-1 has 2 files, test = 0 A-1-1 D: ========== Directories not explicitly included in package: D: 0 /tmp/ D: ========== D: fini 040755 2 ( 0, 0) 0 /tmp/A D: fini 100755 1 ( 0, 0) 0 /tmp/A/A.txt;41adfe58 GZDIO: 1 reads, 368 total bytes in 0.000081 secs D: +++ h# 1612 Header SHA1 digest: OK (aceaa0fa0c406c97efcf5d2c62754de6d8411642) D: adding "A" to Name index. D: adding 2 entries to Basenames index. D: opening db index /var/lib/rpm/Group create mode=0x42 D: adding "System Environment" to Group index. D: opening db index /var/lib/rpm/Requirename create mode=0x42 D: adding 5 entries to Requirename index. D: opening db index /var/lib/rpm/Providename create mode=0x42 D: adding "A" to Providename index. D: opening db index /var/lib/rpm/Dirnames create mode=0x42 D: adding 2 entries to Dirnames index. D: opening db index /var/lib/rpm/Requireversion create mode=0x42 D: adding 5 entries to Requireversion index. D: opening db index /var/lib/rpm/Provideversion create mode=0x42 D: adding "1-1" to Provideversion index. D: opening db index /var/lib/rpm/Installtid create mode=0x42 D: adding 1 entries to Installtid index. D: opening db index /var/lib/rpm/Sigmd5 create mode=0x42 D: adding 1 entries to Sigmd5 index. D: opening db index /var/lib/rpm/Sha1header create mode=0x42 D: adding "aceaa0fa0c406c97efcf5d2c62754de6d8411642" to Sha1header index. D: opening db index /var/lib/rpm/Filemd5s create mode=0x42 D: adding 2 entries to Filemd5s index. D: install: %post(A-1-1) synchronous scriptlet start D: install: %post(A-1-1) execv(/bin/sh) pid 6617 D: install: waitpid(6617) rc 6617 status 0 secs 0.001 D: opening db index /var/lib/rpm/Triggername create mode=0x42 D: ========== +++ B-1-1 i386-linux 0x0 D: Expected size: 2006 = lead(96)+sigs(180)+pad(4)+data(1726) D: Actual size: 2006 D: install: B-1-1 has 2 files, test = 0 B-1-1 D: ========== Directories not explicitly included in package: D: 0 /tmp/ D: ========== D: fini 040755 2 ( 0, 0) 0 /tmp/B D: fini 100755 1 ( 0, 0) 0 /tmp/B/B.txt;41adfe58 GZDIO: 1 reads, 368 total bytes in 0.000022 secs D: +++ h# 1613 Header SHA1 digest: OK (c50f6ae0972751d729e8e1d8e037330ecfbf5590) D: adding "B" to Name index. D: adding 2 entries to Basenames index. D: adding "System Environment" to Group index. D: adding 5 entries to Requirename index. D: adding "B" to Providename index. D: adding 2 entries to Dirnames index. D: adding 5 entries to Requireversion index. D: adding "1-1" to Provideversion index. D: adding 1 entries to Installtid index. D: adding 1 entries to Sigmd5 index. D: adding "c50f6ae0972751d729e8e1d8e037330ecfbf5590" to Sha1header index. D: adding 2 entries to Filemd5s index. D: install: %post(B-1-1) synchronous scriptlet start D: install: %post(B-1-1) execv(/bin/sh) pid 6618 D: install: waitpid(6618) rc 6618 status 0 secs 0.001 D: ========== +++ C-1-1 i386-linux 0x0 D: Expected size: 2017 = lead(96)+sigs(180)+pad(4)+data(1737) D: Actual size: 2017 D: install: C-1-1 has 2 files, test = 0 C-1-1 D: ========== Directories not explicitly included in package: D: 0 /tmp/ D: ========== D: fini 040755 2 ( 0, 0) 0 /tmp/C D: fini 100755 1 ( 0, 0) 0 /tmp/C/C.txt;41adfe58 GZDIO: 1 reads, 368 total bytes in 0.000021 secs D: +++ h# 1614 Header SHA1 digest: OK (edb6dd4040a92eaab7cb10f97406702102011875) D: adding "C" to Name index. D: adding 2 entries to Basenames index. D: adding "System Environment" to Group index. D: adding 7 entries to Requirename index. D: adding "C" to Providename index. D: adding 2 entries to Dirnames index. D: adding 7 entries to Requireversion index. D: adding "1-1" to Provideversion index. D: adding 1 entries to Installtid index. D: adding 1 entries to Sigmd5 index. D: adding "edb6dd4040a92eaab7cb10f97406702102011875" to Sha1header index. D: adding 2 entries to Filemd5s index. D: install: %post(C-1-1) asynchronous scriptlet start D: install: %post(C-1-1) execv(/bin/sh) pid 6619 D: install: waitpid(6619) rc 6619 status 0 secs 0.001 D: closed db index /var/lib/rpm/Filemd5s D: closed db index /var/lib/rpm/Sha1header D: closed db index /var/lib/rpm/Sigmd5 D: closed db index /var/lib/rpm/Installtid D: closed db index /var/lib/rpm/Provideversion D: closed db index /var/lib/rpm/Requireversion D: closed db index /var/lib/rpm/Dirnames D: closed db index /var/lib/rpm/Triggername D: closed db index /var/lib/rpm/Providename D: closed db index /var/lib/rpm/Requirename D: closed db index /var/lib/rpm/Group D: closed db index /var/lib/rpm/Basenames D: closed db index /var/lib/rpm/Name D: closed db index /var/lib/rpm/Packages D: closed db environment /var/lib/rpm/Packages Partial ordering is intrinsically unpredictable. |