Wie aktualisieren/aktualisieren Sie jedes Paket auf Ihrem Mac?

Ich möchte, dass ein einziger Befehl alles auf meiner Mac-Befehlszeile aktualisiert. Kein komplizierter Befehl mehr brew update && brew upgrade && brew cleanup && brew doctor, npm update -gum alles in pip3 zu aktualisieren. Gibt es dafür ein vorhandenes Tool oder sollte ich nur ein Skript verwenden? Außerdem ist das überhaupt eine gute Idee? Hat es Vorteile, meine gesamte Software einzeln zu aktualisieren?

Als Referenz ist dies die aktuelle Funktion, die ich in meinem .zshrchabe und die alles aktualisieren soll:

function update () {
  (brew update && brew upgrade && brew cleanup && brew doctor) &
  upgrade_oh_my_zsh &
  npm update -g &
  (pip3 list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip3 install -U) &
  (cd ~/.vim_runtime && git pull --rebase)
}
Im Allgemeinen besteht die empfohlene Vorgehensweise darin, (1) nicht alles blind zu aktualisieren, sondern zuerst festzustellen, ob etwas kaputt geht, und (2) Sicherheitsupdates gegenüber anderen Updates zu priorisieren. Die Idee ist, dass Stabilität den neuesten Funktionen vorgezogen wird. Und ich würde empfehlen, auf MacPorts statt auf Homebrew umzusteigen - MacPorts wurde von einem Apple-Mitarbeiter entwickelt, der auch am FreeBSD-Ports-System gearbeitet hat und die Dinge richtig (unix) macht. Er ist schneller, besser, sicherer und hat mehr Pakete als jeder andere Paketmanager für macOS.

Antworten (1)

Nachdem ich diese Frage an vielen Stellen gestellt habe, habe ich die Funktion so verfeinert, dass sie umfassender und vorhersehbarer ist (führt die Updates seriell statt parallel aus).

Dies ist das Endergebnis in meinem .zshrc(Aktualisiert Sept. 2021):

function update () {
  softwareupdate --install --all
  (brew update && brew upgrade && brew cleanup && brew doctor)
  mas upgrade # https://github.com/mas-cli/mas
  npm update -g
  (pip3 list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1  | xargs -n1 pip3 install -U)
  (gem update --system && gem update && gem cleanup) # https://github.com/rbenv/rbenv
  omz update # https://ohmyz.sh/
  (cd ~/.vim_runtime && git pull --rebase) # https://github.com/amix/vimrc
}