CRUX Package Keeper is a toolset designed to efficiently manage packages and their sources in CRUX environments.
In CRUX, binary packages (.pkg.tar.gz, .pkg.tar.bz2, .pkg.tar.xz) are intentionally minimal. While this design keeps packages lightweight, it also comes with some drawbacks:
x86_64, arm64, armhf).Because of these limitations, binary packages alone are not fully self-descriptive. Installing them without access to the corresponding port source may reduce portability and reliability, as important contextual information is missing.
cpk addresses these issues by embedding the complete port source within the package and extending the package format to include the target architecture in its name. This makes packages:
pkgname#1.0-1.x86_64.cpk, pkgname#1.0-1.arm64.cpk).cpk is not a replacement for pkgutils but an extension built on top of it.
All low-level package management tasks (installation, removal, querying, etc.) are still handled by pkgadd, pkgrm, pkginfo, pkgmk and related tools from pkgutils.
What cpk adds on top is:
.cpk) that embeds port sources, metadata, and architecture information.cpk search, cpk verify, cpk diff, etc.) that extend the functionality of pkgutils.In short, pkgutils does the heavy lifting, while cpk provides the missing context and metadata.
cpk <command> [options]
Commands:
update Update the index of available packages
info <package> Show information about installed or available packages
search <keyword> Search for packages by name or keyword
list List all installed packages
diff Show differences between installed and available packages
verify <package> Verify integrity of package source files
build <package> Build a package from source files
install <package> Install or upgrade packages on the system
uninstall <package> Remove packages from the system
upgrade Upgrade all installed packages to the latest versions
clean Clean up package source files and temporary directories
index <repo> Create a CPKINDEX file for a local repository
archive <prtdir> <repo> Create .cpk archive(s) from a directory containing ports
help Show this help message
version Show version information
Options:
-c, --config <file> Set an alternative configuration file (default: /etc/cpk.conf)
-r, --root <path> Set an alternative installation root (default: /)
-C, --color Show colorized output messages
-v, --verbose Show verbose output messages
-h, --help Print this help information
-V, --version Print version information
cpk updateUsage: (no arguments)
CPK_HOME_DIR exists; otherwise prints an error.CPKINDEX from ${CPK_REPO_URL}/CPKINDEX into CPK_HOME_DIR.cpk info <package>Usage: one argument (package name or key)
CPKINDEX..cpk archive.Pkgfile and displays fields like Name, Version, Arch, Description, URL, and Dependencies.cpk search <term>Usage: one argument (substring to match)
CPKINDEX and searches all lines containing the given term.cpk listUsage: (no arguments)
pkginfo -i to list installed packages on the system.cpk diffUsage: (no arguments)
pkginfo -i.CPKINDEX).cpk verify <package>Usage: one argument (package name or key)
pkgmk -do to ensure all source files are fetched..signature using public keys found under /etc/ports/.cpk build <package>Usage: one argument (package name or key)
pkgmk -d inside the source directory to build the package.cpk install <package> [--upgrade]Usage: one required argument (package name or key), optional --upgrade
--upgrade is specified; otherwise prints a warning.pkgadd -r <CPK_INSTALL_ROOT> [ -u ] <package_file> to install or upgrade.cpk uninstall <package>Usage: one argument (package name or key)
pkgrm -r <CPK_INSTALL_ROOT> <pkgname> to remove it.cpk upgrade [pkg ...]Usage: zero or more package names
cpk install --upgrade when needed.cpk cleanUsage: (no arguments)
CPK_HOME_DIR and removes all files and directories except CPKINDEX.cpk index <repo>Usage: one argument (local repository path)
CPKINDEX.cpk archive <portsdir> <repo>Usage: two arguments (
<portsdir> for built packages (*.pkg.tar.gz, .bz2, .xz).name#version-release.pkg.tar.*).<repo>/<name>/<version-release> and creates .cpk archives.If you want to contribute to this project, feel free to fork the repository, make your changes, and submit a pull request. Contributions from the community are always welcome! See the CONTRIBUTING file for details.
This project is licensed under the GPL-3.0 License. See the LICENSE file for details.