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.
Topgrade should probably work on whichever platform it can be build. The real question is whether Topgrade knows that platform and can utilize its unique features, such as the operating system's package manager. Topgrade is tested on and knows the following platforms:
Arch Linux users can use the AUR package.
On NixOS, use the topgrade
package in nixpkgs
:
sh
nix-env -iA topgrade
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.
The precompiled binaries supplied in the Github releases page are compiled with a self upgrade
feature. Topgrade will try to upgrade itself before attempting anything else and will respawn itself
when an update is downloaded. If you choose to install Topgrade in this method it is recommended
that you place the binary in some place which is writable by your user account, such as
~/.local/bin
.
If you prefer to have Topgrade installed in system-wide manner then it's recommended to either
install it using the OS package manager or cargo install
. Topgrade will not have the self upgrade
feature but it will keep itself up to date by calling the operating system's package manager.
Just run topgrade
. It will run the following steps:
yum upgrade
(or dnf
if present)apt update && apt dist-upgrade
swupd update
layman -s ALL && emerge --sync -q && eix-update && emerge -uDNa world
zypper refresh && zypper dist-upgrade
xbps-install -Su
brew update && brew upgrade
. This should handle both Homebrew and Linuxbrewnix upgrade-nix && nix --upgrade
.pearl update
.-b
flag in your configuration as suggested by the TPM readme.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
. In Unix systems other then macOS the step will be
performed only ifnpm 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. Run valet install
after.gem upgrade --user-install
if ~/.gem
existsfreebsd-upgrade
See config.example.toml
for an example configuration file.
The configuration should be placed in the following paths depending by the operating system:
~/Library/Preferences/topgrade.toml
%APPDATA%/topgrade.toml
~/.config/topgrade.toml
You can specify a key called remote_topgrades
in the configuration file. This key should contain a
list of hostnames that have topgrade installed on them. Topgrade will execute Topgrades on these
remote hosts.