2010-04-21 4 views
5

J'ai une machine qui exécute Ubuntu Hardy, qui fournit son propre paquet RubyGems. Malheureusement cette version de RubyGems (1.1.1) est trop ancienne pour faire quoi que ce soit d'utile, j'ai donc décidé de mettre à jour manuellement RubyGems à la version actuelle (1.3.6). Cette partie s'est bien déroulée, et si je fais gem -v, j'obtiens 1.3.6 ce qui est attendu. Le problème est quand j'essaie de faire: sudo gem install rack, elle renvoie cette erreur:Erreurs d'installation RubyGems à la fois en utilisant 'sudo' et en n'utilisant pas sudo

ERROR: While executing gem ... (Errno::EACCES) 
Permission denied - /home/username/.gem 

Habituellement, lorsque j'installe des pierres précieuses en tant que root, il sait l'installer dans /usr/lib/ruby/gems, alors pourquoi est-il vérifier mon répertoire du tout? Une autre bizarrerie est quand je ne gem install rack (pas en tant que root), il est dit:

ERROR: While executing gem ... (Gem::FilePermissionError) 
You don't have write permissions into the /usr/lib/ruby/gems/1.8 directory. 

qui est là où je veux aller. J'ai déjà essayé d'effacer source_caches, en essayant différentes versions de RubyGems (1.3.5), forçant l'installation dans /usr/lib avec -i en vain. Des idées sur pourquoi RubyGems est si insistante sur vérifier mon répertoire /home lors de l'installation en tant que root?

Répondre

2

Cela semble être un problème de chemin associé à l'installation de plusieurs versions.

Toute différence de sortie entre:

sudo gem env 

et

gem env 
+0

Pas de différence entre les deux, bien que dans la section GEM CHEMINS: '/ usr/lib/ruby ​​/ gemmes/1.8' et'/home/nom d'utilisateur/.gem/ruby ​​/ 1.8'. Ne devrait-il pas y avoir par défaut avec sudo? –

+0

Ils sont les mêmes sur mon système, mais seulement après que je suis passé à travers et «nettoyé» tout après avoir recompilé 1.9. Ce que je vérifié: 1. supprimé la commande gem utilisé un (avait un dans/usr/bin et/usr/local/bin 2. vérifié mon fichier ~/.gemrc et nettoyé le chemin jusqu'au point à mon petit bijou chemin dans/usr/dossier local/lib. Utilisé mon ~/.gem comme une sauvegarde 3. Assorti mon GEM_HOME et les variables d'environnement (GEM_PATH up dans .profile/.bash_profile/.bashrc de) avec le fichier .gemrc 4.Autorisations vérifiées sur les dossiers gem 5. Vous pouvez également vérifier si vous avez quelque chose dans/etc/gemrc – SundayEdition

+0

J'ai donc parcouru ces suggestions et elles semblent toutes vérifier: 1) un seul exécutable gem dans/usr/bin , 2) no .gemrc, 3) Je n'ai jamais défini ces variables dans mon .profile, 4) les dossiers gem avaient des permissions pour root, ce qui devrait être bon pour sudo, 5) non/etc/gemrc. Le seul autre problème est peut-être le fait que mon répertoire personnel vit sur AFS? –

-3

Woulda été plus facile à su (mot de passe), puis chmod 755 /usr/lib/ruby/gems/1.8

+1

Il est plus sûr d'installer les gems dans votre répertoire personnel ou dans/usr/local/.... Ne jouez pas avec les fichiers installés par le système et ne créez pas de dossier de bibliothèque accessible à tous les utilisateurs. Ça va se retourner contre. – Munhitsu

0

je me dirigeais dans le même problème sur Fedora 15, alors j'ai couru « petit bijou install 'avec l'option' --backtrace 'pour voir ce qui se passait.

Il s'est avéré qu'il échouait à /usr/lib/ruby/site_ruby/1.8/rubygems/doc_manager.rb:203 où il a essayé de chdir vers le répertoire qu'il avait précédemment stocké (le répertoire personnel de l'utilisateur j'étais en cours d'exécution sudo)

Je n'ai pas déboguer abondamment pour voir ce que la cause sous-jacente était, juste plutôt utilisé une solution rapide pour que je puisse continuer à aller de l'avant. La solution de contournement consistait simplement à cd dans le répertoire racine, par exemple cd/, avant d'exécuter la commande gem install.

Espérons que cela aide/résout votre problème.

Questions connexes