On Friday, 11 December 2020 18:08:55 GMT Alan Mackenzie wrote: > Hello, Gentoo. > > I'm angry, because I've wasted several hours trying to decypher a wholly > unintuitive error "message" from emerge. Because of this, it's been too > long since I've been able to update. Help, please!
I feel your pain, as I have often sweated over messages emerge spews out at me, which tends to happen mostly when I do not have the time to delve into fixing it! I sometimes also find these messages to be unintuitive (for me) as I struggle to decipher 'portaguese'. :-) > The command I typed in was > > # time emerge -auND @world. > > I got back a horrendously long list of packages to merge (most of them > re-merges), followed by: There was a recent python upgrade, which caused a lot of packages with python as a dependency requiring an update or to be rebuilt. Other users were also caught up in this. A recommendation was to run emerge with '-U', rather than '-N', which may produce a smaller list of packages to update. > emerge: there are no ebuilds built with USE flags to satisfy > "dev-python/pycparser[python_targets_python3_6(-)?,python_targets_python3_7 > (-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_singl > e_target_python3_6(-),-python_single_target_python3_7(-),-python_single_targ > et_python3_8(-),-python_single_target_python3_9(-)]". !!! One of the > following packages is required to complete your request: - > dev-python/pycparser-2.20-r1::gentoo (Change USE: > +python_targets_python3_7) - dev-python/cffi-1.14.0-r3::gentoo (Change USE: > -python_targets_python3_7) (dependency required by > "dev-python/cffi-1.14.0-r3::gentoo" [ebuild]) (dependency required by > "dev-python/bcrypt-3.2.0::gentoo" [installed]) (dependency required by > "dev-python/paramiko-2.7.1::gentoo" [installed]) (dependency required by > "dev-vcs/bzr-2.7.0::gentoo" [installed]) > (dependency required by "@selected" [set]) > (dependency required by "@world" [argument]) > > . What is the syntax and semantics of that first line? Is it explained > somewhere in the emerge manual? What do the square brackets mean? What > do the commas within these square brackes mean? AND? OR? What about > the question marks following minus signs inside parentheses? Have a quick look at: https://wiki.gentoo.org/wiki/Handbook:AMD64/Working/Portage and in particular the section "Necessary USE flag changes", but also look at the output of the package which complains about change of USE, with eix, e.g.: $ eix -l dev-python/pycparser [I] dev-python/pycparser Available versions: 2.20-r1 [PYTHON_TARGETS="pypy3 python3_6 python3_7 python3_8 python3_9"] ["|| ( python_targets_pypy3 python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 )"] Installed versions: 2.20-r1(12:55:41 05/12/20)(PYTHON_TARGETS="python3_8 -pypy3 -python3_6 -python3_7 -python3_9") Homepage: https://github.com/eliben/pycparser Description: C parser and AST generator written in Python The output explains what USE flags the package was installed with and what other flags are available. Other tools also show USE flags, e.g. $ equery u dev-python/pycparser Also, taking a look at the ebuild file could reveal similarly useful info: PYTHON_COMPAT=( python3_{6,7,8,9} pypy3 ) > What does "(Change USE: +python_targets_python3_7)" mean? Is it a > suggestion to me that I should change some USE flag somewhere? Or is it > telling me that a changed USE flag is the reason for all the trouble? Or > does it mean something else? It means the particular package was installed with some USE flag, which is now incompatible with the current version of the package or one of its dependencies. You'll need USE="+python_targets_python3_7" to be able to build it. Therefore you may need to intervene to change a previous USE flag setting to allow that package to rebuild/update. In cases like this I tend to grep quickly my /etc/portage settings to see if I have configured manually a USE flag, which is no longer needed; e.g. python3_5 - then unset it, unless you have a particular reason to force this USE flag for some package which you need on your system. grep python*_ -r /etc/portage > What is "dependency required by" supposed to mean? I can understand a > dependency of A on B. I can understand A being required by B. But a > dependency being required? what does this mean? I understand "dependency required by" to refer to package B, which is a build time dependency of package A. Package B also requires a change of USE flag, besides package A. (If I got this wrong someone will chime in to correct me). > Presumably to get out of the mess I've got to do something with one of > the packages which "is required to complete your request". I would interpret the message you got to mean: You have set some USE flag somewhere, or have previously emerged a package with a USE flag, which portage cannot resolve on its own using default USE flag settings. Therefore you need to decide what to do with USE flags identified in this message for each package mentioned. Some options to consider: 1. You can remove any python specific USE settings as I suggest above and let portage find its own way using default USE settings as far as python versions goes. 2. You can start emerging with '--oneshot' packages from the top in small batches and see if portage will eventually complete without further complaints. This won't work with python if you have specified (i.e. restricted) portage to use some deprecated python version - e.g. python-3.4 3. You can sometime uninstall an offending package (not yet its dependencies) and see if portage will complete your emerge list - then emerge the package you uninstalled if you still need it. WARNING: uninstalling python is a *bad* idea, because portage runs on python. Don't do it! 4. When you finish run emerge -p -depclean to see if there are leftover dependencies no longer needed. Also look at 'eselect python' to clean up any dangling references to python versions no longer installed. > Surely somebody in the Gentoo portage team must see that printing human > readable error messages is a worthwhile thing to do. Surely? Heh! You assume devs speak the same language like the rest of the human species? ;-) I hope the above helps to untangle the spaghetti emerge produced in this instance, but post back if more help is needed. Someone more well versed in python and portage should contribute sooner or later.
signature.asc
Description: This is a digitally signed message part.

