Zielgruppe: Anfänger von Ruby, Python usw., die Probleme mit dieser Fehlermeldung haben
$ fluentd
rbenv: fluentd: command not found
The `fluentd' command exists in these Ruby versions:
2.6.3
Wenn Sie "** env" wie "rbenv" oder "pyenv" verwenden, wird möglicherweise eine solche Fehlermeldung angezeigt.
Um dieses Problem zu lösen, müssen Sie verstehen, wie ** env
funktioniert.
** env
funktioniertWenn Sie ** env
verwenden, wird durch einfaches Verschieben des Verzeichnisses automatisch die Version von ruby
oder python
gewechselt. Wie wird dies jedoch realisiert? Bist du da?
$ ruby --version
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]
$ cd my-project
$ cat .ruby-version
2.4.5
$ ruby --version
ruby 2.4.5p335 (2018-10-18 revision 65137) [x86_64-darwin18]
Eigentlich ist der hier laufende Rubin nicht der echte Rubin! Es ist ein Skript in ~ / .rbenv / shims /
.
$ which ruby
/Users/x-xxxxx/.rbenv/shims/ruby
$ cat ~/.rbenv/shims/ruby
#!/usr/bin/env bash
set -e
[ -n "$RBENV_DEBUG" ] && set -x
program="${0##*/}"
if [ "$program" = "ruby" ]; then
for arg; do
case "$arg" in
-e* | -- ) break ;;
*/* )
if [ -f "$arg" ]; then
export RBENV_DIR="${arg%/*}"
break
fi
;;
esac
done
fi
export RBENV_ROOT="/Users/x-xxxxx/.rbenv"
exec "/Users/x-xxxxx/.rbenv/libexec/rbenv" exec "$program" "$@"
Gleiches gilt für gebündelte Befehle wie "Bundler" und "Gem" sowie für von Gem hinzugefügte Befehle.
$ which gem
/Users/x-xxxxx/.rbenv/shims/gem
$ which bundle
/Users/x-xxxxx/.rbenv/shims/bundle
$ which fluentd
/Users/x-xxxxx/.rbenv/shims/fluentd
Und wenn Sie normalerweise mit "rbenv init" einrichten, wird "~ / .rbenv / shims /" am Anfang von $ PATH hinzugefügt und mit der höchsten Priorität verwendet.
Das Skript ~ / .rbenv / shims /
versucht, den gleichnamigen Befehl in der derzeit verwendeten ** Version von Ruby ** auszuführen.
Wenn der Befehl nicht auf der derzeit verwendeten ** Version von Ruby ** installiert ist, tritt daher ein Fehler auf.
$ PATH
wird von Anfang an gesucht und zuerst gefunden ~ / .rbenv / shims / fluentd
wird ausgeführt~ / .rbenv / shims / fluentd
durchsucht das aktuelle Verzeichnis nach .rbenv-Version, um die Ruby-Version zu ermitteln.$ fluentd
rbenv: fluentd: command not found
The `fluentd' command exists in these Ruby versions:
2.6.3
Direkt ausführen, ohne ~ / .rbenv / shims / hoge
zu durchlaufen.
~/.rbenv/versions/2.6.1/bin/ruby
Fügen Sie den Pfad vor ~ / .rbenv / shims hinzu.
Beachten Sie, dass Ruby und Python Befehle in einem Verzeichnis direkt unter Ihrer Startseite installieren können (nicht im Interpreter-Verzeichnis). Es ist eine gute Idee, dieses Verzeichnis zu Ihrem $ PATH hinzuzufügen.
$ export PYTHONUSERBASE=~/.local
$ pip3 install --user awscli
$ ls ~/.local/bin jupyter-notebook
$ ls ~/.local/bin/
jupyter
jupyter-bundlerextension
jupyter-console
jupyter-kernel
...
# ~/.bashrc
eval "$(pyenv init -)"
export PATH=$HOME/.local/bin:$PATH
Tatsächlich können Sie Ruby mit rbenv install
erstellen, ohne rbenv init
zu verwenden.
Für einige Leute kann es genug sein, um zu bauen.
Die globale Installation und Verwendung von Ruby- und Python-Befehlen ist in erster Linie die Ursache für Probleme. Immer über Pipenv oder Bundler verwenden.
Recommended Posts