vấn đề về quyền cài đặt gem


90
qichunren@zhaobak:~> gem install hpricot
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8 directory.

Người dùng đăng nhập hiện tại là qichunren và người dùng qichunre có quyền ghi với .gem dir.Tôi muốn biết tại sao gem không cài đặt tệp vào .gem dir nhà tôi trước? Tại sao gem common của tôi trước tiên muốn cài đặt tệp vào /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8

Câu trả lời:


52

Để cài đặt Ruby trên toàn hệ thống, hãy trở thành root. Ví dụ:

$ sudo gem install hpricot

Tuy nhiên, cách tiếp cận hiện đại trong nhiều trường hợp, kể cả trong quá trình phát triển, là sử dụng một công cụ cho phép bạn dễ dàng cài đặt và sử dụng Ruby như một người dùng bình thường. Điều này cho phép bạn tránh phải trở thành root. Có một vài công cụ như vậy và công cụ tôi sử dụng là RVM .

# install rvm into your ~
$ \curl -sSL https://get.rvm.io | bash -s stable

# install latest version of ruby into your ~
$ rvm install ruby

# installs a gem into your ~
$ gem install $SOME_GEM_NAME

40
Không sử dụng sudo vì bạn sẽ cài đặt chúng dưới dạng root và không có quyền truy cập vào chúng khi bạn đang sử dụng người dùng bình thường của mình. Sử dụng RVM và các bộ đá quý.
Ryan

4
ví dụrvm gem install hpricot
AJP

4
Bạn có thể muốn xóa câu trả lời này. Bạn sẽ giữ nguyên số điểm và đỡ phải đau đầu cho mọi người.
Olhovsky

172

Thử cài đặt GEM_HOMEGEM_PATHđể ~/.gem,

Đối với phiên đầu cuối hiện tại, chỉ cần nhập:

export GEM_HOME=~/.gem
export GEM_PATH=~/.gem

Nếu bạn muốn các lệnh này được đặt bất cứ khi nào bạn mở một thiết bị đầu cuối, hãy thêm các lệnh trên vào ~/.bashrctệp của bạn .

Để có giải pháp toàn diện hơn để thiết lập môi trường ruby ​​tùy chỉnh, hãy xem hướng dẫn này từ Site5KB , mô tả cách sử dụng .gemrctệp.


11
Đây là câu trả lời đúng thực tế. Đừng tiếp tục cài đặt mọi thứ nếu bạn không cần thiết.
Jesse O'Brien

Liên kết trong câu trả lời dường như đã thay đổi. Bước đầu tiên từ hướng dẫn này thực hiện điều tương tự đối với tôi mặc dù: kb.site5.com/ruby-on-rails/...
Mike S

@MikeSlutsky Cảm ơn bạn đã chỉ ra điều đó. Trong tương lai, nếu bạn tìm thấy một liên kết bị hỏng (hoặc một liên kết đã thay đổi và không còn phù hợp nữa), hãy gửi đề xuất "chỉnh sửa" nếu bạn nghĩ rằng mình có một sự thay thế phù hợp.
Mudgar

@meagar Tôi đã cập nhật liên kết do @ Mike-Slutsky cung cấp, nhưng nhận thấy rằng đó là tài liệu để .gemrccấu hình. Đối với những người mới làm quen với đá quý ruby, điều này thật khó khăn, khi tôi hiểu giải pháp của bạn là những giải pháp đơn giản hơn nhiều mà tôi đã thêm vào. Giải pháp phù hợp với tôi, nhưng là một người mới làm quen với ruby, vui lòng xác nhận rằng các thay đổi của tôi phù hợp với ý định của bạn.
David LeBauer

1
Hãy nhớ thêm GEM_PATH của bạn vào PATH toàn cầu. Đây là những gì tôi làm:PATH=$HOME/.gems/bin:$HOME/bin:$PATH GEM_HOME=$HOME/.gems GEM_PATH=$HOME/.gems:/var/lib/gems/2.1.0:/usr/lib/ruby/gems/2.1.0 export PATH GEM_HOME GEM_PATH
Spone

8

Tôi gặp lỗi này trên máy chủ được chia sẻ của mình thông qua lưu trữ 1and1. giải pháp của tôi là thêm --user-installtùy chọn, chỉ cài đặt nó cho người dùng đã đăng nhập của bạn (đó là tất cả những gì bạn cần trong môi trường máy chủ chia sẻ) ví dụ; cài đặt sass

gem install sass --user-install

Thật thú vị, tôi nhận được lỗi này mặc dù tôi đã chỉ định --user-install.
sschuberth

4

Nếu bạn đang sử dụng rbenv và điều này đang xảy ra, bạn cần thêm thông tin sau vào .bash_profile của mình:

export RBENV_ROOT="$HOME/.rbenv"

if [ -d $RBENV_ROOT ]; then
  export PATH="$RBENV_ROOT/bin:$PATH"
  eval "$(rbenv init -)"
fi

0

cài đặt lại ruby ​​giải quyết vấn đề của tôi.

brew install ruby
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.