bpkg
Manage and build software packages
TLDR
Update the local index
Install a package globally
Install a package in a subdirectory of the current directory
Install a specific version of a package globally
Show details about a specific package
Run a command, optionally specifying its arguments
SYNOPSIS
bpkg [global-options] <command> [<arguments>]
PARAMETERS
--help, -h
Show help and exit
--version, -v
Print version and exit
--quiet, -q
Suppress non-error output
--verbose, -V, -VV, ...
Increase verbosity (multiple for more detail)
--color[=WHEN]
Control colored output (auto/always/never)
--cwd DIR
Change to directory DIR before running
--cache DIR
Set cache directory (default: ~/.cache/bpkg)
--config DIR
Set config directory (default: ~/.config/bpkg)
--data DIR
Set data directory (default: ~/.local/share/bpkg)
--prefix PREFIX
Set installation prefix (default: ~/.local)
--registry URL
Set package registry URL (default: https://repos.bpkg.io)
DESCRIPTION
bpkg is a minimalistic package manager designed specifically for Bash scripts and programs. It enables developers to install, update, and manage Bash packages from git repositories with ease. Unlike system-wide package managers like apt or yum, bpkg operates in user space, installing packages to ~/.local by default and linking executables into the PATH via symlinks.
Core workflow: Initialize a project with bpkg init, define dependencies in bpkg.json or package.json, then use bpkg install for resolution and linking. It supports global and local modes, dependency trees, and a central registry at repos.bpkg.io. Written entirely in Bash, it's portable, fast, and requires only git and Bash 4+. Ideal for scripting environments where full npm-like tooling is overkill.
bpkg emphasizes simplicity: no databases, just git clones and JSON metadata. Packages are versioned via git tags, with semantic versioning support.
CAVEATS
Not installed by default; requires manual setup or script. Depends on git. No binary packages—uses source clones. Limited ecosystem compared to npm. Potential symlink conflicts in PATH.
COMMON SUBCOMMANDS
init: Initialize bpkg project.
install [PKG]: Install/link packages.
uninstall PKG: Remove package.
link [PKG]: Link to PATH.
list: List installed packages.
upgrade: Update all.
CONFIGURATION
Uses bpkg.json or package.json for deps like "dependencies": {"pkg": "^1.0"}. Global config in ~/.config/bpkg.
HISTORY
Developed by Baptiste Wicht, first released in 2014. Evolved from need for Bash-specific packaging. Actively maintained on GitHub with focus on core simplicity; version 0.35+ added JSON deps and better linking.


