2013-05-17 45 views
1

我有包括規範像這樣的RPM:RPM需要程序包不觸發

Requires: jre >= 1.6.0 

不幸的是我有一個是顯示出了「DB提供了」 JRE,即使它確實至少一個系統不存在通過「rpm -q」命令。我試過重建數據庫(rpm --rebuilddb),但是沒有奏效。

如果我做一個測試安裝Oracle企業級Linux系統(OEL),我得到這樣的:(?也許CentOS的)

$ uname -a 
Linux localhost 2.6.32-100.34.1.el6uek.i686 #1 SMP Wed May 25 17:28:36 EDT 2011 i686 i686 i386 GNU/Linux 

$ rpm -qa | grep jre 

$ rpm -ivv --test foo-bar-branch_bar3.4.0_40478-1.noarch.rpm 2>&1 | grep jre 
D: Requires: jre >= 1.6.0         YES (db provides) 

$ rpm -ivv --test foo-bar-branch_bar3.4.0_40478-1.noarch.rpm 
D: ============== foo-bar-branch_bar3.4.0_40478-1.noarch.rpm 
D: loading keyring from pubkeys in /var/lib/rpm/pubkeys/*.key 
D: couldn't find any keys in /var/lib/rpm/pubkeys/*.key 
D: loading keyring from rpmdb 
D: opening db environment /var/lib/rpm cdb:mpool:joinenv 
D: opening db index  /var/lib/rpm/Packages rdonly mode=0x0 
D: locked db index  /var/lib/rpm/Packages 
D: opening db index  /var/lib/rpm/Name rdonly mode=0x0 
D: read h#  399 Header sanity check: OK 
D: added key gpg-pubkey-ec551f03-4c2d256a to keyring 
D: Using legacy gpg-pubkey(s) from rpmdb 
D: Expected size:  83726244 = lead(96)+sigs(180)+pad(4)+data(83725964) 
D: Actual size:  83726244 
D: foo-bar-branch_bar3.4.0_40478-1.noarch.rpm: Header SHA1 digest: OK (052080492165cf509fee5304fe508aa1954d98f4) 
D: ========== relocations 
D: added binary package [0] 
D: found 0 source and 1 binary packages 
D: ========== +++ foo-bar-branch_bar3.4.0_40478-1 noarch/linux 0x0 
D: opening db index  /var/lib/rpm/Basenames rdonly mode=0x0 
D: read h#  36 Header V3 RSA/SHA256 Signature, key ID ec551f03: OK 
D: Requires: /bin/bash          YES (db files) 
D: Requires: /bin/sh          YES (db files) 
D: Requires: /bin/sh          YES (cached) 
D: Requires: /bin/sh          YES (cached) 
D: Requires: /bin/sh          YES (cached) 
D: Requires: /bin/sh          YES (cached) 
D: opening db index  /var/lib/rpm/Providename rdonly mode=0x0 
D: read h#  362 Header V3 RSA/SHA256 Signature, key ID ec551f03: OK 
D: Requires: jre >= 1.6.0         YES (db provides) 
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: ========== recording tsort relations 
D: ========== tsorting packages (order, #predecessors, #succesors, tree, depth) 
D:  0 0 0 0 1 +foo-bar-branch_bar3.4.0_40478-1.noarch 
D: installing binary packages 
D: sanity checking 1 elements 
D: computing 661 file fingerprints 
Preparing packages for installation... 
D: computing file dispositions 
D: 0x0000fd00  4096  10118559  3213206/
D: ========== +++ foo-bar-branch_bar3.4.0_40478-1 noarch-linux 0x0 
D: Expected size:  83726244 = lead(96)+sigs(180)+pad(4)+data(83725964) 
D: Actual size:  83726244 
D: foo-bar-branch_bar3.4.0_40478-1.noarch: Header SHA1 digest: OK (052080492165cf509fee5304fe508aa1954d98f4) 
D: install: foo-bar-branch_bar3.4.0_40478-1 has 661 files, test = 1 
D: closed db index  /var/lib/rpm/Conflictname 
D: closed db index  /var/lib/rpm/Providename 
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 

在一個紅帽系統我得到這個:

$uname -a 
Linux arques 2.6.18-128.el5 #1 SMP Wed Dec 17 11:42:39 EST 2008 i686 athlon i386 GNU/Linux 

$ rpm -qa | grep jre 

$ rpm -ivv --test foo-bar-branch_bar3.4.0_40478-1.noarch.rpm 2>&1 | grep jre 
D: Requires: jre >= 1.6.0         NO 
D: package foo-bar-branch_bar3.4.0_40478-1.noarch has unsatisfied Requires: jre >= 1.6.0 
    jre >= 1.6.0 is needed by foo-bar-branch_bar3.4.0_40478-1.noarch 

$ rpm -ivv --test foo-bar-branch_bar3.4.0_40478-1.noarch.rpm 2>&1 
D: ============== foo-bar-branch_bar3.4.0_40478-1.noarch.rpm 
D: Expected size:  83726244 = lead(96)+sigs(180)+pad(4)+data(83725964) 
D: Actual size:  83726244 
D: foo-bar-branch_bar3.4.0_40478-1.noarch.rpm: Header SHA1 digest: OK (052080492165cf509fee5304fe508aa1954d98f4) 
D: added binary package [0] 
D: found 0 source and 1 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: ========== +++ foo-bar-branch_bar3.4.0_40478-1 noarch/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#  46 Header V3 DSA signature: NOKEY, key ID 37017186 
D: Requires: /bin/bash          YES (db files) 
D: read h#  46 Header V3 DSA signature: NOKEY, key ID 37017186 
D: Requires: /bin/sh          YES (db files) 
D: Requires: /bin/sh          YES (cached) 
D: Requires: /bin/sh          YES (cached) 
D: Requires: /bin/sh          YES (cached) 
D: Requires: /bin/sh          YES (cached) 
D: opening db index  /var/lib/rpm/Providename rdonly mode=0x0 
D: Requires: jre >= 1.6.0         NO 
D: package foo-bar-branch_bar3.4.0_40478-1.noarch has unsatisfied Requires: jre >= 1.6.0 
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: 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/Providename 
D: closed db index  /var/lib/rpm/Basenames 
D: closed db index  /var/lib/rpm/Packages 
D: closed db environment /var/lib/rpm/Packages 
error: Failed dependencies: 
    jre >= 1.6.0 is needed by foo-bar-branch_bar3.4.0_40478-1.noarch 
D: ========== recording tsort relations 
D: ========== tsorting packages (order, #predecessors, #succesors, tree, depth, breadth) 
D:  0 0 0 0 1 0 +foo-bar-branch_bar3.4.0_40478-1.noarch 
D: May free Score board((nil)) 

回答

2

我不知道另一個軟件包可以提供軟件包。我想如果是這樣的話,它仍然會出現在「rpm -qa」列表中。

$ rpm -q --whatprovides jre 
java-1.6.0-openjdk-1.6.0.0-1.40.1.9.10.el6_1.i686 
$ rpm -q --provides java-1.6.0-openjdk | grep jre 
jre = 1.6.0 
jre-1.6.0 = 1:1.6.0.0-1.40.1.9.10.el6_1 
jre-1.6.0-openjdk = 1:1.6.0.0-1.40.1.9.10.el6_1 
jre-openjdk = 1:1.6.0.0-1.40.1.9.10.el6_1 
+0

他們被稱爲'虛擬軟件包(http://www.rpm.org/max-rpm/s1-rpm-depend-manual-dependencies.html#S3-RPM-DEPEND-VIRTUAL-PACKAGES )並且可以非常有用。 –