1 |
On Friday, 11 December 2020 18:08:55 GMT Alan Mackenzie wrote: |
2 |
> Hello, Gentoo. |
3 |
> |
4 |
> I'm angry, because I've wasted several hours trying to decypher a wholly |
5 |
> unintuitive error "message" from emerge. Because of this, it's been too |
6 |
> long since I've been able to update. Help, please! |
7 |
|
8 |
I feel your pain, as I have often sweated over messages emerge spews out at |
9 |
me, which tends to happen mostly when I do not have the time to delve into |
10 |
fixing it! I sometimes also find these messages to be unintuitive (for me) as |
11 |
I struggle to decipher 'portaguese'. :-) |
12 |
|
13 |
|
14 |
> The command I typed in was |
15 |
> |
16 |
> # time emerge -auND @world. |
17 |
> |
18 |
> I got back a horrendously long list of packages to merge (most of them |
19 |
> re-merges), followed by: |
20 |
|
21 |
There was a recent python upgrade, which caused a lot of packages with python |
22 |
as a dependency requiring an update or to be rebuilt. Other users were also |
23 |
caught up in this. A recommendation was to run emerge with '-U', rather than |
24 |
'-N', which may produce a smaller list of packages to update. |
25 |
|
26 |
|
27 |
> emerge: there are no ebuilds built with USE flags to satisfy |
28 |
> "dev-python/pycparser[python_targets_python3_6(-)?,python_targets_python3_7 |
29 |
> (-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_singl |
30 |
> e_target_python3_6(-),-python_single_target_python3_7(-),-python_single_targ |
31 |
> et_python3_8(-),-python_single_target_python3_9(-)]". !!! One of the |
32 |
> following packages is required to complete your request: - |
33 |
> dev-python/pycparser-2.20-r1::gentoo (Change USE: |
34 |
> +python_targets_python3_7) - dev-python/cffi-1.14.0-r3::gentoo (Change USE: |
35 |
> -python_targets_python3_7) (dependency required by |
36 |
> "dev-python/cffi-1.14.0-r3::gentoo" [ebuild]) (dependency required by |
37 |
> "dev-python/bcrypt-3.2.0::gentoo" [installed]) (dependency required by |
38 |
> "dev-python/paramiko-2.7.1::gentoo" [installed]) (dependency required by |
39 |
> "dev-vcs/bzr-2.7.0::gentoo" [installed]) |
40 |
> (dependency required by "@selected" [set]) |
41 |
> (dependency required by "@world" [argument]) |
42 |
> |
43 |
> . What is the syntax and semantics of that first line? Is it explained |
44 |
> somewhere in the emerge manual? What do the square brackets mean? What |
45 |
> do the commas within these square brackes mean? AND? OR? What about |
46 |
> the question marks following minus signs inside parentheses? |
47 |
|
48 |
Have a quick look at: |
49 |
|
50 |
https://wiki.gentoo.org/wiki/Handbook:AMD64/Working/Portage |
51 |
|
52 |
and in particular the section "Necessary USE flag changes", but also look at |
53 |
the output of the package which complains about change of USE, with eix, e.g.: |
54 |
|
55 |
$ eix -l dev-python/pycparser |
56 |
[I] dev-python/pycparser |
57 |
Available versions: |
58 |
2.20-r1 [PYTHON_TARGETS="pypy3 python3_6 python3_7 python3_8 |
59 |
python3_9"] ["|| ( python_targets_pypy3 python_targets_python3_6 |
60 |
python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 )"] |
61 |
Installed versions: 2.20-r1(12:55:41 05/12/20)(PYTHON_TARGETS="python3_8 |
62 |
-pypy3 -python3_6 -python3_7 -python3_9") |
63 |
Homepage: https://github.com/eliben/pycparser |
64 |
Description: C parser and AST generator written in Python |
65 |
|
66 |
The output explains what USE flags the package was installed with and what |
67 |
other flags are available. Other tools also show USE flags, e.g. |
68 |
|
69 |
$ equery u dev-python/pycparser |
70 |
|
71 |
Also, taking a look at the ebuild file could reveal similarly useful info: |
72 |
|
73 |
PYTHON_COMPAT=( python3_{6,7,8,9} pypy3 ) |
74 |
|
75 |
|
76 |
|
77 |
> What does "(Change USE: +python_targets_python3_7)" mean? Is it a |
78 |
> suggestion to me that I should change some USE flag somewhere? Or is it |
79 |
> telling me that a changed USE flag is the reason for all the trouble? Or |
80 |
> does it mean something else? |
81 |
|
82 |
It means the particular package was installed with some USE flag, which is now |
83 |
incompatible with the current version of the package or one of its |
84 |
dependencies. You'll need USE="+python_targets_python3_7" to be able to build |
85 |
it. Therefore you may need to intervene to change a previous USE flag setting |
86 |
to allow that package to rebuild/update. |
87 |
|
88 |
In cases like this I tend to grep quickly my /etc/portage settings to see if I |
89 |
have configured manually a USE flag, which is no longer needed; e.g. |
90 |
python3_5 - then unset it, unless you have a particular reason to force this |
91 |
USE flag for some package which you need on your system. |
92 |
|
93 |
grep python*_ -r /etc/portage |
94 |
|
95 |
|
96 |
> What is "dependency required by" supposed to mean? I can understand a |
97 |
> dependency of A on B. I can understand A being required by B. But a |
98 |
> dependency being required? what does this mean? |
99 |
|
100 |
I understand "dependency required by" to refer to package B, which is a build |
101 |
time dependency of package A. Package B also requires a change of USE flag, |
102 |
besides package A. |
103 |
|
104 |
(If I got this wrong someone will chime in to correct me). |
105 |
|
106 |
|
107 |
> Presumably to get out of the mess I've got to do something with one of |
108 |
> the packages which "is required to complete your request". |
109 |
|
110 |
I would interpret the message you got to mean: |
111 |
|
112 |
You have set some USE flag somewhere, or have previously emerged a package |
113 |
with a USE flag, which portage cannot resolve on its own using default USE |
114 |
flag settings. Therefore you need to decide what to do with USE flags |
115 |
identified in this message for each package mentioned. |
116 |
|
117 |
Some options to consider: |
118 |
|
119 |
1. You can remove any python specific USE settings as I suggest above and let |
120 |
portage find its own way using default USE settings as far as python versions |
121 |
goes. |
122 |
|
123 |
2. You can start emerging with '--oneshot' packages from the top in small |
124 |
batches and see if portage will eventually complete without further |
125 |
complaints. This won't work with python if you have specified (i.e. |
126 |
restricted) portage to use some deprecated python version - e.g. python-3.4 |
127 |
|
128 |
3. You can sometime uninstall an offending package (not yet its dependencies) |
129 |
and see if portage will complete your emerge list - then emerge the package |
130 |
you uninstalled if you still need it. WARNING: uninstalling python is a |
131 |
*bad* idea, because portage runs on python. Don't do it! |
132 |
|
133 |
4. When you finish run emerge -p -depclean to see if there are leftover |
134 |
dependencies no longer needed. Also look at 'eselect python' to clean up any |
135 |
dangling references to python versions no longer installed. |
136 |
|
137 |
|
138 |
> Surely somebody in the Gentoo portage team must see that printing human |
139 |
> readable error messages is a worthwhile thing to do. Surely? |
140 |
|
141 |
Heh! You assume devs speak the same language like the rest of the human |
142 |
species? ;-) |
143 |
|
144 |
I hope the above helps to untangle the spaghetti emerge produced in this |
145 |
instance, but post back if more help is needed. Someone more well versed in |
146 |
python and portage should contribute sooner or later. |