Lecteurs cibles: débutants de Ruby, Python, etc. qui ont des problèmes avec ce message d'erreur
$ fluentd
rbenv: fluentd: command not found
The `fluentd' command exists in these Ruby versions:
2.6.3
Si vous utilisez «** env» comme rbenv ou pyenv, vous pouvez recevoir un message d'erreur comme celui-ci.
Pour résoudre ce problème, vous devez comprendre comment fonctionne «** env».
** env
En premier lieu, si vous utilisez «** env», le simple fait de déplacer le répertoire comme celui-ci changera automatiquement la version de «ruby» ou «python», mais comment est-ce réalisé? Êtes-vous là?
$ 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]
En fait, le "rubis" qui court ici n'est pas le vrai "rubis"! C'est un script situé dans ~ / .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" "$@"
Il en va de même pour les commandes groupées telles que «bundler» et «gem», et les commandes ajoutées par Gem.
$ which gem
/Users/x-xxxxx/.rbenv/shims/gem
$ which bundle
/Users/x-xxxxx/.rbenv/shims/bundle
$ which fluentd
/Users/x-xxxxx/.rbenv/shims/fluentd
Et si vous configurez normalement avec rbenv init
,~ / .rbenv / shims /
sera ajouté au début de $ PATH et il sera utilisé avec la priorité la plus élevée.
Le script ~ / .rbenv / shims /
tente d'exécuter la commande du même nom dans la ** version actuellement utilisée de Ruby **.
Par conséquent, si la commande n'est pas installée sur la ** version actuellement utilisée de Ruby **, une erreur se produira;
fluentd
$ PATH
est recherché depuis le début et trouvé en premier ~ / .rbenv / shims / fluentd
est exécuté~ / .rbenv / shims / fluentd
recherche le répertoire courant pour .rbenv-version pour déterminer la version de Ruby.flunetd
dans cette version de Ruby, mais je ne trouve pas fluentd
(bien qu'il soit installé dans une autre version de Ruby)$ fluentd
rbenv: fluentd: command not found
The `fluentd' command exists in these Ruby versions:
2.6.3
Exécutez directement sans passer par ~ / .rbenv / shims / hoge
.
~/.rbenv/versions/2.6.1/bin/ruby
Ajoutez le chemin avant ~ / .rbenv / shims.
Notez que Ruby et Python ont la possibilité d'installer des commandes dans un répertoire directement sous votre home (pas dans le répertoire de l'interpréteur). C'est une bonne idée d'ajouter ce répertoire à votre $ PATH.
$ 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
En fait, vous pouvez construire Ruby avec rbenv install
sans utiliser rbenv init
.
Pour certaines personnes, cela peut suffire à construire.
L'installation et l'utilisation des commandes Ruby et Python à l'échelle mondiale sont la source de problèmes en premier lieu. Utilisez toujours via pipenv ou bundler.
Recommended Posts