Re: Deletion of just installed port-packages: a question [Trying to avoid being part of other somewhat-related discussions]

From: Mark Millard <marklmi_at_yahoo.com>
Date: Fri, 08 Aug 2025 15:58:02 UTC
On Aug 6, 2025, at 22:44, Jesús Daniel Colmenares Oviedo <dtxdf@freebsd.org> wrote:

> Perhaps something like this (with a few additions):
> 
> ```
> pkg query %n | grep -vEe '^(FreeBSD-.+)' | xargs pkg remove -n && pkg autoremove -n && pkg clean -n
> ```

"pkg delete -a" (no -f) is documented to exclude deletion of
pkg itself. So, may be:

pkg query %n | grep -v -Ee '^(FreeBSD-.+)' -Ee '^(pkg)' | xargs pkg remove -n && pkg autoremove -n && pkg clean -n

Also: I'm not sure that pkg clean -n is appropriate for
main or stable/* where the upstream updates can happen
multiple times per day and could easily lead to removals
from /var/cache/pkg/ between deliberate pkgbase updates.


WARNING:

Last I tried, "pkg delete -a" in a pkgbase context left
pkg present --but broken!-- by deleting system things
pkg and pkg-static needed to be operational.

pkg-static tries to run other programs --and so is not
fully self contained to be fully operational, despite
its static build. I've not analyzed the transitive
closure of the indirect usage.

As for /usr/local/sbin/pkg : a lot has to be in place
just for t he libraries to load (the below example is
based on what I happen to be currently running, a main
[os: 15] context):

In short form . . .

# ldd /usr/local/sbin/pkg
/usr/local/sbin/pkg:
	libelf.so.2 => /lib/libelf.so.2 (0x6b7b34403000)
	libjail.so.1 => /lib/libjail.so.1 (0x6b7b34881000)
	libm.so.5 => /lib/libm.so.5 (0x6b7b3d540000)
	libarchive.so.7 => /usr/lib/libarchive.so.7 (0x6b7b45240000)
	libz.so.6 => /lib/libz.so.6 (0x6b7b34f22000)
	libutil.so.9 => /lib/libutil.so.9 (0x6b7b35e79000)
	libssl.so.30 => /usr/lib/libssl.so.30 (0x6b7b4cc60000)
	libcrypto.so.30 => /lib/libcrypto.so.30 (0x6b7b36200000)
	libthr.so.3 => /lib/libthr.so.3 (0x6b7b37092000)
	libc.so.7 => /lib/libc.so.7 (0x6b7b37600000)
	libbz2.so.4 => /usr/lib/libbz2.so.4 (0x6b7b37b2b000)
	liblzma.so.5 => /usr/lib/liblzma.so.5 (0x6b7b58660000)
	libbsdxml.so.4 => /lib/libbsdxml.so.4 (0x6b7b3856c000)
	libprivatezstd.so.5 => /usr/lib/libprivatezstd.so.5 (0x6b7b64080000)
	libsys.so.7 => /lib/libsys.so.7 (0x6b7b6d8b0000)
	libmd.so.7 => /lib/libmd.so.7 (0x6b7b3940b000)

libelf.so.2 and libjail.so.1 are unique compared to
/usr/sbin/pkg . (See below.)

Even /usr/sbin/pkg needs a lot of libraries to be
loaded in order to operate:

In short form . . .

# ldd /usr/sbin/pkg
/usr/sbin/pkg:
	libarchive.so.7 => /usr/lib/libarchive.so.7 (0x650fcbbe0000)
	libfetch.so.6 => /usr/lib/libfetch.so.6 (0x650fbaffd000)
	libprivateucl.so.1 => /usr/lib/libprivateucl.so.1 (0x650fbb7c1000)
	libcrypto.so.30 => /lib/libcrypto.so.30 (0x650fbba00000)
	libssl.so.30 => /usr/lib/libssl.so.30 (0x650fd36f0000)
	libutil.so.9 => /lib/libutil.so.9 (0x650fbc29e000)
	libmd.so.7 => /lib/libmd.so.7 (0x650fb9bf2000)
	libc.so.7 => /lib/libc.so.7 (0x650fbe000000)
	libz.so.6 => /lib/libz.so.6 (0x650fbc96c000)
	libbz2.so.4 => /usr/lib/libbz2.so.4 (0x650fbab03000)
	liblzma.so.5 => /usr/lib/liblzma.so.5 (0x650fe1cf0000)
	libbsdxml.so.4 => /lib/libbsdxml.so.4 (0x650fbe53d000)
	libprivatezstd.so.5 => /usr/lib/libprivatezstd.so.5 (0x650fe6f60000)
	libm.so.5 => /lib/libm.so.5 (0x650fea7b0000)
	libthr.so.3 => /lib/libthr.so.3 (0x650fbdb6a000)
	libsys.so.7 => /lib/libsys.so.7 (0x650ff7d40000)

libfetch.so.6 and libprivateucl.so.1 are unique compared
to /usr/local/sbin/pkg . (See earlier.)

In long form, tracing dependencies, those are:

# ldd -a /usr/local/sbin/pkg
/usr/local/sbin/pkg:
	libelf.so.2 => /lib/libelf.so.2 (0x675c6aa14000)
	libjail.so.1 => /lib/libjail.so.1 (0x675c6b4da000)
	libm.so.5 => /lib/libm.so.5 (0x675c6c480000)
	libarchive.so.7 => /usr/lib/libarchive.so.7 (0x675c702b0000)
	libz.so.6 => /lib/libz.so.6 (0x675c6c62d000)
	libutil.so.9 => /lib/libutil.so.9 (0x675c6c93b000)
	libssl.so.30 => /usr/lib/libssl.so.30 (0x675c7ed40000)
	libcrypto.so.30 => /lib/libcrypto.so.30 (0x675c6d400000)
	libthr.so.3 => /lib/libthr.so.3 (0x675c6e7f5000)
	libc.so.7 => /lib/libc.so.7 (0x675c71200000)
/lib/libelf.so.2:
	libc.so.7 => /lib/libc.so.7 (0x675c71200000)
/lib/libjail.so.1:
	libc.so.7 => /lib/libc.so.7 (0x675c71200000)
/lib/libm.so.5:
	libc.so.7 => /lib/libc.so.7 (0x675c71200000)
/usr/lib/libarchive.so.7:
	libz.so.6 => /lib/libz.so.6 (0x675c6c62d000)
	libbz2.so.4 => /usr/lib/libbz2.so.4 (0x675c6f34c000)
	liblzma.so.5 => /usr/lib/liblzma.so.5 (0x675c7f1d0000)
	libbsdxml.so.4 => /lib/libbsdxml.so.4 (0x675c71aaa000)
	libprivatezstd.so.5 => /usr/lib/libprivatezstd.so.5 (0x675c8e1b0000)
	libcrypto.so.30 => /lib/libcrypto.so.30 (0x675c6d400000)
	libc.so.7 => /lib/libc.so.7 (0x675c71200000)
/lib/libz.so.6:
	libc.so.7 => /lib/libc.so.7 (0x675c71200000)
/lib/libutil.so.9:
	libc.so.7 => /lib/libc.so.7 (0x675c71200000)
/usr/lib/libssl.so.30:
	libcrypto.so.30 => /lib/libcrypto.so.30 (0x675c6d400000)
	libc.so.7 => /lib/libc.so.7 (0x675c71200000)
/lib/libcrypto.so.30:
	libthr.so.3 => /lib/libthr.so.3 (0x675c6e7f5000)
	libc.so.7 => /lib/libc.so.7 (0x675c71200000)
/lib/libthr.so.3:
	libc.so.7 => /lib/libc.so.7 (0x675c71200000)
	libsys.so.7 => /lib/libsys.so.7 (0x675c98c80000)
/lib/libc.so.7:
	libsys.so.7 => /lib/libsys.so.7 (0x675c98c80000)
/usr/lib/libbz2.so.4:
	libc.so.7 => /lib/libc.so.7 (0x675c71200000)
/usr/lib/liblzma.so.5:
	libmd.so.7 => /lib/libmd.so.7 (0x675c72717000)
	libthr.so.3 => /lib/libthr.so.3 (0x675c6e7f5000)
	libc.so.7 => /lib/libc.so.7 (0x675c71200000)
/lib/libbsdxml.so.4:
	libc.so.7 => /lib/libc.so.7 (0x675c71200000)
/usr/lib/libprivatezstd.so.5:
	libthr.so.3 => /lib/libthr.so.3 (0x675c6e7f5000)
	libc.so.7 => /lib/libc.so.7 (0x675c71200000)
/lib/libmd.so.7:
	libc.so.7 => /lib/libc.so.7 (0x675c71200000)

# ldd -a /usr/sbin/pkg
/usr/sbin/pkg:
	libarchive.so.7 => /usr/lib/libarchive.so.7 (0x7e8bfc380000)
	libfetch.so.6 => /usr/lib/libfetch.so.6 (0x7e8bf18e2000)
	libprivateucl.so.1 => /usr/lib/libprivateucl.so.1 (0x7e8bf1d74000)
	libcrypto.so.30 => /lib/libcrypto.so.30 (0x7e8bf5600000)
	libssl.so.30 => /usr/lib/libssl.so.30 (0x7e8c09220000)
	libutil.so.9 => /lib/libutil.so.9 (0x7e8bf2282000)
	libmd.so.7 => /lib/libmd.so.7 (0x7e8bf31d1000)
	libc.so.7 => /lib/libc.so.7 (0x7e8bf6400000)
/usr/lib/libarchive.so.7:
	libz.so.6 => /lib/libz.so.6 (0x7e8bf4e96000)
	libbz2.so.4 => /usr/lib/libbz2.so.4 (0x7e8bf696f000)
	liblzma.so.5 => /usr/lib/liblzma.so.5 (0x7e8c0b8a0000)
	libbsdxml.so.4 => /lib/libbsdxml.so.4 (0x7e8bf6c0b000)
	libprivatezstd.so.5 => /usr/lib/libprivatezstd.so.5 (0x7e8c0c790000)
	libcrypto.so.30 => /lib/libcrypto.so.30 (0x7e8bf5600000)
	libc.so.7 => /lib/libc.so.7 (0x7e8bf6400000)
/usr/lib/libfetch.so.6:
	libssl.so.30 => /usr/lib/libssl.so.30 (0x7e8c09220000)
	libcrypto.so.30 => /lib/libcrypto.so.30 (0x7e8bf5600000)
	libc.so.7 => /lib/libc.so.7 (0x7e8bf6400000)
/usr/lib/libprivateucl.so.1:
	libm.so.5 => /lib/libm.so.5 (0x7e8c19580000)
	libc.so.7 => /lib/libc.so.7 (0x7e8bf6400000)
/lib/libcrypto.so.30:
	libthr.so.3 => /lib/libthr.so.3 (0x7e8bf7348000)
	libc.so.7 => /lib/libc.so.7 (0x7e8bf6400000)
/usr/lib/libssl.so.30:
	libcrypto.so.30 => /lib/libcrypto.so.30 (0x7e8bf5600000)
	libc.so.7 => /lib/libc.so.7 (0x7e8bf6400000)
/lib/libutil.so.9:
	libc.so.7 => /lib/libc.so.7 (0x7e8bf6400000)
/lib/libmd.so.7:
	libc.so.7 => /lib/libc.so.7 (0x7e8bf6400000)
/lib/libc.so.7:
	libsys.so.7 => /lib/libsys.so.7 (0x7e8c25550000)
/lib/libz.so.6:
	libc.so.7 => /lib/libc.so.7 (0x7e8bf6400000)
/usr/lib/libbz2.so.4:
	libc.so.7 => /lib/libc.so.7 (0x7e8bf6400000)
/usr/lib/liblzma.so.5:
	libmd.so.7 => /lib/libmd.so.7 (0x7e8bf31d1000)
	libthr.so.3 => /lib/libthr.so.3 (0x7e8bf7348000)
	libc.so.7 => /lib/libc.so.7 (0x7e8bf6400000)
/lib/libbsdxml.so.4:
	libc.so.7 => /lib/libc.so.7 (0x7e8bf6400000)
/usr/lib/libprivatezstd.so.5:
	libthr.so.3 => /lib/libthr.so.3 (0x7e8bf7348000)
	libc.so.7 => /lib/libc.so.7 (0x7e8bf6400000)
/lib/libm.so.5:
	libc.so.7 => /lib/libc.so.7 (0x7e8bf6400000)
/lib/libthr.so.3:
	libc.so.7 => /lib/libc.so.7 (0x7e8bf6400000)
	libsys.so.7 => /lib/libsys.so.7 (0x7e8c25550000)


> On 8/6/25 23:42, Mark Millard wrote:
>> Is there a known alternative to the command:
>> 
>> chroot /FBSDFSSDroot-mnt/ pkg-static delete -a
>> 
>> that would only delete port-packages, even if the
>> chroot's world was based on a pkgbase world
>> installation?
>> 
>> If yes, what would the command be like?
> 

===
Mark Millard
marklmi at yahoo.com