Zum Inhalt springen

~/CodeBlog.at

RubyGems unter macOS aktualisieren – ohne sudo und System-Ruby

·3 Min. Lesezeit

Veröffentlicht
Überarbeitet

Was ist neu: Zur Anleitung ausgebaut: Ruby per Homebrew, PATH-Einrichtung, gem-Befehle und Hinweis auf Versionsmanager.

Kurz & knapp

Das vorinstallierte Ruby unter /usr/bin/ruby ist selbst auf macOS 27 noch Version 2.6 und seit 2022 ohne Support – dessen Gems solltest du nicht mit sudo aktualisieren. Installiere stattdessen ein aktuelles Ruby mit brew install ruby und halte deine Gems mit gem update und gem cleanup aktuell.

Getestet mit: macOS 27, System-Ruby 2.6.10, Homebrew Ruby 4.0

Inhalt
  1. Warum nicht das System-Ruby?
  2. Aktuelles Ruby mit Homebrew installieren
  3. Gems verwalten und aktualisieren
  4. Mehrere Ruby-Versionen: Versionsmanager

RubyGems ist das Paketsystem der Programmiersprache Ruby. Damit installierst du Bibliotheken und Tools – sogenannte Gems – etwa bundler, rails oder jekyll. Früher war es unter macOS üblich, einfach alle Gems des mitgelieferten Ruby zu aktualisieren:

# Bitte nicht mehr verwenden!
sudo gem update `gem list | cut -d ' ' -f 1`

Das war schon damals keine gute Idee und ist es heute erst recht nicht.

Warum nicht das System-Ruby?

Dazu kommt: Die Gems des System-Ruby liegen in geschützten Systemverzeichnissen. Wer sie mit sudo verändert, riskiert Konflikte mit macOS selbst – und ein macOS-Update kann die Änderungen jederzeit wieder überschreiben. Das Aktualisieren der Gems macht außerdem das Ruby selbst nicht neuer.

Kurz gesagt: Das System-Ruby einfach in Ruhe lassen und für eigene Zwecke ein separates, aktuelles Ruby installieren.

Aktuelles Ruby mit Homebrew installieren

Am einfachsten geht das mit Homebrew. Falls du es noch nicht hast, findest du die Installation im verlinkten Artikel.

  1. Ruby installieren:

    brew install ruby
  2. Prüfen, welches Ruby aktiv ist. Öffne ein neues Terminal-Fenster und gib ein:

    which ruby
    ruby -v

    Erwartet wird /opt/homebrew/bin/ruby und eine aktuelle Version (derzeit Ruby 4.0). Erscheint noch /usr/bin/ruby, fehlt die Homebrew-Zeile in deiner ~/.zshrc – siehe Homebrew installieren.

  3. Ordner für Gem-Programme zum PATH hinzufügen. Programme, die du per gem install installierst, landen in einem eigenen Ordner. Homebrew nennt ihn nach der Installation (brew info ruby); bei Ruby 4.0 ist das:

    echo 'export PATH="/opt/homebrew/lib/ruby/gems/4.0.0/bin:$PATH"' >> ~/.zshrc

    Nach einem großen Ruby-Update (z. B. auf 4.1) ändert sich die Versionsnummer im Pfad – dann den Eintrag anpassen.

Gems verwalten und aktualisieren

Befehl Was er macht
gem list Listet alle installierten Gems mit Version
gem install bundler Installiert ein Gem
gem outdated Zeigt Gems, für die es eine neuere Version gibt
gem update Aktualisiert alle installierten Gems
gem update bundler Aktualisiert nur ein bestimmtes Gem
gem update --system Aktualisiert RubyGems selbst
gem cleanup Entfernt alte Versionen aktualisierter Gems
gem cleanup --dryrun Zeigt nur an, was gem cleanup entfernen würde

Für die regelmäßige Pflege reicht:

gem update && gem cleanup

Mehrere Ruby-Versionen: Versionsmanager

Brauchst du für verschiedene Projekte unterschiedliche Ruby-Versionen, ist ein Versionsmanager die bessere Wahl. Verbreitet sind rbenv (öffnet in neuem Tab), chruby (öffnet in neuem Tab) und mise (öffnet in neuem Tab), das neben Ruby auch Node.js, PHP und viele weitere Sprachen verwaltet. Für gelegentliche Tools ist das Ruby aus Homebrew aber völlig ausreichend.

Häufige Fragen

Darf ich die Gems des System-Ruby mit sudo aktualisieren?

Davon ist abzuraten. Das System-Ruby gehört zu macOS, ist veraltet und wird von Apple nur aus Kompatibilitätsgründen mitgeliefert. Mit sudo gem update riskierst du Konflikte, die beim nächsten macOS-Update ohnehin wieder überschrieben werden können.

Welches Ruby verwendet mein Terminal gerade?

which ruby zeigt den Pfad, ruby -v die Version. Steht dort /usr/bin/ruby, ist es das System-Ruby; bei /opt/homebrew/bin/ruby das Ruby aus Homebrew.

Was ist der Unterschied zwischen gem update und gem update --system?

gem update aktualisiert die installierten Gems. gem update --system aktualisiert RubyGems selbst, also das Programm gem.

Brauche ich rbenv, chruby oder mise?

Nur wenn du mehrere Ruby-Versionen parallel brauchst, z. B. für verschiedene Projekte. Für gelegentliche Tools reicht das Ruby aus Homebrew.

Quellen & weiterführende Links

  1. Ruby Maintenance Branches (Support-Status aller Versionen) (öffnet in neuem Tab) – ruby-lang.org
  2. macOS Catalina 10.15 Release Notes – Scripting Language Runtimes (öffnet in neuem Tab) – Apple Developer
  3. RubyGems Command Reference (öffnet in neuem Tab) – RubyGems Guides
  4. ruby – Homebrew Formula (öffnet in neuem Tab) – formulae.brew.sh
  5. rbenv (öffnet in neuem Tab) – GitHub
  6. chruby (öffnet in neuem Tab) – GitHub
  7. mise (öffnet in neuem Tab) – mise.jdx.dev

Geschrieben von

Christoph Schwob (öffnet in neuem Tab)

Ich bin Christoph Schwob, halbkreativer Entwickler aus Österreich und arbeite seit über 10 Jahren an und mit TYPO3. Hier sammle ich Lösungen, Code-Snippets und Notizen rund um TYPO3, macOS, Server, Homelab und alles andere.

Suche

Tippe einen Suchbegriff ein.