ruby-build ist ein Befehlszeilentool, das die Installation jeder Ruby-Version aus dem Quellcode auf Unix-ähnlichen Systemen vereinfacht.
Es ist als Plugin für rbenv unter dem Befehl rbenv install
oder als eigenständiges Programm unter dem Befehl ruby-build
verfügbar.
brew install ruby-build
Upgrade mit:
brew upgrade ruby-build
git clone https://github.com/rbenv/ruby-build.git " $( rbenv root ) " /plugins/ruby-build
Upgrade mit:
git -C " $( rbenv root ) " /plugins/ruby-build pull
Laden Sie zunächst einen Tarball von https://github.com/rbenv/ruby-build/releases/latest herunter. Dann:
tar -xzf ruby-build- * .tar.gz
PREFIX=/usr/local ./ruby-build- * /install.sh
# As a standalone program
$ ruby-build --list # lists latest stable releases for each Ruby
$ ruby-build --definitions # lists all definitions, including outdated ones
$ ruby-build 3.2.2 ~ /.rubies/ruby-3.2.2 # installs Ruby 3.2.2
$ ruby-build -d ruby-3.2.2 ~ /.rubies # alternate form for the previous example
# As an rbenv plugin
$ rbenv install 3.2.2 # installs Ruby 3.2.2 to ~/.rbenv/versions/3.2.2
Warnung
ruby-build überprüft meist nicht, ob Systemabhängigkeiten vorhanden sind, bevor Ruby heruntergeladen und versucht wird, aus dem Quellcode zu kompilieren. Bitte stellen Sie sicher, dass alle erforderlichen Bibliotheken wie Build-Tools und Entwicklungs-Header bereits auf Ihrem System vorhanden sind.
Grundsätzlich macht Ruby-Build bei der Installation einer Ruby-Version Folgendes:
./configure --prefix=/path/to/destination
im Quellcode aus;make install
um Ruby zu kompilieren;Je nach Kontext macht ruby-build noch ein bisschen mehr als das oben Genannte: Es wird beispielsweise versuchen, Ruby mit der entsprechenden OpenSSL-Version zu verknüpfen, auch wenn das bedeutet, dass OpenSSL selbst heruntergeladen und kompiliert werden muss; Es wird von Homebrew installierte Instanzen einiger Bibliotheken wie libyaml und readline usw. erkennen und mit ihnen verknüpfen.
Um eine Ruby-Version zu installieren, die von Ruby-Build nicht erkannt wird, können Sie anstelle einer Ruby-Versionsnummer den Pfad zu einer benutzerdefinierten Build-Definitionsdatei angeben.
Sehen Sie sich Standard-Build-Definitionen als Beispiele für das Schreiben von Definitionsdateien an.
Der Build-Prozess kann über die folgenden Umgebungsvariablen konfiguriert werden:
Variable | Funktion |
---|---|
TMPDIR | Wo temporäre Dateien gespeichert werden. |
RUBY_BUILD_BUILD_PATH | Wo Quellen heruntergeladen und erstellt werden. (Standard: ein mit einem Zeitstempel versehenes Unterverzeichnis von TMPDIR ) |
RUBY_BUILD_CACHE_PATH | Wo heruntergeladene Paketdateien zwischengespeichert werden. (Standard: ~/.rbenv/cache , wenn es als Rbenv-Plugin aufgerufen wird) |
RUBY_BUILD_HTTP_CLIENT | Eines von aria2c , curl oder wget zum Herunterladen. (Standard: zuerst in PATH gefunden) |
RUBY_BUILD_ARIA2_OPTS | Zusätzliche Optionen zur Übergabe an aria2c zum Herunterladen. |
RUBY_BUILD_CURL_OPTS | Zusätzliche Optionen, die zum Herunterladen an curl übergeben werden können. |
RUBY_BUILD_WGET_OPTS | Zusätzliche Optionen zur Übergabe an wget zum Herunterladen. |
RUBY_BUILD_MIRROR_URL | Benutzerdefinierter Spiegel-URL-Stamm. |
RUBY_BUILD_MIRROR_PACKAGE_URL | Benutzerdefinierte vollständige Spiegel-URL (z. B. http://mirror.example.com/package-1.0.0.tar.gz). |
RUBY_BUILD_SKIP_MIRROR | Umgehen Sie den Download-Spiegel und rufen Sie alle Paketdateien von ihren ursprünglichen URLs ab. |
RUBY_BUILD_TARBALL_OVERRIDE | Überschreiben Sie die URL, von der der Ruby-Tarball abgerufen werden soll, optional gefolgt von #checksum . |
RUBY_BUILD_DEFINITIONS | Durch Doppelpunkte getrennte Liste von Pfaden zur Suche nach Build-Definitionsdateien. |
RUBY_BUILD_ROOT | Das Pfadpräfix für die Suche nach Build-Definitionsdateien. Veraltet: Verwenden Sie RUBY_BUILD_DEFINITIONS |
RUBY_BUILD_VENDOR_OPENSSL | Build und Anbieter von OpenSSL, auch wenn das System OpenSSL kompatibel ist |
CC | Pfad zum C-Compiler. |
RUBY_CFLAGS | Zusätzliche CFLAGS Optionen ( z. B. zum Überschreiben von -O3 ). |
CONFIGURE_OPTS | Zusätzliche ./configure . |
MAKE | Benutzerdefinierter make -Befehl ( z. B. gmake ). |
MAKE_OPTS / MAKEOPTS | Zusätzliche make -Optionen. |
MAKE_INSTALL_OPTS | Zusätzliche make install . |
RUBY_CONFIGURE_OPTS | Zusätzliche ./configure (gilt nur für Ruby-Quelle). |
RUBY_MAKE_OPTS | Zusätzliche make Optionen (gilt nur für Ruby-Quelle). |
RUBY_MAKE_INSTALL_OPTS | Zusätzliche make install (gilt nur für Ruby-Quelle). |
NO_COLOR | Deaktivieren Sie ANSI-Farben in der Ausgabe. Standardmäßig werden Farben für die Ausgabe verwendet, die an ein Terminal angeschlossen ist. |
CLICOLOR_FORCE | Verwenden Sie ANSI-Farben in der Ausgabe, auch wenn keine Verbindung zu einem Terminal besteht. |
Sowohl die Befehle rbenv install
als auch ruby-build
unterstützen das Flag -p/--patch
um vor dem Erstellen einen Patch auf den Ruby-Quellcode anzuwenden. Patches werden von der Standardeingabe gelesen:
# applying a single patch
$ rbenv install --patch 1.9.3-p429 < /path/to/ruby.patch
# applying a patch from HTTP
$ rbenv install --patch 1.9.3-p429 < <( curl -sSL http://git.io/ruby.patch )
# applying multiple patches
$ cat fix1.patch fix2.patch | rbenv install --patch 1.9.3-p429
Alle mit ruby-build gebündelten Ruby-Definitionsdateien enthalten Prüfsummen für Pakete, was bedeutet, dass alle extern heruntergeladenen Pakete nach dem Abruf automatisch auf Integrität überprüft werden.
Weitere Informationen zum Erstellen von Prüfsummen finden Sie im nächsten Abschnitt.
Um Downloads zu beschleunigen, ruft Ruby-Build Paketdateien von einem auf Amazon CloudFront gehosteten Spiegel ab. Um davon zu profitieren, müssen die Pakete ihre Prüfsumme angeben:
# example:
install_package " ruby-2.6.5 " " https://ruby-lang.org/ruby-2.6.5.tgz# "
Ruby-Build versucht zunächst, dieses Paket von $RUBY_BUILD_MIRROR_URL/
abzurufen (Hinweis: Dies ist die vollständige URL), wobei
die Prüfsumme für die Datei ist. In folgenden Fällen wird auf den Download des Pakets vom ursprünglichen Speicherort zurückgegriffen:
RUBY_BUILD_SKIP_MIRROR
ist aktiviert. Sie können einen benutzerdefinierten Spiegel angeben, indem Sie RUBY_BUILD_MIRROR_URL
festlegen.
Wenn eine Spiegel-Site nicht dem oben genannten URL-Format entspricht, können Sie die vollständige URL angeben, indem Sie RUBY_BUILD_MIRROR_PACKAGE_URL
festlegen. Es verhält sich genauso wie RUBY_BUILD_MIRROR_URL
außer dass es sich um eine vollständige URL handelt.
Der standardmäßige Ruby-Build-Download-Spiegel wird von Basecamp gesponsert.
Sowohl ruby-build
als auch rbenv install
akzeptieren das Flag -k
oder --keep
, das Ruby-Build anweist, die heruntergeladene Quelle nach der Installation beizubehalten. Dies kann nützlich sein, wenn Sie gdb
und memprof
mit Ruby verwenden müssen.
Der Quellcode wird in einem parallelen Verzeichnisbaum ~/.rbenv/sources
gespeichert, wenn --keep
mit dem Befehl rbenv install
verwendet wird. Sie sollten den Speicherort des Quellcodes mit der Umgebungsvariablen RUBY_BUILD_BUILD_PATH
angeben, wenn Sie --keep
mit ruby-build
verwenden.
Lösungen für häufige Probleme finden Sie im Ruby-Build-Wiki.
Wenn Sie im Wiki keine Antwort finden, öffnen Sie ein Problem im Issue-Tracker. Stellen Sie sicher, dass Sie das vollständige Build-Protokoll für Build-Fehler beifügen.