Topgrade om systeemonderdelen bij te werken
Op een desktopcomputer staat meestal software uit verschillende bronnen. Voor het updaten van alle onderdelen moet je dan verschillende updateprogramma's handmatig starten. Topgrade doet de updates voor Linux, macOS en Windows echter allemaal in één keer
De ingebouwde update-service van Windows houdt het besturingssysteem op de laatste stand, bij Linux werkt de eigen package-manager het systeem bij. Met Flatpak en Snap is daar inmiddels ook software uit andere bronnen bijgekomen die ook up-to-date moet worden gehouden. En als je met Python-programma's werkt, gebruik je meestal ook nog de pakketmanager Pip. Die installeert op zijn beurt de Python-modules buiten de updatefunctie van het besturingssysteem om. Analoog geldt hetzelfde voor onder meer Node. js-, R- en Ruby-pakketten. In het ergste geval moet je meteen meerdere pakketmanagers handmatig starten om het complete systeem op de nieuwste stand te brengen.
In die situatie schiet de tool Topgrade je te hulp. Hij start alle op het systeem aanwezige updatefuncties achter elkaar. Bij Linux wordt het systeem bijvoorbeeld eerst geüpdatet via de pakketbeheerder en daarna alle Python-modules met Pipx. Bij Windows start Topgrade eerst Windows Update wanneer de PowerShell-module PSWindowsUpdate geïnstalleerd is. Topgrade werkt ook andere PowerShell-modules bij of software die via Chocolatey en Scoop geïnstalleerd is.
Topgrade ondersteunt momenteel Windows, macOS, FreeBSD, DragonFly BSD en ook enkele Linux-distributies. Bij die laatste zitten Arch Linux, Red Hat, Debian, Clear Linux, Gentoo, NixOS, openSUSE, Void Linux en Raspbian – evenals hun afgeleiden. Op andere systemen moet je er rekening mee houden dat Topgrade niet alle componenten zal updaten.
KLAAR VOOR GEBRUIK
Op Arch Linux en NixOS kun je Topgrade via de ingebouwde pakketbeheerder installeren, voor andere Linux-distributies en Windows is een 64-bit versie beschikbaar op GitHub. Gebruik onder macOS homebrew voor de installatie of download het programma van de projectwebsite (zie de link op de rechterpagina). Het bij je systeem passende archiefbestand hoef je alleen nog op de harde schijf uit te pakken.
Topgrade hoeft niet geïnstalleerd te worden, je kunt het uitvoerbare bestand direct starten. Bij Linux ga je in een terminalvenster naar de directory van de uitgepakte tool en typ je ./topgrade in. Bij Windows kun je topgrade.exe het beste starten vanaf een Opdrachtprompt om de uitvoer van het programma te zien. Als Topgrade onder Windows niet werkt en verwijst naar het bestand VCRUNTIME140.dll, dan moet je de Visual C++ redistributable installeren (zie de link rechts). Als je de terminal-multiplexer Tmux gebruikt, voeg dan de parameter -t toe.
Voor sommige upgrades moet Topgrade de hulp inroepen van anderen tools en kan hij het niet alleen af. Om bijvoorbeeld de Python-modules te upgraden die met pip zijn geïnstalleerd, moet het programma pipx geïnstalleerd zijn. Topgrade maakt daar echter geen enkele melding van. Voor systeem- en pakketupdates onder Arch Linux gebruikt Topgrade de AUR-wrapper yay. Ontbreekt die, dan gebruikt het programma de pakketmanager pacman. Maar software geïnstalleerd via AUR valt dan buiten de boot.
Indien nodig vraagt Topgrade om de benodigde wachtwoorden, bijvoorbeeld die van de systeembeheerder. Vragen van de pakketmanagers geeft Topgrade aan je door. Met de parameter -y kun je automatisch akkoord gaan met alle vragen, maar die functie wordt beschouwd als experimenteel en kun je op een productiesysteem maar beter niet gebruiken. Als je het upgraden wilt annuleren, druk je twee keer op Ctrl+C.
Met de parameter --dry-run vertelt Topgrade je welke acties hij op je systeem wil gaan uitvoeren, maar doet dat nog niet. Als je Topgrade net geïnstalleerd hebt, moet je dat beslist uitproberen om ervoor te zorgen dat Topgrade geen updates uitvoert die je liever handmatig wilt doen.
Je kunt de tool expliciet verbieden om een of meer acties uit te voeren. Om dat te doen, voeg je de parameter --disable toe. Die wordt gevolgd door een of meer afkortingen, gescheiden door komma's, die staan voor de bijbehorende acties. Voorbeeld: node slaat op het updaten van de Node. js-modules met npm. Dus met het commando topgrade --disable node slaat de tool Node.js-modules over tijdens het updaten. Alle beschikbare afkortingen vind je met topgrade --help.
Als je afzonderlijke stappen permanent wilt overslaan, kun je dat vastleggen in het configuratiebestand van Topgrade. Daarvoor maak je een nieuw bestand aan met een teksteditor en sla je het op als ~/.config/topgrade.toml op een Unix- en Linux-systeem. Bij Windows doe je dat als %APPDATA%/topgrade.toml en op een macOS-systeem bewaar je het bestand als~/Library/Preferences/topgrade.toml. Daar heeft Topgrade wellicht al een voorbeeldbestand hebben aangemaakt, dat je dan simpelweg kunt aanpassen. Met de regel disable = ["firmware"] kun je dan bijvoorbeeld de automatische firmware-upgrades verhinderen.
EIGEN INBRENG
Ook al belooft Topgrade een allesomvattende update, hij kan alleen de bij hem bekende pakketbeheerders aan het werk zetten. Zo negeert de tool bijvoorbeeld bestaande Docker-containers. Welke acties Topgrade uitvoert op welk besturingssysteem is te vinden in een lange lijst waar naar gelinkt wordt op de GitHub-pagina bij het deel Usage (zie de link op deze pagina).
Heel handig is dat Topgrade willekeurige andere programma's kan aanroepen en dus ook Docker. Voeg de volgende twee regels toe aan het configuratiebestand:
[commands]
"Docker" = "/usr/bin/docker pull alpine"
Elke regel onder [commands] bevat een commando dat Topgrade gaat uitvoeren nadata alle andere updates gedaan zijn. Een regel bevat een korte beschrijving tussen aanhalingstekens, gevolgd door een isgelijkteken en het commando zelf. Als Topgrade een commando voor alle updates moet uitvoeren, maak je op dezelfde manier de sectie [pre_commands] aan.
Eventueel kan Topgrade ook Git-repositories bijwerken (via het pull- commando). Daarvoor voeg je de volgende sectie toe aan het begin van het configuratiebestand: git_repos = [ "~/ct-Pi-wekkerradio",
"~/ct/*"
]
Binnen de vierkante haken staan de mappen op je eigen harde schijf waar zich een Git-repository bevindt, steeds gescheiden door een komma. Wildcards zijn ook toegestaan, ~/ct/* werkt bijvoorbeeld alle projecten in de subdirectories van ~/ct bij.
OP AFSTAND
Topgrade kan via ssh inloggen op een of meer externe computers en de daar geïnstalleerde topgrade aanroepen. In het ideale geval is zo'n aanroep voldoende om alle systemen bij te werken naar de laatste stand.
Je moet er dan wel eerst voor zorgen dat Topgrade op alle betrokken systemen direct met topgrade kan worden gestart. Kopieer het programma bij Linux bijvoorbeeld met root-rechten naar /usr/ local/bin of voeg de map waar Topgrade in staat toe aan de omgevingsvariabele PATH. Voeg dan de volgende regels toe aan het begin van het configuratiebestand: remote_topgrades = ["tim@marvin", "192.168.1.102"] ssh_arguments = "-o ConnectTimeout=2"
De IP-adressen of hostnamen van de te updaten systemen staan tussen vierkante haken, gescheiden door komma's, en de gebruikersnaam zo nodig voor de @. Topgrade geeft de parameters tussen de aanhalingstekens in de optionele tweede regel door aan de SSH-client bij het tot stand brengen van een verbinding.
Wanneer je de experimentele parameter --only gebruikt, verbiedt Topgrade bij het updaten van het remote systeem alle acties, behalve degene die er expliciet achter vermeld staan. De acties die je dan wel wilt laten uitvoeren moeten op dezelfde manier worden vermeld als bij --disable, met hun juiste afkortingen.
De documentatie voor Topgrade is helaas beperkt tot topgrade --help, maar meer informatie vind je in de commentaren in de voorbeeldconfiguratie en op de Github-pagina.