Supercharge your software upgrade routine

Top of the Line

Configuration File

Your next action will be to access the config file located under ~/.config/topgrade.toml (Figure 5). For this, you can either open it in your favorite editor or with the built-in --edit-config switch, which will take you directly to edit mode. For those not in the know, the .toml format flex is that it is user-friendly and already has been implemented in more than 40 programming languages [6].

Figure 5: By default, the topgrade.toml config file contains all these uncommented entries.

From the configuration file, notice that the rule of thumb for most supported software is to offer sudo execution. Another interesting point is that Topgrade is cross-platform; therefore, it also offers customization options for other operating systems that are not POSIX compliant.

That said, I have only run Topgrade on Linux systems with the defaults, without bothering much about changing the content of the config file. The results have been quite lucrative: Topgrade caught many updates that were not explicitly listed anywhere in the .toml file. Such is true notably for cargo, oh-my-zsh, and tldr. Although the [misc] section possibly contains the most options (Figure 6), the [linux] group also has a number of options that fall into the category from all the popular choices (Figure 7).

Figure 6: The [misc] stanza contains the most options.
Figure 7: The [linux] stanza contains some options for Arch, Red Hat, and SUSE, among others.

Troubleshooting as a Job

No matter how good your intentions, sooner or later something will go haywire, and when it does, Topgrade gives you the immediate opportunity to fix the sticky situation by prompting you to open a shell (Figure 8). As stated before, because I have been using this front end of front ends for many months now, the problem I most commonly face is (1) when tunneling Topgrade over SSH without invoking a shell first or (2) when I have a cargo version mismatch.

Figure 8: When something goes wrong, users will be prompted to fix it immediately. In this case, a manual SIGINT was issued, so nothing requires fixing.
Figure 9: The supercharged nala utility shows a much more verbose view of your current upgrade phase.

For the first case, if issuing something like

ssh IP -t '/home/Dan/.cargo/bin/topgrade -y'

when a shell-dependant update is pending (e.g., an oh-my-zsh update), then the topgrade process will fail. In the second case of a cargo version mismatch, running

cargo install cargo-update

from a rescue shell has always managed to fix my problem. After completing these minor sessions of troubleshooting, exiting and coming back to the utility always prove to be successful until the process is completed.

Pushing the Upgrade Game

Because of its nature, Topgrade will only be as good as the tools with which it is coupled. In that respect, and in the case of Debian and its derivatives, apt and its menu-driven aptitude sibling have been handling the job quite well for the last quarter century. Nevertheless, you still have room for improvement because even anything that has been in place that long should sooner or later be facing some sort of obsolence..

If you want to further enhance the toolset, the next level after deploying Topgrade would be to install something like Nala [7], a libapt-pkg front end (Figure 7), which, in turn, is much faster than apt. The tool offers not only a neater interface than the predecessors, but also parallel package downloads, the ability to select the fastest mirrors, and a history of package transactions. Although this step is optional, it will forever change your updating mindset.

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy ADMIN Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

comments powered by Disqus
Subscribe to our ADMIN Newsletters
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs



Support Our Work

ADMIN content is made possible with support from readers like you. Please consider contributing when you've found an article to be beneficial.

Learn More”>
	</a>

<hr>		    
			</div>
		    		</div>

		<div class=