web-dev-qa-db-fra.com

Comment obtenir que / usr / bin / env Ruby pointe sur le bon environnement Ruby?

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.

7
Nona

/usr/bin/env Ruby devrait pointer vers le RVM Ruby.

Mais permet de vérifier votre configuration

  1. 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
    
  2. 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

  3. 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.

5
Koen.

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?

4
Nona