Summary: | emerge --depclean removes virtual packet, emerge world -uD adds it again | ||
---|---|---|---|
Product: | Portage Development | Reporter: | Martin Walch <walch.martin> |
Component: | Unclassified | Assignee: | Portage team <dev-portage> |
Status: | RESOLVED FIXED | ||
Severity: | minor | ||
Priority: | High | ||
Version: | unspecified | ||
Hardware: | x86 | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Bug Depends on: | |||
Bug Blocks: | 181949, 187293 | ||
Attachments: |
emerge --world -uD --debug > emerge_world_uD_debug 2>&1
emerge --world -uD --debug > emerge_depclean_debug 2>&1 emerge world -uD --debug > emerge_world_uD_debug 2>&1 make depclean more consistent with the update algorithm |
Description
Martin Walch
2007-07-06 12:52:35 UTC
Please attach --debug output for both the world and the depclean commands. Created attachment 124137 [details]
emerge --world -uD --debug > emerge_world_uD_debug 2>&1
Created attachment 124139 [details]
emerge --world -uD --debug > emerge_depclean_debug 2>&1
It seems like =virtual/jre-1.6.0 is masked for some reason. What does emerge do when you try `emerge -pv =virtual/jre-1.6.0`? emerge -pv =virtual/jre-1.6.0 These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild N ] dev-java/sun-jre-bin-1.6.0.01-r1 USE="X alsa nsplugin" 61,347 kB [ebuild R ] virtual/jre-1.6.0 0 kB Total: 2 packages (1 new, 1 reinstall), Size of downloads: 61,347 kB It looks like you need to install =sun-jdk-1.6* and you probably need to keyword it like this: echo "=dev-java/sun-jdk1.6* ~x86" >> /etc/portage/package.keywords (In reply to comment #6) > echo "=dev-java/sun-jdk1.6* ~x86" >> /etc/portage/package.keywords I made a typo, it's "=dev-java/sun-jdk-1.6* ~x86" In my /etc/portage/package.keywords I have this line: =dev-java/sun-jdk-1.6.0-r2 ~x86 when commenting it, I do not get any error or warning. Even not when doing an emerge world -uDN --with-bdeps y Also, it does not try to emerge a different jdk-1.6 or jre-1.6. emerge --decplean does not want to unmerge it. And emerge -e world is a bit strange: after commenting the above line: emerge -epv world | grep java | grep sun [ebuild R ] dev-java/sun-jdk-1.5.0.11-r1 USE="X alsa nsplugin -doc -examples -jce" 48,437 kB [ebuild Rf ] dev-java/sun-jdk-1.4.2.15 USE="X alsa nsplugin -doc -examples -jce" 0 kB after uncommenting the line: emerge -epv world | grep java | grep sun [ebuild R ] dev-java/sun-jdk-1.5.0.11-r1 USE="X alsa nsplugin -doc -examples -jce" 48,437 kB [ebuild Rf ] dev-java/sun-jdk-1.4.2.15 USE="X alsa nsplugin -doc -examples -jce" 0 kB [ebuild R ] dev-java/sun-jdk-1.6.0-r2 USE="X alsa nsplugin -doc -examples -jce" 61,249 kB No unfulfilled dependency or other error or warning I changed the line =dev-java/sun-jdk-1.6.0-r2 ~x86 to =dev-java/sun-jdk1.6* ~x86 This brought an update to sun-jdk-1.6.0.01. The problem is still the same. I mean =dev-java/sun-jdk-1.6* ~x86 (wrong copy&paste ;)) (In reply to comment #8) > =dev-java/sun-jdk-1.6.0-r2 ~x86 It's better not to use such specific atoms in package.keywords because when they bump it to a higher version and that one gets removed, you won't have a visible version of sun-jdk-1.6* in the tree so it will try to pull in jre-1.5* to satisfy >=jre-1.4 dependencies. Due to bug #149816, --depclean sees that you have a version of jre-1.6 installed and trees to remove jre-1.5* since it's not needed. (In reply to comment #8) > I changed the line > =dev-java/sun-jdk-1.6.0-r2 ~x86 > to > =dev-java/sun-jdk1.6* ~x86 > > This brought an update to sun-jdk-1.6.0.01. The problem is still the same. Are you sure? Now that you have a visible version of sun-jdk-1.6*, the jre-1.5* shouldn't be pulled in anymore. If it's still being pulled in then we need to look at another --debug output to see why it's still being pulled in. Maybe the problem is that you also need to keyword =virtual/jdk-1.6* since that one is also ~x86. (In reply to comment #10) > Are you sure? Now that you have a visible version of sun-jdk-1.6*, the > jre-1.5* shouldn't be pulled in anymore. If it's still being pulled in then we > need to look at another --debug output to see why it's still being pulled in. sun-jdk-1.6.0-r2 was, at least in this case, valid and visible, too. :) Yes, I am sure. I tested it after the update. I'll attach another --debug output. After adding =virtual/jdk-1.6* to package.keywords, portage does not try to emerge virtual/jre-1.5.0 anymore. But is this behaviour really wanted? Created attachment 124196 [details]
emerge world -uD --debug > emerge_world_uD_debug 2>&1
Created attachment 124200 [details, diff]
make depclean more consistent with the update algorithm
In svn r7196 I've fixed depclean to be consistent with the update algorithm such that it will remove jdk-1.6 in cases like this where the version you have is either masked or no longer available.
This has been released in 2.1.3_rc7. |