As discussed in bug 370295, looks like would be desirable to improve warning message a bit to stop giving the impression of being contradictory because of offering a package to be depcleaned at first and, just after that, suggesting to not uninstall it due it being in system set pulled in by a virtual. Current message is: !!! 'app-editors/nano' (virtual/editor) is part of your system profile. !!! Unmerging it may be damaging to your system. app-editors/nano selected: 2.3.1 protected: none omitted: none All selected packages: app-editors/nano-2.3.1 A proposal could be the following: !!! 'app-editors/nano' is part of your system profile pulled in by virtual/editor. You will need to replace its usage with installed virtual providers (like: $(list of installed providers) to prevent damaging to your system. app-editors/nano selected: 2.3.1 protected: none omitted: none All selected packages: app-editors/nano-2.3.1 Thanks a lot Reproducible: Always
*** Bug 377045 has been marked as a duplicate of this bug. ***
*** Bug 380515 has been marked as a duplicate of this bug. ***
In my opinion, that additional layer of warning does not agree with what I perceive as Gentoo's policy of being a streamlined, uncluttered system for people who know what they are doing. In particular, everyone using emerge --depclean is assumed to know very well what (s)he is doing. We have one uniform layer of safety already, two, actually. The countdown and --ask. In fact you may ask why rm does not have any such safety but emerge does. But the layer already exists and is uniform. Another, third layer of warning the user that he may remove packages which (s)he will possibly need in the future, is clutter, in my opinion. If someone has --deselected a package and consequently --depcleans the tree, he doesn't need to be reminded that the packages which he --deselected will be removed. As if this weren't enough arguments against this additional warning, it may be noted that virtual/editor is in the @system set, ensuring that there will always be an editor. In fact, the whole risk of removing the "wrong" package is already solved by that. There is no need for a superflous warning of the user of something he commanded to do, which is already assured to not cause any harm by other means. Thanks.
Displaying no warning is certainly preferable to displaying the current warning. As comment 0 explains, even though --depclean is supposed to be the safe way to remove redundant packages, the warning tells the user that this action "may be damaging to your system." It says this even though some other editor is installed to satisfy virtual/editor (else --depclean wouldn't select nano for removal). But I also understand why nano may warrant more of a warning than other packages --depclean identifies as redundant: unlike those other redundancies, nano may achieve that status through an unexpected and unintuitive route. One common case is reported in bug 370295 comment 49. There are various problems with the way the warning is currently worded, however. 1. Most objectionable is the phrase "may be damaging to your system." It may damage the sysadmin's sanity to have nano unexpectedly yanked, but the system itself will be just fine. :-) 2. The warning doesn't clearly identify what's in the system set: it says "'app-editors/nano' (virtual/editor) is part of your system profile," which is kind of backwards. It is virtual/editor that is in the system set, NOT app-editors/nano, and the wording does not make that clear. 3. Last and least: in portage documentation, system is called a "set," not a "profile," and the terminology in the warning message should be consistent with that. All that said, I don't care much for the alternate wording proposed in comment 0: it's long, still slightly ambiguous, and not proper English. Here is my proposed wording: The system set contains virtual/editor, which is satisfied by [other editor]. If you want to keep app-editors/nano, you must add it to the world set. This wording (a) clearly tells the user what is in the system set, (b) identifies the alternate editor that makes --depclean consider nano redundant, and (c) provides a specific action that can be taken to retain nano.
*** Bug 510390 has been marked as a duplicate of this bug. ***
I raised this again recently as Bug 510390 & have been alerted to this older bug (thanks to Ben Kohler). It's now 3 years since it was first reported & I'm surprised it's taken this long to decide what to do. What's needed is fairly simple. (1) The warning given when flag -C is used should be something close to : "WARNING ! -- don't use this flag unless you have previously tested the result with 'emerge -cpv <pkg>' & satisfied yourself that no harm to your system will result". That's plain, accurate & tells a naive user what to do instead or first. (2) Instead of the present behaviour with flag -c , which treats Nano as a requirement, Portage should check whether any of the other packages satisfying the virtual are installed & if they are, it should proceed to unmerge Nano without further comment. Only if Nano is the last (only) package satisfying the virtual should Portage refuse to do the unmerge & issue a warning. This should, of course, apply generally to virtuals & their satisfying packages, not just Nano. This requires someone to do a bit of Python programming to patch Portage, but that doesn't look as if it would be very complex or time-consuming. (3) When Portage does find that a user is about to use flag -c to delete the only package satisfying a virtual (as under (2)), it should issue a warning something like : "<pkg> is the only package installed to satisfy <virtual>. If you unmerge it, you may damage the normal working of other packages & in some cases you could render your system unusable". That's fairly accurate. As someone has pointed out, unmerging the last package satisfying 'virtual/editor' won't prevent your system booting or most uses of it, but it could be embarrassing if you need to do some sysadmin jobs ; unmerging the last package satisfying 'virtual/package-manager' or '/shadow' or '/ssh' or '/udev' could have much more serious effects. I am always grateful for Gentoo devs' unpaid work & hope these suggestions will help solve this little problem without much more fuss or time lost by anyone.
*** Bug 523066 has been marked as a duplicate of this bug. ***
*** Bug 642484 has been marked as a duplicate of this bug. ***
*** Bug 647262 has been marked as a duplicate of this bug. ***
Philip Webb said: > (2) Instead of the present behaviour..., Portage should check whether any > of the other packages satisfying the virtual are installed & if they are, > it should proceed to unmerge Nano without further comment. ... Certainly without a false warning. $ portageq expand_virtual / virtual/editor app-editors/nano $ emerge --unmerge app-editors/nano !!! 'app-editors/nano' (virtual/editor) is part of your system profile. !!! Unmerging it may be damaging to your system. >>> Unmerging ... $ portageq expand_virtual / virtual/editor app-editors/emacs Safe and sound. The warning was false.
(In reply to Philip Webb from comment #6) > I raised this again recently as Bug 510390 & have been alerted to this older > bug (thanks to Ben Kohler). It's now 3 years since it was first reported & > I'm surprised it's taken this long to decide what to do. What's needed is > fairly simple. > > (1) The warning given when flag -C is used should be something close to : > > "WARNING ! -- don't use this flag > unless you have previously tested the result with 'emerge -cpv <pkg>' > & satisfied yourself that no harm to your system will result". > > That's plain, accurate & tells a naive user what to do instead or first. > > (2) Instead of the present behaviour with flag -c , which treats Nano as a > requirement, Portage should check whether any of the other packages > satisfying the virtual are installed & if they are, it should proceed to > unmerge Nano without further comment. Only if Nano is the last (only) > package satisfying the virtual should Portage refuse to do the unmerge & > issue a warning. This should, of course, apply generally to virtuals & > their satisfying packages, not just Nano. This requires someone to do a bit > of Python programming to patch Portage, but that doesn't look as if it would > be very complex or time-consuming. > > (3) When Portage does find that a user is about to use flag -c to delete the > only package satisfying a virtual (as under (2)), it should issue a warning > something like : > > "<pkg> is the only package installed to satisfy <virtual>. > If you unmerge it, you may damage the normal working of other packages > & in some cases you could render your system unusable". > > That's fairly accurate. As someone has pointed out, unmerging the last > package satisfying 'virtual/editor' won't prevent your system booting or > most uses of it, but it could be embarrassing if you need to do some > sysadmin jobs ; unmerging the last package satisfying > 'virtual/package-manager' or '/shadow' or '/ssh' or '/udev' could have much > more serious effects. > > I am always grateful for Gentoo devs' unpaid work & hope these suggestions > will help solve this little problem without much more fuss or time lost by > anyone. I'm surprised this hasn't been solved yet. This proposed behavior seems appropriate and without a doubt better than the current misleading warning.