On 9/23/24 6:08 PM, Alan Mackenzie wrote:
>> Do you have that little faith in the Gentoo Developers, that you think
>> we'd make a USE flag change that made everyone's systems suddenly break?
> 
> It happens, from time to time, by accident.  For example, emerge
> --depclean on my system wants to unmerge openrc.  Not a deliberate move
> by the developers, just some accident.  But it's the reason I don't do
> emerge --depclean, ever.


This should not generally be possible. The @system set contains
virtual/service-manager, so you cannot depclean that.

$ emerge -pvc systemd

Calculating dependencies... done!
  sys-apps/systemd-255.11 pulled in by:
[...]
    virtual/service-manager-1-r2 requires sys-apps/systemd
[...]

$ emerge -pvc virtual/service-manager

Calculating dependencies... done!
  virtual/service-manager-1-r2 pulled in by:
    @system requires virtual/service-manager




And this works the same in an openrc chroot as well!

# emerge -pvc virtual/service-manager

Calculating dependencies... done!
  virtual/service-manager-1-r2 pulled in by:
    @system requires virtual/service-manager

# emerge -pvc openrc

Calculating dependencies... done!
  sys-apps/openrc-0.54.2 pulled in by:
    net-misc/netifrc-0.7.8-r1 requires >=sys-apps/openrc-0.15
    virtual/service-manager-1-r2 requires sys-apps/openrc





It does that using an "any-of" dependency:

# cat /var/db/pkg/virtual/service-manager-1-r2/RDEPEND
|| ( sys-apps/openrc sys-apps/openrc-navi sys-apps/s6-rc
sys-apps/systemd sys-process/runit virtual/daemontools )


So, @system requires you to have any one of:

- openrc
- openrc-navi (a testing fork with openrc user services)
- s6
- systemd
- runit
- daemontools


It's possible you have installed another one of these packages too. If
you do, then virtual/service-manager will still be satisfied, and it
will allow you to depclean openrc.


In theory, one should not have multiple init systems installed. And
openrc is the preferred satisfier, so if you use `emerge --depclean` it
will try to depclean the other package, not openrc. But you can depclean
openrc itself in that case, since portage doesn't know which init system
you intend to keep.

Even in this case it emits a warning:

!!! 'sys-apps/openrc' (virtual/service-manager) is part of your system
profile.
!!! Unmerging it may be damaging to your system.


to make sure you are fully aware that you intend to depclean a package
that *might* be the wrong one.


-- 
Eli Schwartz

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

Reply via email to