May be it would be good to add a special set (named all for example) for the all packages installed in the system to workaround issues with packages that are not listed in the world set even with all dependences included Reproducible: Always
We already have that in portage-2.2. Here's the entry from /usr/share/portage/config/sets.conf: # A superset of the classic <parameter>world</parameter> target, a set created # by this class contains SLOT atoms to match all installed packages. Note that # use of this set makes it impossible for emerge to solve blockers by automatic # uninstallation of blocked packages. [installed] class = portage.sets.dbapi.EverythingSet world-candidate = False The thing about blockers is a pretty severe problem though, since automatic blocker is an important feature now and if users blindly use @installed for all updates then they'll hit blockers that would otherwise be solved automatically. If we're going to encourage people to use @installed, then we'll need more advanced blocker handling in order to automatically solve this problem. However, I'm curious why you think that you need this set anyway. Generally, `emerge --update --deep --with-bdeps=y world` is the perfect command for a full update of all packages, as mentioned at the beginning of the faq: http://www.gentoo.org/proj/en/portage/doc/faq.xml Any package that aren't updated by that command should either be added to your world file, or else removed via --depclean.
Well, there are generally two reasons. First, there are some packages that I don't want to upgrade as often as the whole world, but no packages depend on them, so I would like to have a possibility to update system with (full update) or without them (`emerge -vnD world`). Second, I found an interesting situation myself with two real packages. Consider two packages, A and B-1.0, A depends on B, both are installed. One day we have a new version of B, say B-2.0, and the maintainer of A decided that it should use only B-2.0, so now A depends on B >=2, it was chainged in ebuild. But A is not reinstalled (A is fine), so we have a system with A and B-1.0 installed, both work fine even with an old version of B, but depclean shows that B-1.0 should be removed as it is not in world and is not used by any packages. And B now cannot be upgraded via `emerge -vnD world`! Having a full set it can be also workarounded.