web-dev-qa-db-fra.com

rvm / usr / bin / env: Ruby pas d'erreur de fichier de ce type

J'ai installé rvm + Ruby dans tout le système.

which Ruby
/usr/local/rvm/rubies/Ruby-2.1.1/bin/Ruby

et:

/usr/bin/env: Ruby: No such file or directory

Tout le reste fonctionne bien, mettre le chemin direct de Ruby dans mes exécutables fonctionne bien.

6
user25389

Le PATH est ce que le programme env utilise pour rechercher vos exécutables. Vous pouvez changer ceci par utilisateur (dans le $ HOME/.bashrc). Pour ce faire, lancez nano $HOME/.bashrc et allez à la dernière ligne, ajoutez une nouvelle ligne

export PATH=$PATH:/usr/local/rvm/rubies/Ruby-2.1.1/bin

Pour le changer au niveau du système, vous devez Sudo nano /etc/login.defs et changer cette ligne.

ENV_PATH        PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

à

ENV_PATH        PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/rvm/rubies/Ruby-2.1.1/bin
4
Elliott Frisch

Je me rends compte que cette question est un peu ancienne, mais j'ai passé une journée à essayer de résoudre ce problème, et j’ai trouvé ce que je pense être un type de solution solide basé sur les meilleures pratiques - utilisez les wrappers rvm.

/usr/bin/env Ruby vous donne la possibilité d’utiliser la version Ruby de votre choix afin de ne pas avoir à éditer les scripts exécutables du shell (en /bin) avec un chemin de répertoire codé en dur pour les faire fonctionner ceci comme solution suggérée ailleurs).

Comme indiqué dans les réponses ci-dessus, la clé est le paramètre $PATH dans /etc/environment, mais j’ai proposé une solution différente.

RVM nous donne un répertoire de liens symboliques de toutes les versions et alias Ruby installés à /usr/local/rvm/wrappers/.

Si vous définissez votre $PATH var pour qu'il utilise le répertoire wrapper associé à la version Ruby que vous souhaitez utiliser, par exemple.

PATH="/usr/local/rvm/wrappers/Ruby-1.9.3-p547:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

Vous aurez défini l’environnement RVM de sorte que /usr/bin/env Ruby_command fonctionne.

Au moins, cela a résolu ce problème pour moi. J'espère que cela aide quelqu'un à gagner du temps.

1
Va As

J'ai récemment fait face à ce problème et pris une approche différente, donc pensé à le partager. Cela se produit lorsque le fichier Ruby n'est pas présent dans le répertoire mentionné. Créez donc un lien symbolique vers le fichier Ruby dans le répertoire et votre erreur devrait être corrigée.

cd/usr/bin/env

ln -s /usr/local/rvm/rubies/Ruby-2.1.1/bin/Ruby

0
Nihanth Dara

J'ai eu la même erreur

#!/usr/bin/env Ruby en haut de mon script mène à

rvm /usr/bin/env: Ruby no such file error

si j'exécute le script.

Ma solution était aussi simple que difficile à trouver:

Le codage des sauts de ligne dans mon éditeur de script/code source a été défini sur "style Windows (CR + LF)".

Après avoir basculé sur "style unix (LF)" et sauvegardé à nouveau mon script, l'erreur a disparu.

Il semble que le signe de retour de chariot (CR) ait été laissé derrière le "Ruby". Il n'y a donc pas de Ruby filname.script mais de Ruby\R filename.script, ce qui entraîne l'erreur.

0
Kai