Hello, Nuno.

On Mon, Feb 09, 2026 at 15:44:49 +0000, Nuno Silva wrote:
> On 2026-02-09, Alan Mackenzie wrote:

> > On Sun, Feb 08, 2026 at 19:29:04 -0500, Eli Schwartz wrote:
> >> On 2/8/26 6:42 PM, Alan Mackenzie wrote:
> >
> >> > Thanks for being so helpful.  "It" may not be confusing, but I am
> >> > confused.
> >> > 
> >> > What I want to know, what I asked for in my opening post, was how to
> >> > find what is causing that stale version of php to be merged in the first
> >> > place.  Then I could fix that cause and not have to worry about php:8.2
> >> > ever again.
> >> > 
> >> > The unhelpful half error message from emerge -a @preserved-rebuilds
> >> > doesn't tell me this.

> If you can't get a dependency relation in output with -tv, then it's
> being pulled as part of @preserved-rebuilds.

I think I now understand where the information is pulled in from (see
below.)

> [...]
> >
> > I think I know now what the cause of my problems is.  The ebuild file for
> > dev-libs/php-8.2.28-r1 had been removed (probably by emerge --sync)
> > despite there still being a package (media-libs/libvpx) using it.  This
> > may be a bug in portage, I'm not sure.
> >
> > When I try # USE='-avif -webp' emerge -pqeO @preserved-rebuild (following
> > the directions in the sets page of the wiki), I get
> >
> >     [ebuild     U ] dev-lang/php-8.2.30 [8.2.28-r1]
> >
> > ..  When I follow up with # equery depends dev-lang/php-8.2.28-r1, I get
> >
> >      * These packages depend on dev-lang/php-8.2.28-r1:
> >      media-libs/libvpx-1.15.2 (doc ? dev-lang/php)
> >
> > ..  There is something funny, here.  libvpx never had the doc USE flag, so
> > why does it want php?  Also, in the last day or so, I've rebuilt libvpx
> > which now "uses" php-8.3.29 (for some value of "uses").

> Wasn't the way to check for reverse dependencies affecting the graph of
> installed packages

>     emerge -pvc atom

> ?

    # USE='-avif -webp' emerge -pvc =dev-lang/php-8.2.28-r1

proposes exactly one package to delete, php-8.2.28-r1 itself.  There are
no dependencies on this version of php.

> > So, the question remains, why is emerge @preserved-rebuild trying to
> > merge php-8.2.30?  Nothing uses it.

> Because it is installed.

php-8.2.30 is not installed, but php-8.2.28-r1 is, sort of (see next
paragraph).  Nothing uses either of them.

It took me some while to work out what you meant by "installed",
especially given that the ebuild for php-8.2.28-r1 has been deleted
(from /usr/portage/dev-lang/php/...).  I think you mean that there is a
directory /var/db/pkg/dev-lang/php-8.2.28-r1, which is indeed the case.

[ Yes, I know /usr/portage is no longer the canonical place for ebuilds
to live, but this is a system from 2017, originally. ]

So emerge @preserved-rebuild is getting its information from
/var/db/pkg, it seems.

It is surely a bug that the ebuild can be removed from /usr/portage/...
whilst leaving that orphan directory in place under /var/db/....  It is
true that there is a second copy of the ebuild under /var/db/.... but
emerge doesn't look there for ebuilds.

> If you don't need this package and emerge -pvc shows nothing requiring
> it, maybe you can just remove it (e.g. with emerge -avc)?

I can't use emerge, because there's no ebuild for php-8.2.28-r1.  It's
looking as though I'll have to delete the directory under /var/db/... by
hand, together with all the associated files throughout the system.

Or, maybe if I let # USE='...' emerge =dev-lang/php-8.2.30 go ahead, it
will clear out the old directory in /var/db/...  Maybe.

Is this worth a bug report, or have I misunderstood something else?

> -- 
> Nuno Silva

-- 
Alan Mackenzie (Nuremberg, Germany).

Reply via email to