Je tente d'installer Jekyll. Après avoir exécuté gem install jekyll
, J'obtiens cette erreur:
ERROR: While executing gem ... (Errno::EACCES)
Permission denied - /usr/local/lib/Ruby/gems/2.0.0/gems/jekyll-1.0.3/CONTRIBUTING.md
Je peux voir que Jekyll est installé lorsque je lance gem list
, Alors je suis complètement confus:
*** LOCAL GEMS ***
bigdecimal (1.2.0)
classifier (1.3.3)
colorator (0.1)
commander (4.1.3)
directory_watcher (1.4.1)
fast-stemmer (1.0.2)
highline (1.6.19)
io-console (0.4.2)
jekyll (1.0.3)
json (1.7.7)
kramdown (1.0.2)
liquid (2.5.0)
maruku (0.6.1)
minitest (4.3.2)
posix-spawn (0.3.6)
psych (2.0.0)
pygments.rb (0.5.1)
rake (0.9.6)
rdoc (4.0.0)
rubygems-update (2.0.3)
safe_yaml (0.7.1)
syntax (1.0.0)
test-unit (2.0.0.0)
yajl-Ruby (1.1.0)
J'ai eu beaucoup de problèmes avec mes chemins d'utilisateur dans le passé, alors je me demande si cette erreur pourrait avoir quelque chose à voir avec ça?
Voici la sortie de gem env
:
RubyGems Environment:
- RUBYGEMS VERSION: 2.0.3
- Ruby VERSION: 2.0.0 (2013-02-24 patchlevel 0) [x86_64-darwin12.3.0]
- INSTALLATION DIRECTORY: /usr/local/Cellar/Ruby/2.0.0-p0/lib/Ruby/gems/2.0.0
- Ruby EXECUTABLE: /usr/local/Cellar/Ruby/2.0.0-p0/bin/Ruby
- EXECUTABLE DIRECTORY: /usr/local/Cellar/Ruby/2.0.0-p0/bin
- RUBYGEMS PLATFORMS:
- Ruby
- x86_64-darwin-12
- GEM PATHS:
- /usr/local/Cellar/Ruby/2.0.0-p0/lib/Ruby/gems/2.0.0
- /Users/me/.gem/Ruby/2.0.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
Voici mon ".bash_profile":
export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a Shell session *as a function*
PATH=$PATH:above/path/to/gems
source ~/.rvm/scripts/rvm
Est-ce que quelqu'un pourrait m'aider à faire installer Jekyll ou au moins à surmonter cette erreur d'autorisations?
Votre Ruby est installé dans /usr/local/Cellar/Ruby/...
.
Ce chemin est restreint et ne peut être écrit que lorsque vous utilisez des privilèges élevés, soit en vous exécutant en tant que root, soit en utilisant Sudo
. Je ne vous recommanderai pas de lancer les choses en tant que root car vous ne comprenez pas comment fonctionnent les chemins d'accès et les autorisations. Vous pouvez utiliser Sudo gem install jekyll
, qui élèvera temporairement vos autorisations, donnant à votre commande les droits nécessaires pour écrire dans ce répertoire.
Cependant, je vous recommanderais de réfléchir sérieusement à NE PAS faire cela et d'utiliser plutôt votre RVM pour installer Ruby dans votre propre répertoire personnel, où vous pourrez automatiquement installer Rubies et gems. Voir les instructions pour l’installation dans un sandbox RVM local sous " installations mono-utilisateur ".
Parce que vous avez RVM dans votre ~/.bash_profile
, mais cela n'apparaît pas dans votre liste d'environnements Gem, je suppose que vous n'avez pas suivi les instructions pour installer RVM correctement ou que vous n'avez pas utilisé la commande essentielle:
rvm use 2.0.0 --default
configurer un Ruby par défaut.
Pour la plupart des utilisateurs, "l'installation mono-utilisateur" est la voie à suivre. Si vous devez utiliser Sudo
avec cette configuration, vous avez commis une erreur.
Je voulais partager les étapes que j'ai suivies qui ont résolu ce problème pour moi dans l'espoir que cela puisse aider quelqu'un d'autre (et aussi comme rappel pour moi au cas où une telle situation se reproduirait)
Les problèmes que j'avais (qui étaient les mêmes que ceux de OP) peuvent être liés à l'utilisation de homebrew pour installer Ruby.
Pour résoudre ce problème, j'ai d'abord mis à jour homebrew:
brew update && brew upgrade
brew doctor
(Si le médecin brasseur pose des problèmes, corrigez-les d'abord.) Ensuite, j'ai désinstallé Ruby.
brew uninstall Ruby
Si rbenv est [~ # ~] et non [~ # ~] installé à ce stade, alors
brew install rbenv
brew install Ruby-build
echo 'export RBENV_ROOT=/usr/local/var/rbenv' >> ~/.bash_profile
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
Ensuite, j'ai utilisé rbenv pour installer Ruby. Tout d'abord, trouvez la version souhaitée:
rbenv install -l
Installer cette version (par exemple 2.2.2)
rbenv install 2.2.2
Puis définissez la version globale sur la version souhaitée Ruby:
rbenv global 2.2.2
À ce stade, vous devriez voir la version souhaitée définie pour les commandes suivantes:
rbenv versions
et
Ruby --version
Vous devriez maintenant pouvoir installer bundler:
gem install bundler
Et une fois dans le dossier du projet souhaité, vous pouvez installer tous les gems requis:
bundle
bundle install
Cela ressemble à un problème d'autorisations. C'est ce qui a fonctionné pour moi
Sudo chown -R $(whoami) /Library/Ruby/Gems/*
ou dans votre cas
Sudo chown -R $(whoami) /usr/local/lib/Ruby/gems/2.0.0/gems/
Après avoir défini le répertoire gems sur le répertoire utilisateur qui exécute le gem install
en utilisant export GEM_HOME=/home/<user>/gems
le problème a été résolu.
J'ai eu le même problème en utilisant rvm
sur Ubuntu
, a été corrigé en réglant le source
sur mon terminal comme solution à court terme:
source $HOME/.rvm/scripts/rvm
ou
source /home/$USER/.rvm/scripts/rvm
et configurer une valeur par défaut Ruby Version, 2.3.3
dans mon cas.
rvm use 2.3.3 --default
Et une solution à long terme consiste à ajouter votre source
à votre .bashrc
fichier dans définitivement faire en sorte que Ubuntu regarde dans .rvm
pour tous les fichiers Ruby.
Ajouter:
source .rvm/scripts/rvm
dans
$HOME/.bashrc
fichier.
Installez rbenv ou rvm en tant que Ruby (je préfère rbenv) via homebrew (c.-à-d. brew update & brew install rbenv
) mais alors par exemple dans le cas de rbenv, assurez-vous d’ajouter rbenv à votre $ PATH comme indiqué ici et ici .
Pour une explication plus détaillée sur le fonctionnement de rbenv, je recommande this .