Ich habe gerade versucht, ein Ruby-Skript auf einer FreeBSD-Box auszuführen, die ich eine Weile nicht benutzt hatte, und bekam die Meldung „Ruby: Befehl nicht gefunden“. Also nahm ich an, dass ich es vorher einfach nicht installiert hatte. Ich ging zu /usr/ports/lang/ruby22 und führte ein „make install clean“ aus. Das sagte mir, dass Ruby22 bereits installiert ist.
Also habe ich ein pkg version -v ausgeführt, das mir zeigte, dass es tatsächlich installiert war. Dann dachte ich, es hätte vielleicht ein Bin-Verzeichnis, das aus irgendeinem Grund aus $PATH entfernt worden war, oder so etwas in der Art, also habe ich ein make deinstall und dann ein make install ausgeführt. Es behauptete, die Installation sei einwandfrei verlaufen, aber ich erhalte immer noch den Fehler „ruby: Befehl nicht gefunden“.
Bei näherer Untersuchung stellte sich heraus, dass tatsächlich eine ausführbare Datei /usr/local/bin/ruby22 installiert wurde, und ich schätze, ich kann einfach einen symbolischen Link dazu erstellen, aber ... läuft hier etwas schief? Gibt es vielleicht einen Installationsschritt, den ich nicht ausgeführt habe, der FreeBSD wissen lässt, dass ich diese bestimmte Version von Ruby wirklich, wirklich als Standard-„Ruby“ des Computers verwenden möchte?
Falls es wichtig ist: Dies ist 10.1 RELEASE amd64 und der Ports-Baum ist vollständig auf dem neuesten Stand, ebenso wie alle installierten Pakete.
Antwort1
Laut /usr/ports/UPDATING:20150301
ist die Standardversion von Ruby derzeit 2.1. Wenn Sie stattdessen 2.2 als Standard verwenden möchten, sollten Sie den DEFAULT_VERSIONS
Knopf in aktualisieren /etc/make.conf
:
DEFAULT_VERSIONS+=ruby=2.2
Sie müssen dann Ruby 2.2 neu installieren, um sicherzustellen, dass die Binärdateien und Skripts mit den erwarteten Namen (d. h. ohne Versionssuffix) installiert werden.