On Aug 6, 2025, at 22:44, Jesús Daniel Colmenares Oviedo <[email protected]> 
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


Reply via email to