topgrade
Upgrade your system using multiple package managers
TLDR
Run updates
Say yes to all updates
Cleanup temporary/old files
Disable a certain update operation
Only perform a certain update operation
Edit the configuration file with default editor
SYNOPSIS
topgrade [OPTIONS]
PARAMETERS
-h, --help
Displays help information and exits.
-V, --version
Prints version information and exits.
-y, --yes
Assumes "yes" to all prompts, running non-interactively.
--no-self-update
Prevents topgrade from attempting to update itself.
--no-parallel
Disables parallel execution of updaters, running them sequentially.
--disable <UPDATER>
Disables a specific updater (e.g., apt, pip). Can be specified multiple times.
--only <UPDATER>
Runs only the specified updater(s). Can be specified multiple times.
--print-commands
Prints the commands that would be run without actually executing them.
--config <PATH>
Specifies an alternative configuration file path.
DESCRIPTION
topgrade is an intelligent, cross-platform command-line utility designed to streamline the process of updating various software components on your system. Instead of manually running `apt update && apt upgrade`, `dnf update`, `pacman -Syu`, `brew update && brew upgrade`, `pip install --upgrade`, `cargo update`, or specific updates for tools like `oh-my-zsh`, topgrade automates this entire sequence.
It acts as a meta-updater, orchestrating updates across a wide array of package managers (e.g., apt, dnf, pacman, Homebrew, Chocolatey, Nix), programming language environments (e.g., pip, cargo, npm, go), and other tools. This consolidation saves significant time and effort, ensuring your system, development tools, and applications are consistently up-to-date with a single command. topgrade is highly configurable via a `~/.config/topgrade.toml` file, allowing users to enable or disable specific updaters, add custom commands, and control its behavior.
CAVEATS
topgrade relies on the underlying package managers and tools being correctly installed and configured. Issues with a specific package manager will manifest through topgrade.
Running with --yes can sometimes lead to unexpected behavior if an underlying update has critical prompts or requires manual intervention. It's generally safer to review updates before confirming.
While topgrade simplifies updates, it doesn't replace the need to understand how your system's primary package manager works or to review significant changes before applying them.
CONFIGURATION
topgrade is highly customizable through its configuration file, typically located at ~/.config/topgrade.toml (or %APPDATA%\topgrade\topgrade.toml on Windows). This TOML file allows users to:
- Enable or disable specific updaters.
- Define custom commands to run before or after updates.
- Override default command arguments for updaters.
- Control parallel execution, confirmation prompts, and more.
CROSS-PLATFORM SUPPORT
One of topgrade's most significant features is its broad cross-platform compatibility. It supports Linux distributions (Debian/Ubuntu, Fedora, Arch, NixOS, etc.), macOS (via Homebrew), and Windows (via WSL, Chocolatey, Scoop). This makes it an ideal tool for users who work across multiple operating systems or development environments, providing a consistent update experience regardless of the underlying platform.
HISTORY
topgrade was created to address the common frustration of needing to run multiple update commands across various software ecosystems (system packages, programming language tools, dotfiles, etc.). It emerged as a solution to automate this fragmented update process, gaining popularity due to its simplicity, cross-platform compatibility, and extensive support for different updaters. Its development is community-driven, focusing on adding support for more tools and improving user experience through configuration options.