Keeping your system up to date mostly involves invoking more than a single package manager. This usually results in big shell one-liners saved in your shell history. Topgrade tries to solve this problem by detecting which tools you use and run their appropriate package managers.
Arch Linux users can use the AUR package.
macOS users can install topgrade via Homebrew.
Other systems users can either use cargo install
or use the compiled binaries from the release
page. The compiled binaries contain a self-upgrading feature.
Topgrade isn't guaranteed to work on Rust versions older than the latest stable release. If you intend to install Topgrade using Cargo then you should either install Rust using rustup or use a distribution which ships the latest version of Rust, such as Arch Linux.
Just run topgrade
. It will run the following steps:
yum upgrade
dnf upgrade
apt update && apt dist-upgrade
layman -s ALL && emerge --sync -q && eix-update && emerge -uDNa world
zypper refresh && zypper dist-upgrade
brew update && brew upgrade
. This should handle both Homebrew and Linuxbrewnix upgrade-nix && nix --upgrade
.rustup update
. This will also attempt to run rustup self update
when Rustup is installed inside the home directory.yarn global update
if yarn is installed.npm update -g
if NPM is installed and npm root -g
is a path inside your home directory.composer global update
if Composer's home directory is inside the home directory of the user.gem upgrade --user-install
if ~/.gem
existsfreebsd-upgrade
-t/--tmux
- Topgrade will launch itself in a new tmux session. This flag has no effect if
Topgrade already runs inside tmux. This is useful when using topgrade on remote systems.-n/--dry-run
- Print what should be run.--no-system
- Skip the system upgrade phase.--no-git-repos
- Don't pull custom git repositories.--no-emacs
- Don't upgrade Emacs packages or configuration files.You can place a configuration file at ~/.config/topgrade.toml
(on macOS ~/Library/Preferences/topgrade.toml
).. Here's an example:
``` toml git_repos = [ "~/dev/topgrade", ]
[pre_commands] "Emacs Snapshot" = "rm -rf ~/.emacs.d/elpa.bak && cp -rl ~/.emacs.d/elpa ~/.emacs.d/elpa.bak"
[commands]
"Python Environment" = "~/dev/.env/bin/pip install -i https://pypi.python.org/simple -U --upgrade-strategy eager jupyter"
``
*
gitrepos- A list of custom Git repositories to pull
*
precommands- Commands to execute before starting any action. If any command fails, Topgrade
will not proceed
*
commands` - Custom upgrade steps. If any command fails it will be reported in the summary as all
upgrade steps are reported, but it will not cause Topgrade to stop.