# Appendix C Catalogue package families

_Peios / Peios technical reference / peipkg_

> Canonical names, split payloads, capabilities and production limits for the documented package catalogue.

Use [`peipkg search`](/peios/using-peios/package-management/inspecting-and-verifying.md#searching-the-repositories) to find what your configured repositories currently offer. This appendix records the package-family, integration and build details; the [install procedure](/peios/using-peios/package-management/installing-and-removing.md) covers applying a change.

## C.1 Canonical package names

New Peios catalogue packages use canonical reverse-DNS names. The leading
segments identify the upstream namespace and the final segment preserves the
familiar package name, even when that deliberately repeats part of the
namespace:

```
com.amd.amd-ucode
org.gnu.bash
org.sourceware.elfutils
org.peios.peinit
```

Peios-built packages of third-party software retain the upstream namespace;
Peios-owned software and Peios-specific integration packages use `org.peios`.
The name identifies the packaged software, while the repository signature and
build provenance identify who packaged it. It does not imply that upstream
signed or endorsed a downstream package.

Related payloads retain that canonical base. For example,
`org.sourceware.elfutils-libs` carries libdw and libasm,
`org.sourceware.elfutils-libelf` carries libelf, and
`org.sourceware.elfutils-devel` carries their development interfaces without
requiring the command-line tools to be installed.

The elfutils tools include command manuals and `eu-make-debug-archive` for
preparing an offline debugging archive. To archive one executable, use
`eu-make-debug-archive debug.a -e /path/to/program`; its debugging information
must be available. The optional `--sudo` mode requires a separately installed
and authorized privilege helper. The debuginfod service/client and stackprof
components are not included in this family.

GNU C Library administration commands and their manuals are in
`org.gnu.glibc-bin`. Profiling and tracing commands, including the Perl-based
`mtrace`, are in `org.gnu.glibc-utils`. Extra legacy character converters are
in `org.gnu.glibc-gconv-extra`, and the reference manual is in
`org.gnu.glibc-doc`, as HTML under `/usr/share/doc/org.gnu.glibc/html/`. These utilities retain Peios's fixed authority and resolver
providers; installing them does not make local passwd files an account authority.

Libtraceevent's library symbols are in `org.kernel.libtraceevent-libs-debuginfo`,
while plugin symbols are in `org.kernel.libtraceevent-debuginfo`. The tracing
libraries provide their API manuals and HTML documentation through their
respective `-doc` packages.

Mozilla root-certificate data is installed by `org.mozilla.ca-certificates`
at `/usr/share/ca-certificates/mozilla.crt`. The package supplies server-authentication
roots from the tracked Firefox release data; it does not install machine trust
policy by itself. A flat PEM store cannot express Mozilla's per-root distrust
dates, so loading it alone does not reproduce every Firefox trust restriction.

The eudev family follows the same rule: `io.github.eudev-project.eudev`
contains the daemon, tools, rules and Peios service integration;
`io.github.eudev-project.eudev-libudev` contains the runtime library; and
`io.github.eudev-project.eudev-devel` contains the public header, linker name
and pkg-config metadata. Installing libudev for an application therefore does
not pull in the system device manager. The device-manager package uses
`peiosutils` for the core applets in its coldplug hook; it does not install the
GNU Coreutils bootstrap package into the running system.

FIGlet is installed as `org.figlet.figlet`. Its commands, font catalogue and
manuals form one small runtime package; detached debugging symbols and sources
use the conventional `-debuginfo` and `-debugsource` suffixes.

The file-identification command is `com.darwinsys.file`. Its libmagic ABI,
architecture-independent format database and development interface are split
as `com.darwinsys.file-libmagic`, `com.darwinsys.file-magic` and
`com.darwinsys.file-devel`, so library consumers do not acquire the command.

GNU `find` and `xargs` are installed as `org.gnu.findutils`; their manuals are
in `org.gnu.findutils-common`. The `locate` and `updatedb` tools are omitted
until Peios has a service design for maintaining their global index. Because
Peipkg normalizes POSIX ownership and mode metadata, `find` predicates such as
`-user`, `-group` and `-perm` inspect that compatibility metadata; they do not
query KACS policy and must not be used as authorization checks.

GNU Bison's parser generator, `yacc` frontend and parser skeletons are in
`org.gnu.bison`. Install `org.gnu.bison-devel` when a project uses the
traditional `liby.a` convenience library or the `bison-i18n.m4` Autoconf macro.
Generated-parser message catalogs are independently available through
`org.gnu.bison-runtime`.

GNU Binutils' assembler, linker and object tools are in `org.gnu.binutils`;
headers, linker names and static libraries are in `org.gnu.binutils-devel`.
The optional profiler is `org.gnu.binutils-gprofng`, including its command
manuals. Its library's linker name and static archive are separately available
in `org.gnu.binutils-gprofng-devel`, which also installs the matching profiler
runtime. Ordinary compiler builds do not need the profiler.

Binutils supports Zstandard-compressed DWARF debug sections through
`objcopy --compress-debug-sections=zstd` and
`ld --compress-debug-sections=zstd`. The runtime package brings in
`com.facebook.zstd-libs`; applications do not need the development package
merely to use these commands. `objcopy --decompress-debug-sections` restores
uncompressed debug sections when another consumer needs them.

The Flex scanner generator is `io.github.westes.flex`; its `flex++` frontend
is included with the command. The independently usable libfl runtime is
`io.github.westes.flex-libs`, while `io.github.westes.flex-devel` adds the C++
header, static archive and linker name without folding those development files
into either runtime package.

GNU Awk is installed as `org.gnu.gawk` and provides both the `gawk` and `awk`
command names. Loadable extensions and the password/group lookup helpers stay
with the interpreter, reusable Awk libraries and manuals are in
`org.gnu.gawk-common`, and `org.gnu.gawk-devel` provides `gawkapi.h` for
building additional extensions. Arbitrary-precision MPFR arithmetic is
enabled. Persistent arrays are disabled because their process-wide ASLR
manipulation is outside the Peios process contract. The interactive debugger
(`gawk -D`) has GNU Readline line editing and command history.

The GNU debugger is installed as `org.gnu.gdb`, with the `gcore`, `gstack` and
`gdb-add-index` helpers, Python scripting, the text user interface (`gdb
-tui`), Readline line editing and iconv character-set conversion. It reads
compressed debug sections (zlib, zstd and LZMA MiniDebugInfo) and finds a
program's symbols in the matching `-debuginfo` package by build ID under
`/usr/lib/debug`. The remote debugging stub is the separate
`org.gnu.gdb-gdbserver`, and `org.gnu.gdb-devel` adds the JIT reader interface
header. Guile scripting, CTF trace files, Intel Processor Trace, debuginfod
lookups and source highlighting are not included.

The Expat XML parser library is installed as `io.github.libexpat.expat`; its
headers, pkg-config and CMake files are in `io.github.libexpat.expat-devel`, the
static library in `io.github.libexpat.expat-static`, and the `xmlwf`
well-formedness checker in `io.github.libexpat.expat-tools`.

DWZ, the DWARF duplicate-removal tool, is installed as `org.sourceware.dwz`.
Catalogue packages are built with it, so their `-debuginfo` payloads are
already deduplicated per file. It can also optimise zstd-compressed DWARF
while retaining Zstandard compression. Debugedit's tools are `org.sourceware.debugedit`;
its RPM-style `find-debuginfo` driver is the separate
`org.sourceware.debugedit-find-debuginfo`, which brings in GDB and DWZ.

util-linux's libblkid and `getopt` are joined by three command packages:
`org.kernel.util-linux-schedutils` (`taskset`, `chrt`, `ionice` and `renice`,
for CPU affinity and scheduling), `org.kernel.util-linux-script` (`script`,
`scriptreplay` and `scriptlive`, for recording terminal sessions) and
`org.kernel.util-linux-extra` (`flock`, `setsid`, `rev`, `col`, `colcrt` and
`colrm`). util-linux commands that duplicate peiosutils, or that manage logons,
storage, capabilities or namespaces, are not included.

Tcl 8.6 is installed as `org.tcl-lang.tcl`: `tclsh`, libtcl and the script
library. Its headers (including the private ones under
`/usr/include/tcl-private`), stubs library, `tclConfig.sh` and C API manuals
are in `org.tcl-lang.tcl-devel`. Expect is `org.tcl-lang.expect`, providing
the `expect` interpreter and `package require Expect`, with
`org.tcl-lang.expect-devel` for embedding; Expect's example scripts
(`autoexpect`, `unbuffer`, `mkpasswd` and the rest) are not shipped. The
DejaGnu test harness, `runtest`, is `org.gnu.dejagnu`, and its `dejagnu.h`
unit-test header is `org.gnu.dejagnu-devel`.

Three C and C++ unit-testing frameworks are available for building and running
test suites:

- GoogleTest and GoogleMock are `com.google.googletest`, with headers, the
  CMake package (`find_package(GTest)`) and pkg-config modules in
  `com.google.googletest-devel` and static libraries in
  `com.google.googletest-static`. The shared libraries' sonames carry the full
  release version, so test binaries rebuild with each GoogleTest update.
- CUnit (the maintained CUnity continuation of SourceForge CUnit) is
  `com.gitlab.cunity.cunit`, which holds the XML report stylesheets; headers,
  the pkg-config module and the CMake package are in
  `com.gitlab.cunity.cunit-devel`. CUnit builds only a static library,
  `com.gitlab.cunity.cunit-static`, which the development package brings in.
- Check is `io.github.libcheck.check`, with headers, the pkg-config module and
  the `AM_PATH_CHECK` Autoconf macro in `io.github.libcheck.check-devel` and
  the static library in `io.github.libcheck.check-static`. `checkmk`, which
  generates Check test programs from compact descriptions, is the separate
  `io.github.libcheck.check-checkmk`.

GNU Gettext's catalog commands are installed as `org.gnu.gettext`, with
manuals, extraction rules, project templates and the commands' translated
messages in `org.gnu.gettext-common`. Project maintainers install
`org.gnu.gettext-devel` for `autopoint`, `gettextize`, the Autoconf macros and
public headers. The independently usable `libasprintf`, `libgettextpo` and
`libtextstyle` ABIs are separate runtime packages. Glibc supplies Peios's
`libintl`; Gettext therefore does not install a competing implementation,
while its commands and shell integration retain full native-language support.
Java, C#, Emacs and terminal-styling integrations are not included. The
optional `po-fetch` and AI-assisted `spit` helpers are also omitted until their
complete runtime dependencies are available as Peios packages.

GNU gperf is installed as `org.gnu.gperf`. Its generated C and C++ source has
no gperf runtime dependency, so no development or runtime-library subpackage
is needed; debugging symbols and their matching source are available through
the conventional `org.gnu.gperf-debuginfo` and `org.gnu.gperf-debugsource`
packages.

GNU GMP's C runtime is `org.gnu.gmp`; the C++ wrapper is the independently
installable `org.gnu.gmp-c++`, so C-only consumers do not acquire libstdc++.
Headers and linker names are in `org.gnu.gmp-devel`, while static archives are
in `org.gnu.gmp-static`. Builds use GMP's generic x86-64 runtime dispatch
rather than instructions selected from the package builder's CPU, so the
published libraries remain portable across Peios x86-64 systems.

GNU Grep is installed as `org.gnu.grep` and provides the `grep`, `egrep` and
`fgrep` command names. Its manuals and translated messages are in
`org.gnu.grep-common`. Basic, extended, fixed-string and Perl-compatible
(`grep -P`) regular expressions are all supported; `grep -P` uses the PCRE2
library from `org.pcre.pcre2`, which is installed alongside Grep.

GNU gzip is installed as `org.gnu.gzip`, containing `gzip`, `gunzip`, `zcat`
and `uncompress`; its manuals are in `org.gnu.gzip-common`. The optional
`org.gnu.gzip-utils` package adds the non-interactive shell helpers such as
`zgrep`, `zdiff`, `zforce`, `znew` and `gzexe` together with their declared
command dependencies. `zless` and `zmore` are omitted until the catalogue has
a pager provider, so installing the utilities never leaves unusable commands.

The Integer Set Library runtime is installed as `io.sourceforge.libisl.isl`.
Headers, the linker name and pkg-config metadata are in
`io.sourceforge.libisl.isl-devel`; the static archive and its static GMP
closure are in `io.sourceforge.libisl.isl-static`. Published builds use ISL's
portable mode rather than selecting instructions from the package builder's
CPU.

Kernel module administration commands are installed as `org.kernel.kmod`;
the independently usable libkmod runtime is `org.kernel.kmod-libs`. Headers
and pkg-config metadata are in `org.kernel.kmod-devel`, with the static archive
in `org.kernel.kmod-static`. The tools support gzip-, xz- and zstd-compressed
modules and PKCS#7 signature reporting. `depmod` is a machine-facing command
at `/libexec/depmod`; package transactions invoke it when a kernel-module
payload changes.

The Linux capabilities runtimes libcap and libpsx are installed as
`org.kernel.libcap`. Capability inspection and file-capability commands are in
`org.kernel.libcap-tools`, development interfaces in
`org.kernel.libcap-devel`, and both static archives in
`org.kernel.libcap-static`. Go and PAM integrations are not included in this
package family.

Libconfig's C runtime is installed as `io.github.hyperrealm.libconfig`; its
self-contained C++ runtime is `io.github.hyperrealm.libconfig-c++`. Headers,
linker names, pkg-config and CMake metadata for both interfaces are in
`io.github.hyperrealm.libconfig-devel`, while the static archives are in
`io.github.hyperrealm.libconfig-static`.

The libnl protocol-library family is installed as
`io.github.thom311.libnl`. Its command suite, CLI support library, dynamically
loaded traffic-control modules and lookup databases are in
`io.github.thom311.libnl-tools`. Install `io.github.thom311.libnl-devel` for
the complete public header and pkg-config surface, and
`io.github.thom311.libnl-static` for the seven static libraries.

The hardware performance-event discovery and encoding runtime is
`net.sourceforge.perfmon2.libpfm`. Its public headers, linker name and API/PMU
manuals are in `net.sourceforge.perfmon2.libpfm-devel`; the static encoder is
in `net.sourceforge.perfmon2.libpfm-static`. Python bindings are not included.

GNU Libtool's command-line tools, macros and support files are installed as
`org.gnu.libtool`. The configured `libtool` command records the target
compiler and ABI paths, so this package is architecture-specific even though
its commands are shell scripts. The independently usable libltdl runtime is
`org.gnu.libtool-ltdl`; its headers and linker metadata are in
`org.gnu.libtool-ltdl-devel`, with the static archive in
`org.gnu.libtool-ltdl-static`.

GNU M4 is installed as `org.gnu.m4`. The package includes the command,
localised messages and manual; matching source, debuginfo and debugsource
packages are published alongside it.

GNU Make is installed as `org.gnu.make`. Install `org.gnu.make-devel` to
compile loadable modules against its `gnumake.h` interface. Guile integration
is not included. Recipes use Peios' `/usr/bin/sh` system-shell path by default.

Meson is installed as `com.mesonbuild.meson`. The package includes the
`meson` command and manual, and declares Ninja as a runtime dependency because
Meson's normal build workflow invokes it. Meson's Python implementation is
private to the application rather than exposed as a system-wide Python
library.

GNU MPFR's shared runtime is installed as `org.gnu.mpfr`. Its public headers,
linker name and pkg-config metadata are in `org.gnu.mpfr-devel`; the static
archive and its static GMP closure are in `org.gnu.mpfr-static`. The library is
built with thread-safe storage and publishes matching source, debuginfo and
debugsource packages.

ncurses terminal-information utilities are installed as `org.gnu.ncurses`.
The wide-character ABI 6 libraries are in `org.gnu.ncurses-libs`, while the
terminal database and tabset files are in `org.gnu.ncurses-terminfo`. Headers,
linker names, pkg-config metadata and API manuals are in
`org.gnu.ncurses-devel`; static libraries are in `org.gnu.ncurses-static`.
Narrow-character, C++ and Ada compatibility surfaces are not included.

The Ninja build executor is installed as `org.ninja-build.ninja`. Its Bash and
Zsh completions, Vim syntax file, README, source manual and `ninja(1)` command
reference are included with the command. The command reference is generated
from the packaged executable's help output. Ninja uses the system shell to
execute build rules, so the package depends on `org.git.kernel.dash`; matching
source, debuginfo and debugsource packages are published alongside it.

IANA timezone data is installed as `org.iana.tzdata` under
`/usr/share/zoneinfo`. The build uses the backward-compatible fat TZif format
so older timezone compilers preserve final transitions that change daylight
saving status or an abbreviation without changing the UTC offset.

The numactl command suite is installed as `io.github.numactl.numactl`. The
shared libnuma runtime is `io.github.numactl.libnuma`; its headers, linker
name, pkg-config metadata and API manuals are in
`io.github.numactl.libnuma-devel`, while the static archive and its static
libatomic closure are in `io.github.numactl.libnuma-static`. Matching source,
debuginfo and debugsource packages are published alongside the family.

OpenSSL's general cryptography runtime, providers, engines and vendor
configuration are installed as `org.openssl.libcrypto`; the TLS runtime is
`org.openssl.libssl`. The `openssl` command and its user manuals are in
`org.openssl.openssl`, while certificate-management Perl utilities are in the
architecture-independent `org.openssl.openssl-perl` package. Headers, linker
names, pkg-config and CMake metadata, and API manuals are in
`org.openssl.openssl-devel`; static libraries are in
`org.openssl.openssl-static`. Package-owned configuration is stored beneath
`/usr/etc/ssl` and appears at OpenSSL's compiled `/etc/ssl` lookup path through
Peios's merged configuration view. Matching source, debuginfo and debugsource
packages are published alongside the family.

The kernel DWARF and BTF tool suite is installed as `org.kernel.pahole`. It
includes `pahole` and the accompanying dwarves inspection tools, shell
utilities and runtime data. The public libdwarves ABI is split into
`org.kernel.libdwarves`, with headers and linker names in
`org.kernel.libdwarves-devel`, so library consumers do not acquire the command
suite. Release builds use upstream's signed tarballs because those contain the
embedded libbpf sources needed for a complete build; matching source,
debuginfo and debugsource packages are published alongside the family.

The ELF metadata editor is installed as `org.nixos.patchelf`. It includes the
`patchelf` command, manual and Zsh completion, with matching source, debuginfo
and debugsource packages. The command can inspect and change an ELF object's
interpreter, run path, dynamic dependencies, SONAME and executable-stack
state. Upstream release archives are not maintainer-signed, so newly
discovered releases use an explicit HTTPS trust-on-first-use exception and
become immutable once recorded in Pekit's SHA-256 lock.

PCI inspection and configuration tools are installed as `cz.ucw.pciutils`.
It includes `lspci`, `setpci`, `pcilmr`, `update-pciids` and their manuals.
The shared libpci ABI and bundled PCI ID database are in `cz.ucw.libpci`;
headers, linker input, pkg-config metadata and the API manual are in
`cz.ucw.libpci-devel`, while the static archive is in
`cz.ucw.libpci-static`. Builds enable compressed ID files, explicit DNS
lookups, kernel-module lookup through libkmod and udev HWDB fallback. Matching
source, debuginfo and debugsource packages are published alongside the family,
using release archives authenticated by maintainer Martin Mares's OpenPGP key.

Standard network-name databases are installed as `org.debian.netbase`. The
package places the protocol, service and Ethernet-type registries in `/usr/etc`;
Peios's merged configuration view exposes those vendor defaults as
`/etc/protocols`, `/etc/services` and `/etc/ethertypes` for libc and networking
tools. The RPC registry remains part of glibc at `/usr/etc/rpc`. Locally managed
configuration can therefore override these files without modifying package
payloads. Perl's shared runtime depends on netbase because its Socket, IO and
Net::Ping modules perform named protocol and service lookups.

Perl is installed as `org.perl.perl`, which also provides the `perl` virtual
capability used by existing build dependencies. Architecture-independent core
modules are in `org.perl.perl-modules`; the shared embedding library and XS
modules are in `org.perl.libperl`; and public CORE headers and linker names are
in `org.perl.perl-devel`. Language, utility and module manuals are split into
`org.perl.perl-doc`. The threaded interpreter uses stable major.minor module
paths so a patch update does not abandon locally installed modules, and links
the catalogue's zlib and bzip2 rather than bundled copies. Crypt, GDBM and DB
extensions remain disabled until their libraries have production packages.
Matching source, debuginfo and debugsource packages are published alongside the
family. CPAN currently offers Sigstore bundles rather than a detached OpenPGP
signature Pekit can verify, so discovered releases become immutable through
their Pekit SHA-256 lock after HTTPS retrieval until Sigstore verification is
available.

The system pkg-config implementation is `org.pkgconf.pkgconf`. It provides both
the `pkgconf` and `pkg-config` command names and the `bomtool`, `spdxtool` and
`pccritic` metadata utilities. Install `org.pkgconf.pkgconf-devel` when
regenerating Autoconf builds that need the `pkg.m4` macros. The independently
usable shared library is `org.pkgconf.libpkgconf`; public headers, linker name and
pkg-config metadata are in `org.pkgconf.libpkgconf-devel`, with the static
archive in `org.pkgconf.libpkgconf-static`. Matching source, debuginfo and
debugsource packages are published alongside the family.

GNU Readline's line-editing and history libraries are installed as
`org.gnu.readline`, linked against ncurses' `libtinfo`. Headers, linker names,
pkg-config metadata and the `readline(3)` and `history(3)` manuals are in
`org.gnu.readline-devel`, with static archives in `org.gnu.readline-static`.
Interactive `bc`, the `gawk` debugger and Python's `readline` module (which
serves `input()` and the basic REPL selected by `PYTHON_BASIC_REPL`) use it,
giving Emacs- or vi-style editing, history recall and `~/.inputrc` key
bindings. Bash builds its own bundled copy of Readline and does not depend on
this package.

Rsync is installed as `org.samba.rsync`, which also provides and replaces the
earlier `rsync` package name. The main package supports IPv6, iconv, generic
extended attributes, OpenSSL-accelerated checksums, xxHash, zstd and rolling
checksum SIMD. POSIX ACL support is omitted because Peios uses KACS DACLs.
The TLS transport wrapper is in `org.samba.rsync-ssl`, and the Python-based
restricted SSH-command wrapper is in `org.samba.rrsync`, so ordinary local
transfers do not acquire either interpreter. The command can be invoked in
daemon mode manually, but Peios does not currently install an rsync peinit
service. Matching source, debuginfo and debugsource packages are published
alongside the family.

For now, commands require the complete canonical name:

```
peipkg install com.amd.amd-ucode
```

References to concrete packages in package metadata likewise record complete
canonical names; virtual capability names remain unqualified. Unqualified-name
resolution may be added in future when the final component identifies exactly
one package, but it is not part of the current command contract.
