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).