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.
> 
> I've spent around 2 hours trying to find documentation about this, and
> trying to find the pertinent file which ought to be called
> preserved-rebuilds or @preserved-rebuilds, or something like that.  If I
> could find this file, I might be able to see what is mis-triggering the
> build of php:8.2.  But this file's name and location are not documented
> in emerge's man page, and I can't find them anywhere on the Gentoo wiki.


preserved-rebuild is not a file, it is a function that dynamically
parses an internal portage cache. The same list that "continually being
pestered to do emerge @preserved-rebuild" prints, which looks something
like:

>>> Completed (1 of 1) virtual/package-manager-2::gentoo

 * GNU info directory index is up-to-date.

!!! existing preserved libs:
>>> package: dev-libs/apache-arrow-22.0.0
 *  - /usr/lib/libarrow.so.2000
 *  - /usr/lib/libarrow.so.2000.0.0
 *      used by
/usr/lib/python3.13/site-packages/pyarrow/_acero.cpython-313-i386-linux-gnu.so
(dev-python/pyarrow-20.0.0)
 *      used by
/usr/lib/python3.13/site-packages/pyarrow/_compute.cpython-313-i386-linux-gnu.so
(dev-python/pyarrow-20.0.0)
 *      used by
/usr/lib/python3.13/site-packages/pyarrow/_csv.cpython-313-i386-linux-gnu.so
(dev-python/pyarrow-20.0.0)
 *      used by 15 other files

[...]

Use emerge @preserved-rebuild to rebuild packages using these libraries



... meaning the package dev-libs/apache-arrow-22.0.0:

- has been **uninstalled** or **upgraded,

- provides two files which portage left behind, since another package
  uses it


The package dev-python/pyarrow-20.0.0:

- is installed, but might be in world, might not be

- has 3 named files + 15 others, which ELF-link to the other package's
  "left-behind files"

preserved-rebuild says "package dev-libs/arrow cannot be fully
uninstalled due to pyarrow, which has not been depcleaned. Maybe if
pyarrow is rebuilt, dev-libs/arrow can clean up?"



I do not know where you are looking instead, but portage already did
tell you what is "mis-triggering" the rebuild. In my example,
dev-python/pyarrow is equivalent to php:8.2, and dev-libs/arrow is
equivalent to whatever package is causing php:8.2 to rebuild.



> I've cleaned up my orphan packages (most of them), but don't trust
> --depclean to do so.  It still wants to remove some packages I need and
> want to keep.


It will, by definition, remove packages not in world (emerge foobar
without --oneshot).

So, one must conclude you, for whatever reason, wished to oneshot these
packages and not add them to world.

This is your choice and your right, but it renders depclean ineffective.

You may run:

emerge --depclean php:8.2 --verbose

and due to verbose, it will tell you what package, if any, prevents
php:8.2 from being explicitly uninstalled.

Otherwise, seek out the rest of your orphaned packages.


-- 
Eli Schwartz

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

Reply via email to