Donc, je faisais un script cgi Ruby et le texte suivant était en haut du fichier de script:
#!/usr/bin/env Ruby
require 'rubygems'
require 'action_pack'
require 'cgi'
Après quelques heures sans avoir l'erreur "/ usr/bin/env: Ruby: Aucun fichier ou répertoire de ce type" et la recherche sur Google, j'ai désinstallé mon système Ruby 1.8.7 (j'avais aussi 1.9.3 installé via rvm) en faisant Sudo apt-get purge Ruby rubygems . J'ai toujours l'erreur. Quand je tape "quel Ruby", je reçois /home/homeuser/.rvm/rubies/Ruby-1.9.3-p194/bin/Ruby
. Est-ce que quelqu'un a une idée sur la façon de résoudre ce problème?
Voici ce que echo $ PATH donne:
/home/homeuser/.rvm/gems/Ruby-1.9.3-p194@rsoc326/bin:/home/homeuser/.rvm/gems/Ruby-1.9.3-p194@global/bin:/home/homeuser/.rvm/rubies/Ruby-1.9.3-p194/bin:/home/homeuser/.rvm/bin:/var/lib/gems/1.8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/homeuser/.rvm/bin
J'ai la même configuration sur mon bureau et je n'ai pas le même problème.
/usr/bin/env Ruby
devrait pointer vers le RVM Ruby.
Mais permet de vérifier votre configuration
Vérifiez le contenu de votre ~/.profile
, il devrait contenir quelque chose comme ces 2 lignes:
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # This loads RVM
Deuxièmement, vérifiez votre version installée de Ruby:
rvm list
cela devrait produire quelque chose comme ce qui suit:
rvm rubies
=* Ruby-1.9.3-p286 [ x86_64 ]
# => - current
# =* - current && default
# * - default
sinon, lancez rvm use 1.9.3 --default
Lorsque vous essayez d'exécuter votre script en tant que root, veillez à utiliser rvmsudo ./yourscript.rb
au lieu de Sudo ./yourscript.rb
, afin de vous assurer qu'il définit le bon $PATH
.
Faites-moi savoir le résultat des trois étapes ci-dessus.
J'ai ajouté #!/home/homeuser/.rvm/bin/Ruby
au lieu de #!/usr/bin/env Ruby
. Donc, je suppose que cela signifie que /usr/bin/env
pointe vers le système Ruby, et non vers aucun des rubis de la RVM.
Problème résolu, même s'il serait agréable de pouvoir utiliser #!/usr/bin/env Ruby
afin de pouvoir déplacer mon script Ruby de bureau à ordinateur portable sans avoir à changer de #!/home/homeuser/.rvm/bin/Ruby
(chemin légèrement différent sur mon bureau à cause d'un nom d'utilisateur différent). Peut-être un lien symbolique?