Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 592210 - emerge should be able to resolve and install additional issues...
Summary: emerge should be able to resolve and install additional issues...
Status: RESOLVED NEEDINFO
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal enhancement (vote)
Assignee: Gentoo Linux bug wranglers
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-08-26 22:49 UTC by Paul Preney
Modified: 2016-08-31 01:59 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Paul Preney 2016-08-26 22:49:53 UTC
When using emerge in sys-apps/portage I will often encounter situations when emerge will not be able to resolve what to do --but the "fix" I use from emerge's easily resolves it perhaps at the cost of re-building some packages. This "fix" works so long as there is are no (red) blocker situations.

The situation is this:

  !!! Multiple package instances within a single package slot have been pulled
  !!! into the dependency graph, resulting in a slot conflict:

when there are no RED blockers (which need to be looked at manually). Below the !!! message(s) is a listing, e.g.,

  app-text/poppler:0
  
    (app-text/poppler-0.42.0:0/59::gentoo, ebuild scheduled for merge) pulled in by
      =app-text/poppler-0.42.0 (Argument)
  
    (app-text/poppler-0.45.0:0/62::gentoo, installed) pulled in by
      >=app-text/poppler-0.32:0/62=[cxx,jpeg,lcms,tiff,xpdf-headers(+)] required by (net-print/cups-filters-1.5.0:0/0::gentoo, installed)
  [snip]

I noticed that the package names immediately after the left parenthesis are the ones the need to be "emerge -1av" installed.

Thus, my "fix" for this situation is as follows:

  1) Run the emerge command redirection its output, e.g.,

     emerge -uDNpv @world >e.txt 2>&1

  2) Delete what is before the !!! messages.

  3) Do an egrep to pull out the package names, e.g.,

     egrep -Eo '\([^-0-9][+A-Za-z0-9_.:/-]+' e.txt | \
       cut -c 2- | \
       sort -u | \
       while read pkg ; do echo '='$pkg ; done

     NOTE: This egrep is a hack for the package names so it has some false
           positives. (Replace it with a better regex for no false positives
           to save having to manually check its output before the next step.)

  4) Run: emerge -1av $(output_of_step_3)

Virtually all of the time, I find everything is fully resolved, upgraded, etc. It would be very nice if emerge could handle this automatically, or, via a command-line option. This also works very well when downgrading a package from a recent upgrade.

In the case with red blockers, it would be nice if emerge could handle everything like this not related to the red blocker packages as well. (Again, likely via a command-line option if it cannot or shouldn't be automatic. Clearly red blockers have to be resolved by a human.)

Doing this would make using emerge much easier for all AND reduce the time required to run emerge something like N times manually for the N package messages it outputs after the !!!.
Comment 1 Alex Xu (Hello71) 2016-08-31 01:59:16 UTC
please attach emerge --info