Impossible d'exécuter une commande avec sudo, même avec le chemin complet, j'ai une erreur

0

La commande starlingest située à /home/keating/.rvm/gems/ruby-1.9.2-p290/bin/starling.

Seulement utiliser rvmsudo starlingfonctionnera correctement. C’est le résultat de mon tentative d’invocation de cette méthode de différentes manières:

$ starling
Permission denied
$ sudo starling
sudo: starling: command not found
$ sudo /home/keating/.rvm/gems/ruby-1.9.2-p290/bin/starling
/home/keating/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find starling (>= 0) amongst [minitest-1.6.0, rake-0.8.7, rdoc-2.5.8] (Gem::LoadError)
from /home/keating/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /home/keating/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems.rb:1229:in `gem'
from /home/keating/.rvm/gems/ruby-1.9.2-p290/bin/starling:18:in `<main>'

Je souhaite vraiment exécuter la commande avec sudo, car l'erreur ci-dessus est identique à l'exécution rvmsudo service starling start(j'avais défini starling comme service du système d'exploitation).

Keating Wang
la source
1
Peut-être dupliqué sur Stack Overflow: comment exécuter ou installer starling sous RVM?
Bobby
1
La question n'est pas exactement une copie, mais la solution est. Le problème est que par défaut "sudo" n'appellera pas le programme avec exactement le même environnement que vous avez eu en tant qu'utilisateur; rvmsudo conserve les éléments pertinents, mais la servicecommande ne le transmet pas à upstart (il indique simplement à upstart de faire quelque chose, donc l'environnement de upstart est pertinent, pas le vôtre). Votre solution consiste à fournir les dépendances dans l'environnement système ou racine par défaut.
Gabe

Réponses:

1

Contrairement à la croyance populaire, l'exécution sudone s'exécute pas uniquement avec des privilèges élevés, elle s'exécute également sur l'utilisateur root. Votre problème est qu'il starlingest installé localement sur votre profil et rootne sait pas qu'il existe. Pour résoudre ce problème, vous devez ajouter starlingà votre PATH.

Dans votre cas, essayez ceci:

  1. sudo su -
  2. PATH=$PATH:/home/keating/.rvm/gems/ruby-1.9.2-p290/bin/
  3. export PATH
  4. starling

Si cela fonctionne, ajoutez ce dossier à votre chemin racine, puis sudo starlingdevrait fonctionner. Voici un bon article à ce sujet.

Mvndaai
la source
-1

Devenez root avec la commande ci-dessous:

sudo su -

David Tooke
la source
-5

Essaye ça.

sudo passwd root

Maintenant, vous pouvez donner un mot de passe pour l'utilisateur root. Après quoi vous pouvez courir:

su

Maintenant, vous avez des privilèges élevés. Essayez de lancer votre application maintenant ...

Fosse
la source
Pour ce que vous jugez sacré, non! Il y a une raison pour laquelle aucun mot de passe n'est défini dans Ubuntu par défaut, rendre le compte root disponible est rarement (sinon jamais) une solution.
Bobby
Tu as raison. RAREMENT. Maintenant, cela semble être le cas. Je le change à chaque fois que je suis prêt.
Pit
4
Ne sudo suréaliserait -il pas la même chose?
Dennis