xbps
Manage and install software packages
TLDR
View documentation for installing and updating packages
View documentation for removing packages
View documentation for querying for package and repository information
SYNOPSIS
The xbps system comprises several specialized commands for distinct operations:
xbps-install [options] package...
(To install or update specific packages)
xbps-install -Su [options]
(To synchronize repositories and update all installed packages)
xbps-remove [options] package...
(To remove installed packages)
xbps-query [options] [pattern]
(To query package information, local or remote)
xbps-pkgdb [options]
(To check and fix package database consistency)
PARAMETERS
-S, --sync
Synchronize remote repositories' index files to get the latest package lists. Typically used with xbps-install.
-u, --update
Update all installed packages to their latest versions. Commonly combined with -S as -Su.
-y, --yes
Assume 'yes' to all prompts, useful for automated scripts or non-interactive operations.
-f, --force
Force specific operations, such as reinstalling packages or overwriting existing files, even if conflicts exist. Use with caution.
-r, --rootdir dir
Perform operations on a different root directory (e.g., for chroot environments) instead of the system's actual root (/).
-R, --repository url
Specify an alternative or custom repository URL for package operations, overriding defaults.
-v, --verbose
Increase the verbosity of output, showing more details about the ongoing operations.
-l, --list
List all installed packages. Used with xbps-query.
-s, --search pattern
Search for packages matching a specified pattern in both local and remote repositories. Used with xbps-query.
-o, --orphans
List or remove orphaned packages (dependencies that are no longer required by any installed software). Used with xbps-query or xbps-remove.
-p, --properties field
Display specific properties of a package, such as its dependencies, size, or description. Used with xbps-query.
-h, --help
Display a help message providing usage information for the specific xbps command.
DESCRIPTION
xbps (X Binary Package System) is the native package manager for Void Linux. It's engineered for speed, simplicity, and robustness, offering a transactional and dependency-aware system for managing software packages efficiently. A core design principle of xbps is its use of secure hashing for package integrity and metadata, which helps prevent corruption and ensures system consistency. It uniquely supports both binary package installation and building from source (via xbps-src), catering to various user needs. xbps commands handle critical tasks like installing new software, upgrading the entire system, removing unwanted packages, and synchronizing with remote repositories. Its clear, command-line interface is designed to be intuitive, making package management straightforward for users familiar with other Linux distributions.
CAVEATS
xbps is the default and integral package manager for Void Linux; it is not typically found or directly usable on other Linux distributions. Most package management operations, including installation, removal, and system updates, require root privileges (e.g., using sudo). Users should exercise caution with options like --force or when modifying system files manually, as improper use can compromise system integrity or stability.
THE XBPS-SRC UTILITY
Beyond handling binary packages, the xbps ecosystem includes xbps-src, a powerful tool for building packages directly from source code. It works in conjunction with the void-packages repository, which hosts build templates (known as templates) for thousands of software applications. This allows users to easily compile software with custom configurations or contribute new packages to the Void Linux distribution. xbps-src is designed to ensure reproducible builds and correct dependency management, producing native xbps packages that integrate seamlessly with the system.
TRANSACTIONAL UPDATES
A hallmark feature of xbps is its transactional update mechanism. When performing system upgrades or package installations, xbps executes these operations as atomic transactions. This means that if an update process is interrupted (e.g., due to a power failure or network issue), xbps can revert the system to its previous consistent state, preventing a partially updated or broken system. This robust approach significantly enhances system reliability and reduces the risk of unbootable systems after critical operations.
HISTORY
xbps was originally developed by Juan RP as the foundational package manager for Void Linux, which he also founded. Its inception was driven by a desire for a fast, simple, and robust package management solution, distinguishing itself with features like secure hashing (SHA256) for all package metadata and files, and a transactional update system. This design choice ensures system consistency and integrity, significantly reducing the risk of broken dependencies or partial updates. Since its creation, xbps has been central to Void Linux's unique identity, enabling both seamless binary package management and efficient source-based building.