rbenv ist ein Versionsverwaltungstool für die Programmiersprache Ruby auf Unix-ähnlichen Systemen. Dies ist nützlich, um zwischen mehreren Ruby-Versionen auf demselben Computer zu wechseln und sicherzustellen, dass jedes Projekt, an dem Sie arbeiten, immer auf der richtigen Ruby-Version ausgeführt wird.
Nachdem sich rbenv zum Zeitpunkt der Installation in Ihren PATH eingefügt hat, aktiviert jeder Aufruf von ruby
, gem
, bundler
oder einer anderen Ruby-bezogenen ausführbaren Datei zunächst rbenv. Anschließend durchsucht rbenv das aktuelle Projektverzeichnis nach einer Datei mit dem Namen .ruby-version
. Wenn diese Datei gefunden wird, bestimmt sie die Version von Ruby, die in diesem Verzeichnis verwendet werden soll. Schließlich sucht rbenv diese Ruby-Version unter den unter ~/.rbenv/versions/
installierten Versionen.
Sie können die Ruby-Version für Ihr Projekt auswählen, zum Beispiel mit:
cd myproject
# choose Ruby version 3.1.2:
rbenv local 3.1.2
Dadurch wird die .ruby-version
Datei im aktuellen Verzeichnis mit der von Ihnen gewählten Version erstellt oder aktualisiert. Ein anderes Projekt von Ihnen, das sich in einem anderen Verzeichnis befindet, verwendet möglicherweise eine völlig andere Ruby-Version – rbenv wechselt nahtlos von einer Ruby-Version zur anderen, wenn Sie das Projekt wechseln.
Schließlich ist fast jeder Aspekt des rbenv-Mechanismus über in Bash geschriebene Plugins anpassbar.
Die Einfachheit von rbenv hat seine Vorteile, aber auch einige Nachteile. Weitere Details und einige Alternativen finden Sie im Vergleich der Versionsmanager.
Auf Systemen mit Homebrew-Paketmanager wird die Methode „Verwenden von Paketmanagern“ empfohlen. Auf anderen Systemen ist „Basic Git Checkout“ möglicherweise die einfachste Möglichkeit, sicherzustellen, dass Sie immer die neueste Version von rbenv installieren.
Installieren Sie rbenv mit einem der folgenden Ansätze.
Unter macOS oder Linux empfehlen wir die Installation von rbenv mit Homebrew.
brew install rbenv
[!VORSICHT]
Die Version von rbenv, die in offiziellen Debian- und Ubuntu-Repositories gepackt und verwaltet wird, ist veraltet . Um die neueste Version zu installieren, wird empfohlen, rbenv mit git zu installieren.
sudo apt install rbenv
Archlinux verfügt über ein AUR-Paket für rbenv und Sie können es mithilfe der Anweisungen auf dieser Wiki-Seite über AUR installieren.
Fedora hat ein offizielles Paket, das Sie installieren können:
sudo dnf install rbenv
Richten Sie Ihre Shell so ein, dass sie rbenv lädt.
rbenv init
Schließen Sie Ihr Terminalfenster und öffnen Sie ein neues, damit Ihre Änderungen wirksam werden.
Das ist es! Sie können jetzt einige Ruby-Versionen installieren.
Notiz
Für eine automatisiertere Installation können Sie rbenv-installer verwenden. Wenn Sie keine von einer Web-URL heruntergeladenen Skripte ausführen möchten oder einfach einen manuellen Ansatz bevorzugen, führen Sie die folgenden Schritte aus.
Dadurch können Sie mit der neuesten Version von rbenv loslegen, ohne dass eine systemweite Installation erforderlich ist.
Klonen Sie rbenv in ~/.rbenv
.
git clone https://github.com/rbenv/rbenv.git ~ /.rbenv
Richten Sie Ihre Shell so ein, dass sie rbenv lädt.
~ /.rbenv/bin/rbenv init
Wenn Sie neugierig sind, lesen Sie hier, um zu verstehen, was init
tut.
Starten Sie Ihre Shell neu, damit diese Änderungen wirksam werden. (Das Öffnen einer neuen Terminal-Registerkarte reicht normalerweise aus.)
Bei der manuellen Installation von rbenv kann es hilfreich sein, zu beachten, wie Abschlussskripte für verschiedene Shells funktionieren. Vervollständigungsskripts helfen bei der Eingabe von rbenv-Befehlen, indem sie teilweise eingegebene rbenv-Befehlsnamen und Optionsflags erweitern. Normalerweise wird dies durch Drücken der Tab- Taste in einer interaktiven Shell aufgerufen.
Das Bash- Abschlussskript für rbenv wird mit dem Projekt geliefert und vom rbenv init
-Mechanismus geladen.
Das zsh -Abschlussskript wird mit dem Projekt geliefert, muss jedoch zum FPATH in zsh hinzugefügt werden, bevor es von der Shell erkannt werden kann. Eine Möglichkeit, dies zu tun, wäre, ~/.zshrc
zu bearbeiten:
# assuming that rbenv was installed to `~/.rbenv`
FPATH= ~ /.rbenv/completions: " $FPATH "
autoload -U compinit
compinit
Das Fischvervollständigungsskript für rbenv wird mit der Fischschale selbst geliefert und wird nicht vom rbenv-Projekt verwaltet.
Der Befehl rbenv install
ist nicht standardmäßig im Lieferumfang von rbenv enthalten, sondern wird vom Ruby-Build-Plugin bereitgestellt.
Bevor Sie versuchen, Ruby zu installieren, überprüfen Sie, ob Ihre Build-Umgebung über die erforderlichen Tools und Bibliotheken verfügt . Dann:
# list latest stable versions:
rbenv install -l
# list all local versions:
rbenv install -L
# install a Ruby version:
rbenv install 3.1.2
Informationen zur Fehlerbehebung BUILD FAILED
Szenarien finden Sie im Abschnitt „Ruby-Build-Diskussionen“.
Notiz
Wenn der Befehl rbenv install
nicht gefunden wurde, können Sie Ruby-Build als Plugin installieren:
git clone https://github.com/rbenv/ruby-build.git " $( rbenv root ) " /plugins/ruby-build
Legen Sie eine Ruby-Version fest, um die Installation abzuschließen und Ruby zu verwenden:
rbenv global 3.1.2 # set the default Ruby version for this machine
# or:
rbenv local 3.1.2 # set the Ruby version for this directory
Alternativ zum Befehl rbenv install
können Sie Ruby manuell als Unterverzeichnis von ~/.rbenv/versions
herunterladen und kompilieren. Ein Eintrag in diesem Verzeichnis kann auch ein symbolischer Link zu einer Ruby-Version sein, die an anderer Stelle im Dateisystem installiert ist.
Wählen Sie beispielsweise mit rbenv local 3.1.2
eine Ruby-Version für Ihr Projekt aus. Fahren Sie dann wie gewohnt mit der Installation von Gems fort:
gem install bundler
Notiz
Sie sollten Sudo nicht zum Installieren von Gems verwenden . Normalerweise werden die Ruby-Versionen in Ihrem Home-Verzeichnis installiert und sind daher für Ihren Benutzer beschreibbar. Wenn Sie bei der Installation von Gems die Fehlermeldung „Sie haben keine Schreibberechtigungen“ erhalten, ist es wahrscheinlich, dass Ihre „System“-Ruby-Version immer noch eine globale Standardversion ist. Ändern Sie das mit rbenv global <version>
und versuchen Sie es erneut.
Überprüfen Sie den Speicherort, an dem Gems installiert werden, mit gem env
:
gem env home
# => ~/.rbenv/versions/<version>/lib/ruby/gems/...
Mit der Zeit sammeln sich die von Ihnen installierten Ruby-Versionen in Ihrem Verzeichnis ~/.rbenv/versions
an.
Um alte Ruby-Versionen zu entfernen, rufen Sie einfach rm -rf
das Verzeichnis der Version auf, die Sie entfernen möchten. Sie können das Verzeichnis einer bestimmten Ruby-Version mit dem Befehl rbenv prefix
finden, z. B. rbenv prefix 2.7.0
.
Das Ruby-Build-Plugin bietet einen rbenv uninstall
um den Entfernungsprozess zu automatisieren.
Die wichtigsten rbenv-Befehle, die Sie kennen müssen, sind:
Listet alle Ruby-Versionen auf, die rbenv bekannt sind, und zeigt ein Sternchen neben der aktuell aktiven Version an.
$ rbenv versions
1.8.7-p352
1.9.2-p290
* 1.9.3-p327 (set by /Users/sam/.rbenv/version)
jruby-1.7.1
rbx-1.2.4
ree-1.8.7-2011.03
Zeigt die aktuell aktive Ruby-Version zusammen mit Informationen darüber an, wie sie festgelegt wurde.
$ rbenv version
1.9.3-p327 (set by /Users/sam/.rbenv/version)
Legt eine lokale anwendungsspezifische Ruby-Version fest, indem der Versionsname in eine .ruby-version
Datei im aktuellen Verzeichnis geschrieben wird. Diese Version überschreibt die globale Version und kann selbst überschrieben werden, indem die Umgebungsvariable RBENV_VERSION
oder der rbenv shell
festgelegt wird.
rbenv local 3.1.2
Bei Ausführung ohne Versionsnummer meldet rbenv local
die aktuell konfigurierte lokale Version. Sie können die lokale Version auch deaktivieren:
rbenv local --unset
Legt die globale Version von Ruby fest, die in allen Shells verwendet werden soll, indem der Versionsname in die Datei ~/.rbenv/version
geschrieben wird. Diese Version kann durch eine anwendungsspezifische .ruby-version
Datei oder durch Festlegen der Umgebungsvariablen RBENV_VERSION
überschrieben werden.
rbenv global 3.1.2
Das spezielle system
weist rbenv an, das System Ruby zu verwenden (erkannt durch Durchsuchen Ihres $PATH
).
Bei Ausführung ohne Versionsnummer meldet rbenv global
die aktuell konfigurierte globale Version.
Legt eine Shell-spezifische Ruby-Version fest, indem Sie die Umgebungsvariable RBENV_VERSION
in Ihrer Shell festlegen. Diese Version überschreibt anwendungsspezifische Versionen und die globale Version.
rbenv shell jruby-1.7.1
Bei Ausführung ohne Versionsnummer meldet rbenv shell
den aktuellen Wert von RBENV_VERSION
. Sie können die Shell-Version auch deaktivieren:
rbenv shell --unset
Beachten Sie, dass Sie die Shell-Integration von rbenv aktivieren müssen (Schritt 3 der Installationsanweisungen), um diesen Befehl verwenden zu können. Wenn Sie keine Shell-Integration verwenden möchten, können Sie die Variable RBENV_VERSION
einfach selbst festlegen:
export RBENV_VERSION=jruby-1.7.1
Installiert Shims für alle ausführbaren Ruby-Dateien, die rbenv bekannt sind ( ~/.rbenv/versions/*/bin/*
). Normalerweise müssen Sie diesen Befehl nicht ausführen, da er nach der Installation von Gems automatisch ausgeführt wird.
rbenv rehash
Zeigt den vollständigen Pfad zur ausführbaren Datei an, die rbenv aufruft, wenn Sie den angegebenen Befehl ausführen.
$ rbenv which irb
/Users/sam/.rbenv/versions/1.9.3-p327/bin/irb
Listet alle Ruby-Versionen auf, die den angegebenen Namen der ausführbaren Datei enthalten.
$ rbenv whence rackup
1.9.3-p327
jruby-1.7.1
ree-1.8.7-2011.03
Sie können die Funktionsweise von rbenv mit den folgenden Einstellungen beeinflussen:
Name | Standard | Beschreibung |
---|---|---|
RBENV_VERSION | Gibt die zu verwendende Ruby-Version an. Siehe auch rbenv shell | |
RBENV_ROOT | ~/.rbenv | Definiert das Verzeichnis, in dem sich Ruby-Versionen und Shims befinden. Siehe auch rbenv root |
RBENV_DEBUG | Gibt Debug-Informationen aus. Auch als: rbenv --debug <subcommand> | |
RBENV_HOOK_PATH | siehe Wiki | Durch Doppelpunkte getrennte Liste der nach Rbenv-Hooks durchsuchten Pfade. |
RBENV_DIR | $PWD | Verzeichnis zum Starten der Suche nach .ruby-version . |
rbenv init
ist ein Hilfsbefehl zum Bootstrap von rbenv in einer Shell. Dieser Helfer ist Teil der empfohlenen Installationsanleitung, aber optional, da ein fortgeschrittener Benutzer die folgenden Aufgaben manuell einrichten kann. Folgendes macht der Befehl, wenn seine Ausgabe während des Startvorgangs von einer Shell eval
wird:
Fügt bei Bedarf die ausführbare rbenv
Datei zum PATH hinzu.
Fügt dem PATH das Verzeichnis ~/.rbenv/shims
voran. Dies ist im Grunde die einzige Voraussetzung dafür, dass rbenv ordnungsgemäß funktioniert.
Installiert die Bash-Shell-Vervollständigung für rbenv-Befehle.
Regeneriert Rbenv-Unterlegscheiben. Wenn dieser Schritt Ihren Shell-Start verlangsamt, können Sie rbenv init -
mit dem Flag --no-rehash
.
Installiert den „sh“-Dispatcher. Dieses Bit ist ebenfalls optional, ermöglicht es rbenv und Plugins jedoch, Variablen in Ihrer aktuellen Shell zu ändern, wodurch Befehle wie rbenv shell
möglich werden.
Sie können rbenv init -
um das generierte Skript selbst zu überprüfen.
Die Einfachheit von rbenv macht es einfach, es vorübergehend zu deaktivieren oder vom System zu deinstallieren.
Um die Verwaltung Ihrer Ruby-Versionen durch rbenv zu deaktivieren , kommentieren oder entfernen Sie einfach die rbenv init
Zeile aus Ihrer Shell-Startkonfiguration. Dadurch wird das rbenv-Shims-Verzeichnis aus PATH entfernt und zukünftige Aufrufe wie ruby
führen die System-Ruby-Version aus und umgehen rbenv vollständig.
Auch wenn rbenv
deaktiviert ist, kann über die Befehlszeile weiterhin darauf zugegriffen werden, aber Ihre Ruby-Apps sind von der Versionsänderung nicht betroffen.
Um rbenv vollständig zu deinstallieren , führen Sie Schritt (1) aus und entfernen Sie dann das rbenv-Stammverzeichnis. Dadurch werden alle Ruby-Versionen gelöscht , die unter `rbenv root`/versions/
installiert wurden:
rm -rf "$(rbenv root)"
Wenn Sie rbenv mit einem Paketmanager installiert haben, führen Sie als letzten Schritt die Entfernung des rbenv-Pakets durch:
brew uninstall rbenv
sudo apt purge rbenv
sudo pacman -R rbenv
Tests werden mit Bats ausgeführt:
$ bats test
$ bats test/<file>.bats
Bitte senden Sie Pull-Requests und melden Sie Fehler im Issue-Tracker.