2013-07-09 56 views
28

Tôi đang cố gắng cài đặt Jekyll. Sau khi chạy gem install jekyll tôi nhận được lỗi này:Tại sao tôi nhận được lỗi "cho phép bị từ chối" trong khi cài đặt một viên ngọc?

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

Tôi có thể thấy rằng Jekyll được cài đặt khi tôi chạy gem list vì vậy tôi hoàn toàn nhầm lẫn:

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

Tôi đã có rất nhiều vấn đề với tôi đường dẫn người dùng trong quá khứ, vì vậy tôi tự hỏi nếu lỗi này có thể có một cái gì đó để làm với điều đó?

Dưới đây là sản phẩm của 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/ 

Sau đây là tôi ".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 

thể ai đó hãy giúp tôi có được Jekyll cài đặt, hoặc ít nhất là vượt qua lỗi này cho phép ?

Trả lời

43

Ruby của bạn được cài đặt trong /usr/local/Cellar/ruby/....

Đó là đường dẫn bị hạn chế và chỉ có thể được ghi khi bạn sử dụng đặc quyền nâng cao, bằng cách chạy dưới dạng root hoặc bằng cách sử dụng sudo. Tôi sẽ không khuyên bạn nên chạy những thứ dưới dạng root vì bạn không hiểu cách thức hoạt động của đường dẫn và quyền. Bạn có thể sử dụng sudo gem install jekyll, điều này sẽ tạm thời nâng cao quyền của bạn, cho lệnh của bạn quyền cần thiết để ghi vào thư mục đó. Tuy nhiên, tôi khuyên bạn nên suy nghĩ nghiêm túc về việc KHÔNG làm điều đó, và thay vào đó sử dụng RVM để cài đặt Ruby vào thư mục chính của bạn, nơi bạn sẽ tự động cài đặt Hồng ngọc và đá quý mà không có sự cho phép. Xem hướng dẫn để cài đặt vào hộp cát RVM cục bộ trong "Single-User installations".

Vì bạn có RVM trong số ~/.bash_profile, nhưng nó không hiển thị trong danh sách môi trường Gem của bạn, tôi nghi ngờ bạn chưa tuân thủ các hướng dẫn cài đặt RVM chính xác hoặc bạn chưa sử dụng tất cả lệnh:

rvm use 2.0.0 --default 

để định cấu hình Ruby mặc định.

Đối với hầu hết người dùng, "Cài đặt một người dùng" là cách để thực hiện. Nếu bạn phải sử dụng sudo với cấu hình đó, bạn đã làm sai điều gì đó.

+0

Cảm ơn bạn đã làm rõ điều đó. Tôi đã quay trở lại và cài đặt RVM. Mọi thứ đang hoạt động hoàn hảo. – okTalk

+0

Tôi đã tìm thấy giải thích của bạn và đặc biệt là đoạn kết thúc của bạn hữu ích nhất. –

28

tôi muốn chia sẻ các bước mà tôi sau đó cố định vấn đề này cho tôi với hy vọng rằng nó có thể giúp người khác (và cũng là một lời nhắc nhở đối với tôi trong trường hợp như thế này xảy ra một lần nữa)

Những vấn đề Tôi đã có (được giống như OP's) có thể phải làm với việc sử dụng homebrew để cài đặt Ruby.

Để sửa lỗi này, homebrew đầu tiên tôi Cập nhật:

brew update && brew upgrade 
brew doctor 

(Nếu bác sĩ brew đi kèm với bất kỳ vấn đề, khắc phục trước tiên.) Sau đó, tôi gỡ bỏ cài đặt ruby ​​

brew uninstall ruby 

Nếu rbenv là KHÔNG lắp đặt tại thời điểm này, sau đó

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 

Sau đó, tôi sử dụng rbenv để cài đặt ruby. Trước tiên, tìm phiên bản mong muốn:

rbenv install -l 

Cài đặt phiên bản (ví dụ 2.2.2)

rbenv install 2.2.2 

Sau đó thiết lập các phiên bản toàn cầu lên phiên bản ruby ​​mong muốn:

rbenv global 2.2.2 

Tại đây bạn sẽ thấy phiên bản mong muốn được đặt cho các lệnh sau:

rbenv versions 

ruby --version 

Bây giờ bạn sẽ có thể cài đặt bundler:

gem install bundler 

Và một lần trong thư mục dự án mong muốn, bạn có thể cài đặt tất cả các viên ngọc cần:

bundle 
bundle install 
+0

Vì vậy, bây giờ chúng tôi có một RVM và một câu trả lời rbenv. Bây giờ chúng ta chỉ cần một cái nữa với [chruby] (https://github.com/postmodern/chruby/blob/master/README.md) mà nhiều người đang [chuyển] (https://jesse.codes/blog/rbenv -to-chruby /) đến. Để biết thêm thông tin, có [tập phim Ruby Rogues] (http://devchat.tv/ruby-rogues/169-rr-version-managers-with-michal-papis-mislav-maronic-and-postmodern-mod-iii) so sánh các trình quản lý phiên bản ruby. –

+0

Công việc tốt và cảm ơn bạn. rbenv repo liên kết nếu có ai cần nó https://github.com/sstephenson/rbenv – jasonleonhard

+0

Lý do để thiết lập xuất khẩu 'echo' RBENV_ROOT =/usr/local/var/rbenv '>> ~/.bash_profile' thay vì chỉ sử dụng '~/.rbenv' mặc định? – tir38

3

Sau khi đặt thư mục đá quý vào thư mục người dùng chạy gem install sử dụng export GEM_HOME=/home/<user>/gems sự cố đã được giải quyết.

0

Install rbenv hoặc RVM là người quản lý phiên bản Ruby của bạn (tôi thích rbenv) thông qua homebrew (tức. brew update & brew install rbenv) nhưng sau đó ví dụ như trong trường hợp của rbenv hãy chắc chắn để thêm rbenv đến $ PATH của bạn theo hướng dẫn herehere.

Để có giải thích sâu hơn về cách hoạt động của rbenv, tôi khuyên bạn nên sử dụng this.

3

tôi đã cùng một vấn đề sử dụng rvm trên Ubuntu, đã được cố định bằng cách thiết lập source trên thiết bị đầu cuối của tôi như là một giải pháp ngắn hạn:

source $HOME/.rvm/scripts/rvm

hoặc

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

và định cấu hình Phiên bản Ruby mặc định, 2.3.3 trong trường hợp của tôi.

rvm use 2.3.3 --default


Và một dài hạn Giải pháp là thêm bạn source đến file .bashrc của bạn để vĩnh viễn làm cho Ubuntu tìm trong .rvm cho tất cả các file Ruby.

Add:

source .rvm/scripts/rvm

vào

$HOME/.bashrc tập tin.

Các vấn đề liên quan