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