Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
manpages: add documentation for pkg-checksum(8) and pkg_checksum(3)
Baptiste Daroussin committed 7 days ago
commit 0cc8bfd15cc32dbdfb4b78ffdf9754a23ec262bf
parent 3ad388e
46 files changed +514 -2
modified docs/pkg-add.8
@@ -123,6 +123,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -139,6 +140,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -155,6 +157,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-alias.8
@@ -61,6 +61,7 @@ for alias
.Dq Li size :
.Dl % pkg alias size
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -77,6 +78,7 @@ for alias
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -93,6 +95,7 @@ for alias
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-annotate.8
@@ -181,6 +181,7 @@ Show all packages with the foo annotation:
.Pp
.\" ---------------------------------------------------------------------------
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -197,6 +198,7 @@ Show all packages with the foo annotation:
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -213,6 +215,7 @@ Show all packages with the foo annotation:
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-audit.8
@@ -119,6 +119,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -135,6 +136,7 @@ See
.Xr pkg-annotate 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -151,6 +153,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-autoremove.8
@@ -64,6 +64,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -80,6 +81,7 @@ See
.Xr pkg-annotate 8 ,
.Xr pkg-audit 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -96,6 +98,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-check.8
@@ -145,6 +145,7 @@ If corrupted packages are found, they can be reinstalled using:
pkg install -f <package-name>
.Ed
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -161,6 +162,7 @@ pkg install -f <package-name>
.Xr pkg-annotate 8 ,
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -177,6 +179,7 @@ pkg install -f <package-name>
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
added docs/pkg-checksum.8
@@ -0,0 +1,150 @@
+
.\"
+
.\" SPDX-License-Identifier: BSD-2-Clause
+
.\"
+
.Dd April 28, 2026
+
.Dt PKG-CHECKSUM 8
+
.Os
+
.Sh NAME
+
.Nm "pkg checksum"
+
.Nd compute or validate file checksums
+
.Sh SYNOPSIS
+
.Nm
+
.Op Fl q
+
.Op Fl t Ar type
+
.Ar file ...
+
.Nm
+
.Op Fl q
+
.Fl c Ar hash
+
.Ar file ...
+
.Sh DESCRIPTION
+
.Nm
+
computes or validates checksums of files using the same algorithms
+
as the
+
.Xr pkg 8
+
package manager.
+
.Pp
+
In generation mode (without
+
.Fl c ) ,
+
a checksum is computed for each
+
.Ar file
+
and printed to standard output in the format
+
.Do Ar type Ns $ Ns Ar hash Dc .
+
.Pp
+
In validation mode (with
+
.Fl c ) ,
+
the checksum type is extracted from the provided
+
.Ar hash
+
and each
+
.Ar file
+
is verified against it.
+
.Sh OPTIONS
+
.Bl -tag -width indent
+
.It Fl c Ar hash , Fl -check Ar hash
+
Validate
+
.Ar file
+
against the given
+
.Ar hash .
+
The hash must be in
+
.Xr pkg 8
+
format
+
.Do Ar type Ns $ Ns Ar hash Dc
+
or a bare SHA-256 hex string for backward compatibility.
+
Reports
+
.Dq OK
+
or
+
.Dq FAILED
+
for each file.
+
Returns 0 only if all files match.
+
.It Fl q , Fl -quiet
+
Quiet mode.
+
In generation mode, print only the checksum (no filename).
+
In validation mode, suppress output; only the exit status indicates
+
success or failure.
+
.It Fl t Ar type , Fl -type Ar type
+
Select the checksum algorithm and encoding.
+
The default is
+
.Cm blake2_base32 .
+
Supported types:
+
.Pp
+
.Bl -tag -width "blake2s_base32" -compact
+
.It Cm sha256_hex
+
SHA-256, hexadecimal encoding (64 characters).
+
.It Cm sha256_base32
+
SHA-256, z-base-32 encoding.
+
.It Cm blake2_base32
+
BLAKE2b-512, z-base-32 encoding (default).
+
.It Cm blake2s_base32
+
BLAKE2s-256, z-base-32 encoding.
+
.El
+
.El
+
.Sh EXIT STATUS
+
.Ex -std
+
In validation mode, a non-zero exit status indicates that at least
+
one file did not match the expected checksum.
+
.Sh EXAMPLES
+
Compute a BLAKE2b checksum:
+
.Bd -literal -offset indent
+
$ pkg checksum /usr/local/bin/curl
+
2$ybndr... (/usr/local/bin/curl)
+
.Ed
+
.Pp
+
Compute a SHA-256 checksum:
+
.Bd -literal -offset indent
+
$ pkg checksum -t sha256_hex /usr/local/bin/curl
+
1$a1b2c3... (/usr/local/bin/curl)
+
.Ed
+
.Pp
+
Validate a file:
+
.Bd -literal -offset indent
+
$ pkg checksum -c '2$ybndr...' /usr/local/bin/curl
+
/usr/local/bin/curl: OK
+
.Ed
+
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
+
.Xr pkg_create 3 ,
+
.Xr pkg_printf 3 ,
+
.Xr pkg_repo_create 3 ,
+
.Xr pkg_repos 3 ,
+
.Xr pkg-keywords 5 ,
+
.Xr pkg-lua-script 5 ,
+
.Xr pkg-repository 5 ,
+
.Xr pkg-script 5 ,
+
.Xr pkg-triggers 5 ,
+
.Xr pkg.conf 5 ,
+
.Xr pkg 8 ,
+
.Xr pkg-add 8 ,
+
.Xr pkg-alias 8 ,
+
.Xr pkg-annotate 8 ,
+
.Xr pkg-audit 8 ,
+
.Xr pkg-autoremove 8 ,
+
.Xr pkg-check 8 ,
+
.Xr pkg-clean 8 ,
+
.Xr pkg-config 8 ,
+
.Xr pkg-create 8 ,
+
.Xr pkg-delete 8 ,
+
.Xr pkg-fetch 8 ,
+
.Xr pkg-help 8 ,
+
.Xr pkg-info 8 ,
+
.Xr pkg-install 8 ,
+
.Xr pkg-key 8 ,
+
.Xr pkg-lock 8 ,
+
.Xr pkg-plugins 8 ,
+
.Xr pkg-query 8 ,
+
.Xr pkg-register 8 ,
+
.Xr pkg-repo 8 ,
+
.Xr pkg-repositories 8 ,
+
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
+
.Xr pkg-search 8 ,
+
.Xr pkg-set 8 ,
+
.Xr pkg-shell 8 ,
+
.Xr pkg-shlib 8 ,
+
.Xr pkg-ssh 8 ,
+
.Xr pkg-stats 8 ,
+
.Xr pkg-triggers 8 ,
+
.Xr pkg-unregister 8 ,
+
.Xr pkg-update 8 ,
+
.Xr pkg-updating 8 ,
+
.Xr pkg-upgrade 8 ,
+
.Xr pkg-version 8 ,
+
.Xr pkg-which 8
modified docs/pkg-clean.8
@@ -73,6 +73,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -90,6 +91,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
.Xr pkg-delete 8 ,
@@ -105,6 +107,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-config.8
@@ -38,6 +38,7 @@ Getting the ABI:
Getting the directories where the repositories configuration are read:
.Dl % pkg config repos_dir
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -55,6 +56,7 @@ Getting the directories where the repositories configuration are read:
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-create 8 ,
.Xr pkg-delete 8 ,
@@ -70,6 +72,7 @@ Getting the directories where the repositories configuration are read:
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-create.8
@@ -497,6 +497,7 @@ Create package file for pkg:
.Dl % pkg create -o /usr/ports/packages/All pkg
.\" ---------------------------------------------------------------------------
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -514,6 +515,7 @@ Create package file for pkg:
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-delete 8 ,
@@ -529,6 +531,7 @@ Create package file for pkg:
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-delete.8
@@ -175,6 +175,7 @@ Delete all packages except those from the FreeBSD base system:
Delete all packages except base and pkg packages:
.Dl # pkg delete -af -G \(dqFreeBSD-*\(dq -G \(dqpkg-*\(dq
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -192,6 +193,7 @@ Delete all packages except base and pkg packages:
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -207,6 +209,7 @@ Delete all packages except base and pkg packages:
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-fetch.8
@@ -159,6 +159,7 @@ for additional environment variables that control behaviour.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -176,6 +177,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -191,6 +193,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-help.8
@@ -56,6 +56,7 @@ Display the manual page for
Display all available commands:
.Dl $ pkg help
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -73,6 +74,7 @@ Display all available commands:
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -88,6 +90,7 @@ Display all available commands:
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-info.8
@@ -176,6 +176,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -193,6 +194,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -208,6 +210,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-install.8
@@ -244,6 +244,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -261,6 +262,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -276,6 +278,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-key.8
@@ -202,6 +202,7 @@ for EdDSA is
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -219,6 +220,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -234,6 +236,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-keywords.5
@@ -153,6 +153,7 @@ being in the example case,
.Pa emacs .
.El
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -169,6 +170,7 @@ being in the example case,
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -185,6 +187,7 @@ being in the example case,
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-lock.8
@@ -144,6 +144,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -161,6 +162,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -176,6 +178,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-lua-script.5
@@ -198,6 +198,7 @@ and
are be filtered out.
.El
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -214,6 +215,7 @@ are be filtered out.
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -230,6 +232,7 @@ are be filtered out.
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-plugins.8
@@ -65,6 +65,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -82,6 +83,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -97,6 +99,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-query.8
@@ -530,6 +530,7 @@ List all shared libraries used by a package on a single line:
List all options of a package in key=value format:
.Dl $ pkg query '%n %O%{%On=%Ov%| %}' vim
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -547,6 +548,7 @@ List all options of a package in key=value format:
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -562,6 +564,7 @@ List all options of a package in key=value format:
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-register.8
@@ -173,6 +173,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -190,6 +191,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -205,6 +207,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-repo.8
@@ -269,6 +269,7 @@ When set, create a symlink between the short hash filename and the regular
filename.
.El
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -286,6 +287,7 @@ filename.
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -301,6 +303,7 @@ filename.
.Xr pkg-register 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-repositories.8
@@ -133,6 +133,7 @@ Remove the override (revert to configuration):
.Pp
.Dl pkg repositories FreeBSD-ports reset
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -150,6 +151,7 @@ Remove the override (revert to configuration):
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -165,6 +167,7 @@ Remove the override (revert to configuration):
.Xr pkg-register 8 ,
.Xr pkg-repo 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-repository.5
@@ -436,6 +436,7 @@ to
in
.Pa pkg.conf .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -452,6 +453,7 @@ in
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -468,6 +470,7 @@ in
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-rquery.8
@@ -342,6 +342,7 @@ See
.Xr pkg-query 8
for example usage.
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -359,6 +360,7 @@ for example usage.
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -374,6 +376,7 @@ for example usage.
.Xr pkg-register 8 ,
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-rwhich.8
@@ -14,7 +14,7 @@
.\"
.\"     @(#)pkg.8
.\"
-
.Dd March 21, 2025
+
.Dd April 29, 2026
.Dt PKG-RWHICH 8
.Os
.Sh NAME
@@ -88,9 +88,51 @@ for further description.
.It Ev REPOS_DIR
.El
.Sh SEE ALSO
-
.Xr pkg.conf 5 ,
+
.Xr pkg_checksum 3 ,
+
.Xr pkg_create 3 ,
+
.Xr pkg_printf 3 ,
+
.Xr pkg_repo_create 3 ,
+
.Xr pkg_repos 3 ,
+
.Xr pkg-keywords 5 ,
+
.Xr pkg-lua-script 5 ,
.Xr pkg-repository 5 ,
+
.Xr pkg-script 5 ,
+
.Xr pkg-triggers 5 ,
+
.Xr pkg.conf 5 ,
.Xr pkg 8 ,
+
.Xr pkg-add 8 ,
+
.Xr pkg-alias 8 ,
+
.Xr pkg-annotate 8 ,
+
.Xr pkg-audit 8 ,
+
.Xr pkg-autoremove 8 ,
+
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
+
.Xr pkg-clean 8 ,
+
.Xr pkg-config 8 ,
+
.Xr pkg-create 8 ,
+
.Xr pkg-delete 8 ,
+
.Xr pkg-fetch 8 ,
+
.Xr pkg-help 8 ,
+
.Xr pkg-info 8 ,
+
.Xr pkg-install 8 ,
+
.Xr pkg-key 8 ,
+
.Xr pkg-lock 8 ,
+
.Xr pkg-plugins 8 ,
+
.Xr pkg-query 8 ,
+
.Xr pkg-register 8 ,
.Xr pkg-repo 8 ,
+
.Xr pkg-repositories 8 ,
+
.Xr pkg-rquery 8 ,
+
.Xr pkg-search 8 ,
+
.Xr pkg-set 8 ,
+
.Xr pkg-shell 8 ,
+
.Xr pkg-shlib 8 ,
+
.Xr pkg-ssh 8 ,
+
.Xr pkg-stats 8 ,
+
.Xr pkg-triggers 8 ,
+
.Xr pkg-unregister 8 ,
.Xr pkg-update 8 ,
+
.Xr pkg-updating 8 ,
+
.Xr pkg-upgrade 8 ,
+
.Xr pkg-version 8 ,
.Xr pkg-which 8
modified docs/pkg-script.5
@@ -81,6 +81,7 @@ is operating inside a chroot via
This variable is set when a script is run in the context of an upgrade of a package.
.El
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -97,6 +98,7 @@ This variable is set when a script is run in the context of an upgrade of a pack
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -113,6 +115,7 @@ This variable is set when a script is run in the context of an upgrade of a pack
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-search.8
@@ -474,6 +474,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -491,6 +492,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -507,6 +509,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
.Xr pkg-shlib 8 ,
modified docs/pkg-set.8
@@ -155,6 +155,7 @@ for further description.
.It Ev CASE_SENSITIVE_MATCH
.El
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -172,6 +173,7 @@ for further description.
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -188,6 +190,7 @@ for further description.
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-shell 8 ,
.Xr pkg-shlib 8 ,
modified docs/pkg-shell.8
@@ -50,6 +50,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -67,6 +68,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -83,6 +85,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shlib 8 ,
modified docs/pkg-shlib.8
@@ -71,6 +71,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -88,6 +89,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -104,6 +106,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-ssh.8
@@ -48,6 +48,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -65,6 +66,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -81,6 +83,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-stats.8
@@ -53,6 +53,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -70,6 +71,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -86,6 +88,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-triggers.5
@@ -164,6 +164,7 @@ if the operation is part of an upgrade, or
for a fresh installation or a standalone removal.
.El
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -180,6 +181,7 @@ for a fresh installation or a standalone removal.
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -196,6 +198,7 @@ for a fresh installation or a standalone removal.
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-triggers.8
@@ -42,6 +42,7 @@ Force quiet output.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -58,6 +59,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -74,6 +76,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-unregister.8
@@ -140,6 +140,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -157,6 +158,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -173,6 +175,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-update.8
@@ -99,6 +99,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -116,6 +117,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -132,6 +134,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-updating.8
@@ -86,6 +86,7 @@ Defines that the UPDATING file is in /tmp and shows all entries of all
installed ports:
.Dl % pkg updating -f /tmp/UPDATING
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -103,6 +104,7 @@ installed ports:
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -119,6 +121,7 @@ installed ports:
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-upgrade.8
@@ -234,6 +234,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -251,6 +252,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -267,6 +269,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-version.8
@@ -292,6 +292,7 @@ The following command compares two package version strings:
.Pp
.Dl % pkg version -t 1.5 1.5.1
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -309,6 +310,7 @@ The following command compares two package version strings:
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -325,6 +327,7 @@ The following command compares two package version strings:
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg-which.8
@@ -63,6 +63,7 @@ for further description.
See
.Xr pkg.conf 5 .
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -80,6 +81,7 @@ See
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -96,6 +98,7 @@ See
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg.8
@@ -390,6 +390,7 @@ Restore a backup database:
Check for DNS resolution
.\" ---------------------------------------------------------------------------
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -406,6 +407,7 @@ Check for DNS resolution
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -422,6 +424,7 @@ Check for DNS resolution
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
modified docs/pkg.conf.5
@@ -850,6 +850,7 @@ from, and subsequently passes it in the environment to
which ignores it (possibly with a deprecation warning that should be
ignored), and reads the configuration files instead.
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_printf 3 ,
.Xr pkg_repo_create 3 ,
@@ -866,6 +867,7 @@ ignored), and reads the configuration files instead.
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -882,6 +884,7 @@ ignored), and reads the configuration files instead.
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,
added docs/pkg_checksum.3
@@ -0,0 +1,191 @@
+
.\"
+
.\" SPDX-License-Identifier: BSD-2-Clause
+
.\"
+
.Dd April 28, 2026
+
.Dt PKG_CHECKSUM 3
+
.Os
+
.Sh NAME
+
.Nm pkg_checksum_file ,
+
.Nm pkg_checksum_generate_file ,
+
.Nm pkg_checksum_validate_file ,
+
.Nm pkg_checksum_type_from_string
+
.Nd compute and validate file checksums
+
.Sh LIBRARY
+
.Lb libpkg
+
.Sh SYNOPSIS
+
.In pkg/checksum.h
+
.Ft unsigned char *
+
.Fn pkg_checksum_file "const char *path" "pkg_checksum_type_t type"
+
.Ft char *
+
.Fn pkg_checksum_generate_file "const char *path" "pkg_checksum_type_t type"
+
.Ft int
+
.Fn pkg_checksum_validate_file "const char *path" "const char *sum"
+
.Ft pkg_checksum_type_t
+
.Fn pkg_checksum_type_from_string "const char *name"
+
.Sh DESCRIPTION
+
These functions compute and validate checksums of files.
+
Multiple hash algorithms and encodings are supported via the
+
.Vt pkg_checksum_type_t
+
enumeration.
+
.Pp
+
.Fn pkg_checksum_file
+
computes the checksum of
+
.Fa path
+
using algorithm
+
.Fa type
+
and returns the raw encoded hash as a dynamically allocated string.
+
The caller must free the returned pointer.
+
Returns
+
.Dv NULL
+
on error.
+
.Pp
+
.Fn pkg_checksum_generate_file
+
is similar to
+
.Fn pkg_checksum_file
+
but returns the checksum in the portable format
+
.Do Ar type_id Ns $ Ns Ar hash Dc ,
+
where
+
.Ar type_id
+
is the numeric value of the
+
.Vt pkg_checksum_type_t
+
enumeration.
+
This format is self-describing: the type can be recovered from the
+
string, enabling backward-compatible checksum verification.
+
The caller must free the returned pointer.
+
Returns
+
.Dv NULL
+
on error.
+
.Pp
+
.Fn pkg_checksum_validate_file
+
verifies that the checksum of
+
.Fa path
+
matches
+
.Fa sum .
+
The
+
.Fa sum
+
argument may be in the portable format
+
.Do Ar type_id Ns $ Ns Ar hash Dc
+
or a bare SHA-256 hex string for backward compatibility.
+
Returns 0 on success, \-1 on checksum mismatch, or an
+
.Xr errno 2
+
value if the file cannot be accessed.
+
.Pp
+
.Fn pkg_checksum_type_from_string
+
converts a human-readable type name to the corresponding
+
.Vt pkg_checksum_type_t
+
value.
+
Returns
+
.Dv PKG_HASH_TYPE_UNKNOWN
+
if the name is not recognized.
+
.Sh CHECKSUM TYPES
+
The following types are defined in
+
.In pkg/checksum.h :
+
.Bl -tag -width "PKG_HASH_TYPE_BLAKE2S_BASE32"
+
.It Dv PKG_HASH_TYPE_SHA256_HEX
+
SHA-256, hexadecimal encoding.
+
String name:
+
.Qq sha256_hex .
+
.It Dv PKG_HASH_TYPE_SHA256_BASE32
+
SHA-256, z-base-32 encoding.
+
String name:
+
.Qq sha256_base32 .
+
.It Dv PKG_HASH_TYPE_BLAKE2_BASE32
+
BLAKE2b-512, z-base-32 encoding.
+
String name:
+
.Qq blake2_base32 .
+
.It Dv PKG_HASH_TYPE_BLAKE2S_BASE32
+
BLAKE2s-256, z-base-32 encoding.
+
String name:
+
.Qq blake2s_base32 .
+
.El
+
.Pp
+
The raw variants
+
.Pq Dv PKG_HASH_TYPE_SHA256_RAW , PKG_HASH_TYPE_BLAKE2_RAW , PKG_HASH_TYPE_BLAKE2S_RAW
+
return unencoded binary digests and are intended for internal use.
+
.Sh RETURN VALUES
+
.Fn pkg_checksum_file
+
and
+
.Fn pkg_checksum_generate_file
+
return a dynamically allocated string on success, or
+
.Dv NULL
+
on failure.
+
.Pp
+
.Fn pkg_checksum_validate_file
+
returns 0 if the checksum matches, \-1 on mismatch, or a positive
+
.Xr errno 2
+
value if the file cannot be accessed.
+
.Pp
+
.Fn pkg_checksum_type_from_string
+
returns
+
.Dv PKG_HASH_TYPE_UNKNOWN
+
if the type name is not recognized.
+
.Sh EXAMPLES
+
Compute a BLAKE2b checksum with type prefix:
+
.Bd -literal -offset indent
+
#include <pkg/checksum.h>
+

+
char *sum = pkg_checksum_generate_file("/usr/local/bin/curl",
+
    PKG_HASH_TYPE_BLAKE2_BASE32);
+
/* sum is "2$ybndr..." */
+
free(sum);
+
.Ed
+
.Pp
+
Validate a file against a stored checksum:
+
.Bd -literal -offset indent
+
if (pkg_checksum_validate_file(path, stored_sum) != 0)
+
    errx(1, "checksum mismatch");
+
.Ed
+
.Pp
+
Resolve a type name:
+
.Bd -literal -offset indent
+
pkg_checksum_type_t t = pkg_checksum_type_from_string("blake2_base32");
+
.Ed
+
.Sh SEE ALSO
+
.Xr pkg_create 3 ,
+
.Xr pkg_printf 3 ,
+
.Xr pkg_repo_create 3 ,
+
.Xr pkg_repos 3 ,
+
.Xr pkg-keywords 5 ,
+
.Xr pkg-lua-script 5 ,
+
.Xr pkg-repository 5 ,
+
.Xr pkg-script 5 ,
+
.Xr pkg-triggers 5 ,
+
.Xr pkg.conf 5 ,
+
.Xr pkg 8 ,
+
.Xr pkg-add 8 ,
+
.Xr pkg-alias 8 ,
+
.Xr pkg-annotate 8 ,
+
.Xr pkg-audit 8 ,
+
.Xr pkg-autoremove 8 ,
+
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
+
.Xr pkg-clean 8 ,
+
.Xr pkg-config 8 ,
+
.Xr pkg-create 8 ,
+
.Xr pkg-delete 8 ,
+
.Xr pkg-fetch 8 ,
+
.Xr pkg-help 8 ,
+
.Xr pkg-info 8 ,
+
.Xr pkg-install 8 ,
+
.Xr pkg-key 8 ,
+
.Xr pkg-lock 8 ,
+
.Xr pkg-plugins 8 ,
+
.Xr pkg-query 8 ,
+
.Xr pkg-register 8 ,
+
.Xr pkg-repo 8 ,
+
.Xr pkg-repositories 8 ,
+
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
+
.Xr pkg-search 8 ,
+
.Xr pkg-set 8 ,
+
.Xr pkg-shell 8 ,
+
.Xr pkg-shlib 8 ,
+
.Xr pkg-ssh 8 ,
+
.Xr pkg-stats 8 ,
+
.Xr pkg-triggers 8 ,
+
.Xr pkg-unregister 8 ,
+
.Xr pkg-update 8 ,
+
.Xr pkg-updating 8 ,
+
.Xr pkg-upgrade 8 ,
+
.Xr pkg-version 8 ,
+
.Xr pkg-which 8
modified docs/pkg_printf.3
@@ -921,6 +921,7 @@ An invalid wide character code was encountered.
Insufficient storage space is available.
.El
.Sh SEE ALSO
+
.Xr pkg_checksum 3 ,
.Xr pkg_create 3 ,
.Xr pkg_repo_create 3 ,
.Xr pkg_repos 3 ,
@@ -937,6 +938,7 @@ Insufficient storage space is available.
.Xr pkg-audit 8 ,
.Xr pkg-autoremove 8 ,
.Xr pkg-check 8 ,
+
.Xr pkg-checksum 8 ,
.Xr pkg-clean 8 ,
.Xr pkg-config 8 ,
.Xr pkg-create 8 ,
@@ -953,6 +955,7 @@ Insufficient storage space is available.
.Xr pkg-repo 8 ,
.Xr pkg-repositories 8 ,
.Xr pkg-rquery 8 ,
+
.Xr pkg-rwhich 8 ,
.Xr pkg-search 8 ,
.Xr pkg-set 8 ,
.Xr pkg-shell 8 ,