2013-07-09 12 views
28

Ich versuche Jekyll zu installieren. Nach gem install jekyll läuft ich diesen Fehler:Warum erhalte ich bei der Installation eines Edelsteins den Fehler "Erlaubnis verweigert"?

ERROR: While executing gem ... (Errno::EACCES) 
    Permission denied - /usr/local/lib/ruby/gems/2.0.0/gems/jekyll-1.0.3/CONTRIBUTING.md 

kann ich sehen, dass Jekyll installiert ist, wenn ich laufen gem list so bin ich gründlich verwirrt:

*** 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) 

ich viele Probleme gehabt habe mit meinem Benutzerpfade in der Vergangenheit, also frage ich mich, ob dieser Fehler etwas damit zu tun haben könnte? Hier

ist die Ausgabe von 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/ 

Hier ist meine ".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 

Könnte jemand bitte helfen Sie mir bekommen Jekyll installiert ist, oder zumindest erhalten Vergangenheit dieser Berechtigungsfehler ?

Antwort

43

Ihr Ruby in /usr/local/Cellar/ruby/... installiert.

Dies ist ein eingeschränkter Pfad, in den nur geschrieben werden kann, wenn Sie erweiterte Berechtigungen verwenden, indem Sie entweder als root ausführen oder sudo verwenden. Ich rate Ihnen nicht, Dinge als root auszuführen, da Sie nicht verstehen, wie Pfade und Berechtigungen funktionieren. Sie können verwenden sudo gem install jekyll, die Ihre Berechtigungen vorübergehend erhöhen wird, Ihren Befehl, um die Rechte benötigt geben Sie in das Verzeichnis zu schreiben.

Ich würde jedoch empfehlen, dass Sie ernsthaft darüber nachdenken, dies nicht zu tun, und stattdessen Ihre RVM verwenden, um Ruby in Ihrem eigenen Home-Verzeichnis zu installieren, wo Sie automatisch Rubies und Edelsteine ​​ohne Berechtigungsprobleme installieren können. Siehe die Anweisungen für die Installation in einem lokalen RVM-Sandbox in „Single-User installations“.

Weil Sie RVM haben in Ihrem ~/.bash_profile, aber es zeigt sich nicht in Ihrer Gem Umwelt Listing, ich vermute, dass Sie entweder die Anweisungen nicht befolgt für RVM Installation richtig, oder Sie haben nicht verwendet, die wichtige Befehl:

rvm use 2.0.0 --default 

eine Standard-Ruby zu konfigurieren.

Für die meisten Anwender die „Single-User-Installation“ ist der Weg zu gehen. Wenn Sie sudo mit dieser Konfiguration verwenden müssen, haben Sie etwas falsch gemacht.

+0

Vielen Dank für das so klar zu machen. Ich bin zurück gegangen und habe RVM installiert. Alles funktioniert perfekt. – okTalk

+0

Ich fand Ihre Erklärung und vor allem Ihren abschließenden Absatz sehr hilfreich. –

28

Ich wollte die Schritte teilen, die ich, dass in der Hoffnung, dass sie mich dieses Problem behoben gefolgt, dass es jemand anderes (für mich, falls etwas und auch als Erinnerung daran, wie dies wieder geschieht) helfen kann

Die Themen ich hatte mit worden ist (die die gleiche wie OPs waren) haben mit der Verwendung von homebrew zu installieren Ruby zu tun.

Um dies zu beheben, zuerst I aktualisiert Homebrew:

brew update && brew upgrade 
brew doctor 

(Wenn Gebräu Arzt mit allen möglichen Ausgaben aufkommt, sie zuerst beheben.) Dann deinstallierte ich Rubin

brew uninstall ruby 

Wenn rbenv NICHT installiert ist an dieser Stelle, dann

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 

Dann habe ich rbenv Rubin zu installieren. Suchen Sie zunächst die gewünschte Version:

rbenv install -l 

diese Version installieren (zB 2.2.2)

rbenv install 2.2.2 

dann die globale Version auf die gewünschte Ruby-Version gesetzt:

rbenv global 2.2.2 

Auf diese zeigen Sie die gewünschte Version für die folgenden Befehle festgelegt:

rbenv versions 

und

ruby --version 

Jetzt sollten Sie in der Lage sein Bündler zu installieren:

gem install bundler 

Und einmal in der gewünschten Projektordner können Sie alle erforderlichen Edelsteine ​​installieren:

bundle 
bundle install 
+0

So, jetzt haben wir eine RVM und eine rbenv Antwort. Jetzt brauchen wir nur noch einen mit [chruby] (https://github.com/postmodern/chruby/blob/master/README.md), den viele Leute [wechseln] (https://jesse.codes/blog/rbenv) -zu-chruby /) zu. Für weitere Informationen gibt es eine [Ruby Rogues Episode] (http://devchat.tv/ruby-rogues/169-rr-version-manager-mit-michal-papis-mislav-maronic-and-postmodern-mod-iii) Ruby Versionsmanager vergleichen. –

+0

Gute Arbeit und danke. Rbenv Repo-Link, wenn jemand es braucht https://github.com/stephenson/rbenv – jasonleonhard

+0

Was ist der Grund für die Einstellung "Echo" export RBENV_ROOT =/usr/local/var/rbenv '>> ~ /. Bash_profile "statt nur Verwenden Sie Standard '~/.rbenv'? – tir38

3

Nach dem Festlegen des Gems-Verzeichnisses in das Benutzerverzeichnis, in dem gem install mit export GEM_HOME=/home/<user>/gems ausgeführt wird, wurde das Problem behoben.

0

Installieren rbenv oder rvm als Ruby-Version Manager (ich ziehe rbenv) über Homebrew (dh. brew update & brew install rbenv), aber dann zum Beispiel in rbenv Fall stellen Sie sicher, rbenv zu $ ​​PATH hinzufügen, wie here und here angewiesen.

Für eine tiefere Erklärung, wie rbenv funktioniert, empfehle ich this.

3

hatte ich das gleiche Problem rvm auf Ubuntu, indem durch Setzen des source auf meinem Terminal als kurzfristige Lösung fixiert wurde:

source $HOME/.rvm/scripts/rvm

oder

source /home/$USER/.rvm/scripts/rvm

und konfigurieren Sie eine Standard-Ruby-Version, 2.3.3 in meinem Fall.

rvm use 2.3.3 --default


Und ein langfristige Lösung ist Ihr source auf Ihre .bashrc Datei zu permanent hinzuzufügen Ubuntu in .rvm für alle Ruby-Dateien suchen.

Anzahl:

source .rvm/scripts/rvm

in

$HOME/.bashrc Datei.

Verwandte Themen