macOS: aktualizace systému i aplikací jedním vrzem

🤫 Psst! Článek vyšel v roce 2022 a protože řeší technikálie, nemusí už být aktuální. Berte ho s rezervou.

Udržet Mac aktuální neni zas tak jednoduchá věc. Systém se aktualizuje na jednom místě, část aplikací přímo z App Storu, část zase po vlastní ose a vývojářské nástroje zase úplně jinak. Jakoby to nestačilo, ideálně si pak každý systém o aktualizaci řekne v jiný a zároveň nejméně vhodný okamžik.

Koláž screenshotů s aktualizacemi z různých zdrojů.
Aktualizační peklíčko: systém, App Store, Sparkle,…

Donutilo mě to tedy povypínat automatické aktualizace a poslepovat jednoduchý skript, který přibližně jednou za měsíc spustím po „zdravotním“ restartu systému a jen počkám, než se vše aktualizuje:

softwareupdate --install -a && echo '✅ macOS updated!' && brew upgrade && echo '✅ Brew updated!' && brew cu --all --yes && echo '✅ Casks updated!' && brew cleanup && echo '✅ Brew cleaned up!' && brew leaves && echo '❓ Anything no longer needed? (Nothing else depends on these.)'

Co vše se příkazy aktualizuje?

softwareupdate --install -a

Systémovinky jinak dostupné v Předvolby systému > Aktualizace softwaru. Cíleně běží jako první, protože navazující aktualizace si volí verzi v závislosti na verzi macOS. To bohužel zároveň vede k potřebě někdy spustit celý skript znovu, pokud aktualizace restartovala systém a první běh tak přerušila.

brew upgrade

Aktualizuje zejména vývojářské nástroje a samotné Homebrew. Nemá ale úplně ideálně podchycenou aktualizaci aplikací, takže je lepší doinstalovat brew-cask-upgrade a nechat jejich správu na dalším příkazu.

brew cu --all --yes

Postahuje nové verze aplikací, které si jinak aktualizace zajišťují po vlastní ose, většinou přes profláklý Sparkle. Jen je k tomu potřeba původní instalace nahradit těmi z Homebrew (instalují se jako tzv. „cask“) a zjistit, jestli s tím nemají problém. Třeba do Sketche je pokaždé nutné se znovu přihlásit, takže ho radši nadále aktualizuji ručně, když si o to řekne.

brew cleanup

Brew si různě odkládá starší verze aplikací, postahované instalační balíky a kdovíco ještě. Tohle je smaže.

brew leaves

Vypíše na závěr kandidáty k výmazu: ručně nainstalované balíčky, na kterých nic dalšího nezávisí.

Mezikroky

&& spojující příkazy akorát zajistí, že další proběhnou jen pokud předešlé úspěšně doběhnou a echo ✅ (...) používám jen pro vizuální oddělení jednotlivých kroků.

App Storovky se relativně spolehlivě aktualizují samy na pozadí, takže je neřeším. Teoreticky by to šlo přes mas-cli a kontrola nad aktuálností Macu by byla 100% z jednoho místa.