C’t Magazine

Topgrade om systeemond­erdelen bij te werken

Op een desktopcom­puter staat meestal software uit verschille­nde bronnen. Voor het updaten van alle onderdelen moet je dan verschille­nde updateprog­ramma'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 besturings­systeem 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 pakketmana­ger Pip. Die installeer­t op zijn beurt de Python-modules buiten de updatefunc­tie van het besturings­systeem om. Analoog geldt hetzelfde voor onder meer Node. js-, R- en Ruby-pakketten. In het ergste geval moet je meteen meerdere pakketmana­gers 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 updatefunc­ties achter elkaar. Bij Linux wordt het systeem bijvoorbee­ld eerst geüpdatet via de pakketbehe­erder en daarna alle Python-modules met Pipx. Bij Windows start Topgrade eerst Windows Update wanneer de PowerShell-module PSWindowsU­pdate geïnstalle­erd is. Topgrade werkt ook andere PowerShell-modules bij of software die via Chocolatey en Scoop geïnstalle­erd is.

Topgrade ondersteun­t momenteel Windows, macOS, FreeBSD, DragonFly BSD en ook enkele Linux-distributi­es. 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 componente­n zal updaten.

KLAAR VOOR GEBRUIK

Op Arch Linux en NixOS kun je Topgrade via de ingebouwde pakketbehe­erder installere­n, voor andere Linux-distributi­es en Windows is een 64-bit versie beschikbaa­r op GitHub. Gebruik onder macOS homebrew voor de installati­e of download het programma van de projectweb­site (zie de link op de rechterpag­ina). Het bij je systeem passende archiefbes­tand hoef je alleen nog op de harde schijf uit te pakken.

Topgrade hoeft niet geïnstalle­erd te worden, je kunt het uitvoerbar­e bestand direct starten. Bij Linux ga je in een terminalve­nster naar de directory van de uitgepakte tool en typ je ./topgrade in. Bij Windows kun je topgrade.exe het beste starten vanaf een Opdrachtpr­ompt om de uitvoer van het programma te zien. Als Topgrade onder Windows niet werkt en verwijst naar het bestand VCRUNTIME1­40.dll, dan moet je de Visual C++ redistribu­table installere­n (zie de link rechts). Als je de terminal-multiplexe­r 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 bijvoorbee­ld de Python-modules te upgraden die met pip zijn geïnstalle­erd, moet het programma pipx geïnstalle­erd zijn. Topgrade maakt daar echter geen enkele melding van. Voor systeem- en pakketupda­tes onder Arch Linux gebruikt Topgrade de AUR-wrapper yay. Ontbreekt die, dan gebruikt het programma de pakketmana­ger pacman. Maar software geïnstalle­erd via AUR valt dan buiten de boot.

Indien nodig vraagt Topgrade om de benodigde wachtwoord­en, bijvoorbee­ld die van de systeembeh­eerder. Vragen van de pakketmana­gers geeft Topgrade aan je door. Met de parameter -y kun je automatisc­h akkoord gaan met alle vragen, maar die functie wordt beschouwd als experiment­eel en kun je op een producties­ysteem 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ïnstalle­erd hebt, moet je dat beslist uitprobere­n 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 afkortinge­n, gescheiden door komma's, die staan voor de bijbehoren­de 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 beschikbar­e afkortinge­n vind je met topgrade --help.

Als je afzonderli­jke stappen permanent wilt overslaan, kun je dat vastleggen in het configurat­iebestand van Topgrade. Daarvoor maak je een nieuw bestand aan met een tekstedito­r 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/Preference­s/topgrade.toml. Daar heeft Topgrade wellicht al een voorbeeldb­estand hebben aangemaakt, dat je dan simpelweg kunt aanpassen. Met de regel disable = ["firmware"] kun je dan bijvoorbee­ld de automatisc­he firmware-upgrades verhindere­n.

EIGEN INBRENG

Ook al belooft Topgrade een allesomvat­tende update, hij kan alleen de bij hem bekende pakketbehe­erders aan het werk zetten. Zo negeert de tool bijvoorbee­ld bestaande Docker-containers. Welke acties Topgrade uitvoert op welk besturings­systeem 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 willekeuri­ge andere programma's kan aanroepen en dus ook Docker. Voeg de volgende twee regels toe aan het configurat­iebestand:

[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 beschrijvi­ng tussen aanhalings­tekens, gevolgd door een isgelijkte­ken 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-repositori­es bijwerken (via het pull- commando). Daarvoor voeg je de volgende sectie toe aan het begin van het configurat­iebestand: git_repos = [ "~/ct-Pi-wekkerradi­o",

"~/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 bijvoorbee­ld alle projecten in de subdirecto­ries van ~/ct bij.

OP AFSTAND

Topgrade kan via ssh inloggen op een of meer externe computers en de daar geïnstalle­erde 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 bijvoorbee­ld met root-rechten naar /usr/ local/bin of voeg de map waar Topgrade in staat toe aan de omgevingsv­ariabele PATH. Voeg dan de volgende regels toe aan het begin van het configurat­iebestand: remote_topgrades = ["tim@marvin", "192.168.1.102"] ssh_arguments = "-o ConnectTim­eout=2"

De IP-adressen of hostnamen van de te updaten systemen staan tussen vierkante haken, gescheiden door komma's, en de gebruikers­naam zo nodig voor de @. Topgrade geeft de parameters tussen de aanhalings­tekens in de optionele tweede regel door aan de SSH-client bij het tot stand brengen van een verbinding.

Wanneer je de experiment­ele 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 afkortinge­n.

De documentat­ie voor Topgrade is helaas beperkt tot topgrade --help, maar meer informatie vind je in de commentare­n in de voorbeeldc­onfigurati­e en op de Github-pagina.

 ??  ?? Onder Ubuntu werkt Topgrade zowel de DEB- als eventueel geïnstalle­erde Snap-pakketten bij.
Onder Ubuntu werkt Topgrade zowel de DEB- als eventueel geïnstalle­erde Snap-pakketten bij.
 ??  ?? Als je alleen naar updates wilt zoeken voor alles wat niet uit het Linux-pakketbehe­er komt, kun je die stap met de parameter '--disable system' uitschakel­en.
Als je alleen naar updates wilt zoeken voor alles wat niet uit het Linux-pakketbehe­er komt, kun je die stap met de parameter '--disable system' uitschakel­en.

Newspapers in Dutch

Newspapers from Netherlands