Bạn không có quyền ghi cho thư mục /Library/Ruby/Gems/2.3.0. (người dùng mac)


132

dưới đây là những gì tôi cần làm.

Để chạy các thông số kỹ thuật, bạn cần cài đặt RSpec. Đầu tiên, chạy gem install bundlertrong thư mục gốc của dự án của bạn. Sau đó, chạy bundle install. Để chạy một file spec duy nhất, chạy một lệnh như thế này: bundle exec rspec spec/00_hello_spec.rb. Để chạy tất cả các thông số kỹ thuật cùng một lúc, hãy chạy bundle exec rspec.

Vì vậy, tôi đã nhập gem install bundlervào Terminal và gặp lỗi:

Bạn không có quyền ghi cho thư mục /Library/Ruby/Gems/2.3.0.

và điều này nằm trong tệp dự án trong nguyên tử

source "https://rubygems.org"
gem "rspec", "~> 3.2.0"

Câu hỏi của tôi là:

Có vẻ như thiết bị đầu cuối đang cho tôi phản hồi vì tôi không được phép thay đổi bất cứ thứ gì trên ruby, và tôi cần bundle installbên trong nguyên tử? Bất cứ ai có thể cho tôi biết làm thế nào để sử dụng nguyên tử hoặc chạy bất cứ điều gì trong nguyên tử?

Câu trả lời:


243

Cập nhật: Kể từ đó, tôi đã viết một lời giải thích rất chi tiết về các cách khác nhau mà bạn có thể cài đặt Ruby gems trên máy Mac. Khuyến nghị ban đầu của tôi về việc sử dụng một tập lệnh vẫn còn, nhưng bài viết của tôi sẽ đi vào chi tiết hơn: https://www.moncefbelyamani.com/the-definitive-guide-to-installing-ruby-gems-on-a-mac/

Bạn đúng rằng macOS sẽ không cho phép bạn thay đổi bất cứ điều gì với phiên bản Ruby được cài đặt với máy Mac của bạn. Tuy nhiên, bạn có thể cài đặt gem như bundlersử dụng phiên bản Ruby riêng biệt mà không ảnh hưởng đến phiên bản do Apple cung cấp.

Việc sử dụng sudođể cài đặt gem hoặc thay đổi quyền của các tệp hệ thống và thư mục không được khuyến khích, ngay cả khi bạn biết mình đang làm gì. Chúng tôi có thể ngừng cung cấp lời khuyên tồi tệ này được không?

Giải pháp bao gồm hai bước chính:

  1. Cài đặt một phiên bản Ruby riêng biệt không ảnh hưởng đến phiên bản đi kèm với máy Mac của bạn.
  2. Cập nhật của bạn PATHđể vị trí của phiên bản Ruby mới đầu tiên nằm trong PATH. Danh sách các thư mục và thứ tự máy tính tra cứu chúng để tìm các chương trình thực thi được gọi là PATH. Nếu bạn gõ echo $PATHvào Terminal, bạn sẽ thấy danh sách các thư mục, được phân tách bằng dấu hai chấm.

Có một số cách để cài đặt Ruby trên máy Mac. Cách tốt nhất mà tôi đề xuất, và tôi muốn phổ biến hơn trong các hướng dẫn cài đặt khác nhau ngoài kia, là sử dụng một tập lệnh tự động sẽ thiết lập môi trường Ruby thích hợp cho bạn. Điều này làm giảm đáng kể khả năng gặp lỗi do hướng dẫn không đầy đủ khiến người dùng phải thực hiện một loạt công việc theo cách thủ công và để họ tìm ra tất cả các bước cần thiết.

Con đường khác bạn có thể thực hiện là dành thêm thời gian để làm mọi thứ theo cách thủ công và hy vọng điều tốt nhất. Trước tiên, bạn sẽ muốn cài đặt Homebrew , giúp dễ dàng cài đặt các công cụ và ứng dụng macOS khác.

Sau đó, 4 cách phổ biến nhất để cài đặt một phiên bản Ruby riêng biệt là:

Nếu bạn không cần nhiều phiên bản Ruby cùng lúc (ngoài phiên bản đi kèm với macOS)

  • Homebrew - sau khi được cài đặt, hãy cài đặt ruby ​​bằng brew install ruby, sau đó cập nhật PATHbằng cách chạy echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile, tiếp theo làsource ~/.bash_profile

Nếu bạn muốn sự linh hoạt trong việc chuyển đổi dễ dàng giữa nhiều phiên bản Ruby

  • chrubyruby-install - các đề xuất cá nhân của tôi và những đề xuất được cài đặt tự động bởi tập lệnh nói trên. Chúng có thể được cài đặt bằng Homebrew.

  • rbenv - có thể được cài đặt bằng Homebrew

  • RVM

Để kiểm tra xem bạn hiện đang sử dụng phiên bản Ruby không phải hệ thống, bạn có thể chạy các lệnh sau:

which ruby

Nó phải là một cái gì đó khác hơn /usr/bin/ruby

ruby -v

Nó phải là một cái gì đó khác với 2.3.7. Cho đến hôm nay, 2.6.1 là phiên bản Ruby mới nhất.

Khi bạn đã cài đặt phiên bản Ruby mới này, bây giờ bạn có thể cài đặt Bundler:

gem install bundler

3
Nếu bạn giống tôi và bạn sử dụng zsh (hoặc một trình bao khác không phải bash), thì có một bước bổ sung! Sau khi cài đặt rbenvbạn phải làm gì echo 'eval "$(rbenv init -)"' >> ~/.bash_profile. Nguồn
Marlo

2
Nếu bạn gặp lỗi quyền trên thư mục / usr / local, hãy chạy sudo chown -R $(whoami) $(brew --prefix)/*. Xem chủ đề này để biết thêm thông tin
Anas Tiour

5
Điều này rất hữu ích ... Nó nên được đặt là câu trả lời chính xác.
Spencer Müller Diniz

4
Vì MacOS khuyến khích mọi người chuyển sang zsh, bạn cũng nên áp dụng thay đổi cho ~ / .bash_profile thành ~ / .zshrc.
Adam_G

1
@stevec Có lẽ bạn đã bỏ lỡ một số bước trong hướng dẫn cài đặt rbenv? Hoặc có thể bạn không thoát và khởi động lại thiết bị đầu cuối của mình? Tôi sẽ làm theo hướng dẫn rbenv tại đây: github.com/rbenv/rbenv#installation . Nếu bạn muốn sử dụng chrubythay thế, tôi thực sự khuyên bạn nên sử dụng tập lệnh thiết lập mọi thứ cho bạn, như tập lệnh này: github.com/monfresh/install-ruby-on-macos . Trước tiên, bạn cần gỡ cài đặt rbenv trước khi chạy tập lệnh đó: github.com/rbenv/rbenv#uninstalling-rbenv
monfresh

69

Nếu bạn không muốn chạy sudothì hãy cài đặt ruby ​​bằng homebrew

brew install ruby
export GEM_HOME="$HOME/.gem"
gem install rails

Bạn có thể muốn thêm export GEM_HOME="$HOME/.gem"vào của bạn ~/.bash_profilehoặc .zshrcnếu bạn đang sử dụng zsh


4
giúp đỡ didnt trên Catalina OS 😐
Efrat Levitan

Đã cập nhật câu trả lời của tôi
STIKO

Rails is not currently installed on this system. To get the latest version, simply type: $ sudo gem install rails You can then rerun your "rails" command
Efrat Levitan

Có vẻ như bạn đang thử chạy một railslệnh. Hai lệnh cuối cùng tôi không chạy railslệnh. Cố gắng mở một thiết bị đầu cuối mới bên ngoài dự án của bạn, sau đó sao chép lần lượt hai dòng cuối cùng của câu trả lời của tôi.
STIKO

đừng quên source ~/. zshrc(hoặc ~/.bash_profile)
gordinmitya

66

Làm việc cho tôi bằng cách sử dụng tham số --user-installchạy lệnh sau:

gem install name_of_gem --user-install

Sau đó, anh ấy bắt đầu tìm nạp và cài đặt nó.

Biên tập

Có một viên ngọc tôi vẫn không thể cài đặt (nó yêu cầu tiêu đề Ruby.h của bộ phát triển Ruby hoặc thứ gì đó), sau đó tôi đã thử các trình quản lý phiên bản khác nhau, nhưng bằng cách nào đó vẫn không thực sự hoạt động như đã được nêu trong tài liệu. để chỉ cần cài đặt và chuyển đổi (nó chỉ không chuyển đổi các phiên bản). Sau đó, tôi đã gỡ bỏ tất cả các trình quản lý phiên bản đã cài đặt và sau đó cài đặt brew install rubyphiên bản mới nhất và cũng đã đặt biến PATH. (Nó sẽ được đề cập sau khi cài đặt ruby ​​từ bia), đã hoạt động.


6

Thông thường, bạn nên sử dụng trình quản lý phiên bản như rbenvhoặc rvm. Nếu không, các Đá quý đã cài đặt sẽ có sẵn như rootcho những người dùng khác.

Nếu bạn biết mình đang làm gì, bạn có thể sử dụng sudo gem install.


6

Tôi đã gặp phải vấn đề tương tự sau khi cài đặt macOS Catalina. Tôi đã thử lệnh dưới đây và nó hoạt động.

sudo gem update

3

Chạy cái này

$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.zshrc:

eval "$(rbenv init -)"

Làm theo hướng dẫn, (trong trường hợp của tôi, hãy thêm vào ~ / .zshrc );)


Cũng quan trọng: Các thay đổi chỉ có hiệu lực nếu bạn khởi động lại bảng điều khiển của mình. Hai lựa chọn

  • Đi vào source <modified file>
  • đóng và mở lại

Tôi đã nâng cấp lên Catalina (chuyển từ bash sang zsh) và tôi quên sao chép mọi thứ từ .bash_profiletrên sang.zshrc
wetjosh

2

Nếu bạn đã cài đặt ruby ​​riêng và cài đặt ruby ​​bằng rbenv / rvm, thì budler có thể trỏ đến các phiên bản khác nhau.

thử

gem env home

ruby -v

cả hai phải trỏ đến cùng một phiên bản. hãy kiểm tra xem bạn đã cài đặt ruby ​​bằng rbenv / rvm, Nếu vậy, hãy xóa phiên bản ruby ​​mà bạn đã cài đặt riêng.

Để đá quý hoạt động, bạn phải gọi rbenv,

rbenv shell <ruby version> 

rbenv global <ruby version>

Tôi không chắc RVM hoạt động như thế nào. Hãy cho tôi biết nếu các công trình này.


đã thiếu thiết lập shell và global. Tại sao điều đó không có trong hướng dẫn rbenv 🤔
feitla

Không chắc, tại sao điều này lại bị bỏ lỡ, tôi đã có thể tìm ra sau khi thử.
Bharathan Kumaran

0

Giải pháp cho Mac

  1. Cài đặt / cập nhật RVM với phiên bản ruby ​​cuối cùng

    \curl -sSL https://get.rvm.io | bash -s stable

  2. Cài đặt gói

    gem install bundler


sau khi hai lệnh này (sudo) gem install ....bắt đầu hoạt động


cũng có thể cần chỉ địnhrvm use <version>
ObjectNameDisplay

-1

Điều này làm việc cho tôi trên Mac

sudo chown -R $ (whoami) $ (brew --prefix) / *


-1

Tôi đang sử dụng Mojave với rbenv, giải pháp này phù hợp với tôi:

$ vi ~/.bash_profile

Thêm dòng này vào tệp:

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

-2

Các vấn đề tôi gặp phải: - Bạn không có quyền ghi cho thư mục /Library/Ruby/Gems/2.6.0.

Giải pháp phù hợp với tôi: sudo gem install rails -v 6.0.0



-3

cho người dùng mac sử dụng gem sudo ex sudo cài đặt cocoapods


Mặc dù lệnh đó có thể giải quyết câu hỏi, bao gồm giải thích về cách thức và lý do tại sao điều này giải quyết vấn đề sẽ thực sự giúp cải thiện chất lượng bài đăng của bạn và có thể dẫn đến nhiều phiếu bầu hơn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho độc giả trong tương lai, không chỉ người hỏi bây giờ. Vui lòng chỉnh sửa câu trả lời của bạn để thêm giải thích và đưa ra dấu hiệu về những giới hạn và giả định nào được áp dụng.
Brian
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.