Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 47921 - Shouldn't emerge -u world behave like emerge -uD world by default?
Summary: Shouldn't emerge -u world behave like emerge -uD world by default?
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Enhancement/Feature Requests (show other bugs)
Hardware: All Linux
: High enhancement (vote)
Assignee: Portage team
: 49142 162853 (view as bug list)
Depends on:
Blocks: 155723
  Show dependency tree
Reported: 2004-04-15 06:44 UTC by Devios McShady
Modified: 2013-02-15 23:31 UTC (History)
4 users (show)

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


Note You need to log in before you can comment on or make changes to this bug.
Description Devios McShady 2004-04-15 06:44:25 UTC
I recommended to a user in the #gentoo IRC channel that he use emerge -puvD arch, and was asked by a user what the -D is for.  This spawned a conversation about when using -D is appropriate, and no one was able to argue that it does NOT make sense for emerge NOT to behave as if -D had been entered by default.  Here is the conversation:

<Devi0s> liquidbit: ACCEPT_KEYWORDS="~x86" emerge -pvD arch
<Katana`> D ?
<Katana`> what's the D flag for ?
<Devi0s> the D flag is for: I don't know when to use --deep and when it is unecessary, so I pretty m uch just include it all of the time... 
<EagleTitan> Devi0s: the D flag is used to track dependancies that also need updates when running an emerge -u world
<Devi0s> does that mean I only need to use D when doing emerge world or emerge system?
<Sunflare> It depends.
<Sunflare> Do you explicitly emerge every dependency?
<Sunflare> i.e. Do you type 'emerge kde' or do you type 'emerge arts kdebase kdefoo kdebar kdebaz ...'
<Devi0s> of course not
<slarti`> Devi0s: remember that if libraries are upgraded or otherwise modified under programs that link to them, that program might break till it is recompiled
<Devi0s> Sunflare: so it's safe to say I should probably include -D for everything like I have been doing...
<slarti`> Devi0s: you will have to do a revdep-rebuild to check for and fix any problems like that
<Sunflare> Devi0s: It certainly doesn't hurt.  I use -D religiously, even though I /do/ emerge everything explicitly ('emerge arts kdebase ...').
<slarti`> Devi0s: .. a lot of the time, I think upgrading deeply is a bit of a waste of time
* Devi0s still doesn't get it... isn't a large development goal for a package manager to make these decisions for you automatically?  I still don't understand why the heck anyone would ever NOT use -D... 
<bus_drivr> Devi0s: if there are no "Depends" you would not need -D
<Sunflare> Right.  All those packages with no dependencies.
<Sunflare> ;)
<Devi0s> bus_drivr: but including it wouldn't change the behavior of portage in those cases, right?
<bus_drivr> Devi0s: no
<Sunflare> Devi0s: One way to look at it is that --deep catches updated libraries, which is typically A Good Thing.  F'rex, if you use GNOME, it'll catch a revbump in gtk+, which (unless you emerged it explicitly) you'd otherwise miss.
<Devi0s> Then I think it would make more sense to make -D happen by default, and have a switch to PREVENT that behavior... doesn't this lead to more noobs with healthier gentoo systems?
<Sunflare> Devi0s: Perhaps.  --deep didn't even exist until "recently," hence my habit of explicitly emerging every package and dependency to populate my world file.
<Devi0s> Sunflare: sounds uneccesarily painful to me...
<Sunflare> Devi0s: Old habits die hard. ;)

Reproducible: Always
Steps to Reproduce:
Comment 1 Radek Podgorny 2004-04-15 08:30:50 UTC
I think it should behave like this (--deep on) in ALL cases... :-) You never know how many steps it takes from the "world file" record to the package that is to be upgraded and if you didn't use the --deep you wouldn't even know about it...

Comment 2 SpanKY gentoo-dev 2004-04-27 15:04:32 UTC
*** Bug 49142 has been marked as a duplicate of this bug. ***
Comment 3 Andre Hinrichs 2004-04-28 01:29:44 UTC
Does anybody here really think, that my reported bug 49142 is a duplicate of this?
I don't think so, since 'emerge -De world' does not change behaviour to
'emerge -e world' on my system.

SpanKY, why do you think that?
Comment 4 Tony Murray 2004-05-13 00:40:29 UTC
I don't think that -D should be the default...
1. It takes longer to calculate, because it has to check everything installed
2. For the most part, people to not need to update every single little library
3. If they are a control freak, and want to, the will probably know about -D
4. If I emerge something, but don't want some dep it has that doesn't really need, then -D will want to re-emerge that dep, -u won't

Then again, I could just be babbling, but I would definately do some more looking into it, before making -D the default behavior...
Comment 5 Alec Warner (RETIRED) archtester gentoo-dev Security 2005-01-17 20:58:48 UTC
emerge -u world is for upgrading your world file.  -D means look for and upgrade all the dependencies ( ie packages not in world, but still installed ).  This is useful to have around especially if you are running a tight ship ( production server, who needs to update all the deps?  Critical changes only ).  As for the default...If you look at 'emerge -u world' emerge is doing exactly what it 'looks' like.  It's updating everything in 'world'.  It doesn't say anything about dependencies, and I don't think it should touch them automatically.  
Comment 6 Jason Stubbs (RETIRED) gentoo-dev 2005-07-28 07:24:40 UTC
Putting a hold on feature requests for portage as they are drowning out the 
bugs. Most of these features should be available in the next major version of 
portage. But for the time being, they are just drowning out the major bugs and 
delaying the next version's progress. 
Any bugs that contain patches and any bugs for etc-update or dispatch-conf can 
be reopened. Sorry, I'm just not good enough with bugzilla. ;) 
Comment 7 Marius Mauch (RETIRED) gentoo-dev 2007-01-11 12:44:49 UTC
Reopening for consideration.
Comment 8 Zac Medico gentoo-dev 2007-01-11 19:36:00 UTC
If we make --deep default then we'll also need to allow the user the control how greedy the update selection algorithm is.  For example, perhaps the user wants to ensure that all dependencies are satisfied (which --deep does) but only wants to perform the minimal possible number of updates (--deep triggers the maximum possible number of updates).  Bug #38674 is related.
Comment 9 Zac Medico gentoo-dev 2007-01-19 23:29:28 UTC
*** Bug 162853 has been marked as a duplicate of this bug. ***
Comment 10 Jeremy Butler 2007-03-18 16:47:17 UTC
I dont think that forcing -D is a good idea. However, It would be nice to have a config file or environment variable where a user can specify that he wants to force -D.
Comment 11 Zac Medico gentoo-dev 2007-06-01 23:28:50 UTC
(In reply to comment #10)
> I dont think that forcing -D is a good idea. However, It would be nice to have
> a config file or environment variable where a user can specify that he wants to
> force -D.

The can be done with EMERGE_DEFAULT_OPTS in make.conf.

I don't want to make --deep default since then we'd need to add a --shallow option and that would probably just be confusing for users.  In the future, I plan for the resolver to automatically ensure that deep dependencies are satisfied, but deep dependencies won't be upgraded unless the user specifically requests it via --deep.
Comment 12 Zac Medico gentoo-dev 2013-02-15 23:31:15 UTC
Alternatively, we might add a special "upgrade" target that would be analogous to debian's "apt-get upgrade" command: