Cách cài đặt đá quý hoặc cập nhật RubyGems nếu không thành công với lỗi quyền


559

Tôi đang cố gắng cài đặt đá quý bằng cách sử dụng gem install mygemhoặc cập nhật RubyGems bằng cách sử dụng gem update --systemvà không thành công với lỗi này:

ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

Có ai có một ý tưởng làm thế nào để giải quyết điều này?


5
Đây là giải pháp của tôi: stackoverflow.com/questions/34071868/ trên
LanceP

2
lỗi của tôi xảy ra vì tôi đang làm: cập nhật đá quý cocoapods đúng: sudo gem update cocoapods
Abhishek Thapliyal

60
sudo chown -R $USER /Library/Ruby/Gems/
vaskort

2
chỉ cần sử dụng lệnh này đã có hiệu quả với tôi: sudo gem install mygem
Jayprakash Dubey 23/03/18

1
tôi đã sử dụng zsh shell và đó là vấn đề đường dẫn trong ~ / .zshrc. tôi đã sử dụng dòng này ở cuối tập tin và nó hoạt động với tôi: export PATH = "$ HOME / .rbenv / shims: $ PATH"
rosnk

Câu trả lời:


317

Bạn không có quyền ghi vào thư mục / L Library / Repub / God / 1.8.

có nghĩa là chính xác, bạn không được phép viết ở đó.

Đó là phiên bản Ruby được Apple cài đặt, để sử dụng riêng. Mặc dù bạn có thể thực hiện các sửa đổi nhỏ cho điều đó nếu bạn biết bạn đang làm gì , vì bạn không chắc chắn về vấn đề quyền, tôi nói rằng không nên tiếp tục theo dõi.

Thay vào đó, tôi thực sự khuyên bạn nên xem xét sử dụng rbenv hoặc RVM để quản lý một Ruby riêng biệt, được cài đặt vào hộp cát trong thư mục nhà của bạn, để bạn có thể sửa đổi / gập / trục chính / thay đổi mà không lo làm hỏng hệ thống Ruby.

Giữa hai người, tôi sử dụng rbenv, mặc dù tôi đã sử dụng RVM rất nhiều trong quá khứ. rbenv có cách tiếp cận "thực tế" hơn để quản lý cài đặt Ruby của bạn. RVM có rất nhiều tính năng và rất mạnh mẽ, nhưng, kết quả là xâm nhập nhiều hơn. Trong cả hai trường hợp, ĐỌC tài liệu cài đặt cho họ một vài lần trước khi bắt đầu cài đặt bất cứ điều gì bạn chọn.


176
Bạn không cần phải sử dụng một thư viện Ruby riêng biệt. Chỉ cần đặt 'sudo' trước mặt bạn như Michael đề xuất ở trên.
serraosays

37
Thay đổi quyền sở hữu cài đặt Ruby của Apple không phải là ý kiến ​​hay vì Cài đặt / nâng cấp hệ thống và Disk Utility có thể tự động hoàn nguyên / sửa chữa quyền sở hữu và quyền của thư mục. Điều đó sẽ làm người dùng thất vọng và có thể làm nản lòng HĐH và mã dự kiến ​​sẽ có quyền ghi / quyền sở hữu các thư mục đó. Apple cài đặt các ứng dụng sử dụng Ruby của nó và có thể mong đợi một phiên bản hoặc hành vi nhất định, vì vậy những ứng dụng này có thể bị hỏng. Tại sao phải bận tâm khi sử dụng RVM hoặc rbenv dễ dàng và an toàn hơn và không lo lắng về điều đó.
Tin Man

203
Đối với những người như tôi, những người không thực sự làm bất kỳ nhà phát triển ruby ​​nào và không muốn loay hoay trong nửa giờ cố gắng tìm hiểu xem tất cả những thứ tinh thể này là gì. brew install rubysẽ giải quyết các vấn đề phụ thuộc của bạn một cách sạch sẽ mà không cần cài đặt táo. Nếu bạn đã sudocập nhật về bản cài đặt ban đầu và lo lắng về những gì bạn đã làm, bạn sẽ có thể hoàn tác nó với điều này:cd /System/Library/Frameworks/Ruby.framework/Versions;sudo rm Current; sudo ln -s 1.8 Current;
Louis

21
" I did the sudo tangle and wound up modifying my pre-installed Ruby. I did your steps to try to fix the problem, but now when I do irb or ruby -v, I get command not found. What's going on and is there a fix" Và điều này chỉ tăng thêm trọng lượng cho lý do tại sao mọi người không nên sử dụng sudohoặc chown. Thở dài ....
Tin Man

55
Đã giải quyết: trên El Captain sau khi thực hiện brew install rubyđơn giản là đóng Terminal và mở lại nó.
Fmessina

421

Hãy thử thêm --user-installthay vì sử dụng sudo:

gem install mygem --user-install

4
Tôi không biết tại sao câu trả lời của bạn không được đăng trước đó. Các --user-installtùy chọn rõ ràng đã được khoảng một thời gian. Tôi chỉ muốn bạn đã viết điều này sớm hơn. =)
Michael - Clay Shirky ở đâu

7
Điều này cần phải đi đến đầu! Cài đặt bằng sudo hoặc su là một ý tưởng tồi vì bạn đang thực thi một hệ thống cấp phép trên các mô-đun và có thể các gói được cài đặt trên toàn cầu có thể va chạm với các gói được cài đặt khác hoặc các phụ thuộc của dự án khác. Sử dụng rbenv yêu cầu bạn phải cài đặt một phần mềm khác và thêm một lớp phức tạp.
Hubert Grzeskowiak

7
Điều này hoạt động, nhưng cảnh báo: 'CẢNH BÁO: Bạn không có /Users/<username>/.gem/ruby/2.0.0/bin trong PATH của bạn, các tệp thực thi đá quý sẽ không chạy.' Các liên kết sau đây cung cấp hướng dẫn hữu ích về cách cập nhật đường dẫn của bạn (mà không cần phải sử dụng vi) hathaway.cc/post/69201163472/...
Dawid

4
Điều này là đơn giản và hợp lý. Thêm đường dẫn ruby ​​nếu bạn chưa có trong bashrc if which ruby >/dev/null && which gem >/dev/null; then PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH" fi <br> Nguồn: guide.rubygems.org/faqs/#user-install
Inder Kumar Rathore

1
Điều này có thể làm hỏng hệ thống (cài đặt ruby) của Apple không?
Daniel Springer

93

Bạn thực sự nên sử dụng trình quản lý phiên bản Ruby.

Sử dụng đúng cách sẽ ngăn chặn và có thể giải quyết vấn đề cấp phép của bạn khi thực hiện gem updatelệnh.

Tôi khuyên bạn nên rbenv .

Tuy nhiên, ngay cả khi bạn sử dụng trình quản lý phiên bản Ruby, bạn vẫn có thể nhận được thông báo lỗi tương tự.

Nếu bạn làm như vậy và bạn đang sử dụng rbenv, chỉ cần xác minh rằng ~/.rbenv/shimsthư mục nằm trước đường dẫn cho hệ thống Ruby.

$ echo $PATH sẽ cho bạn thấy thứ tự của đường dẫn tải của bạn.

Nếu bạn thấy rằng thư mục shims của bạn xuất hiện sau thư mục Ruby bin hệ thống của bạn, thì hãy chỉnh sửa ~/.bashrctệp của bạn và đặt nó làm lệnh xuất PATH cuối cùng của bạn: export PATH=$HOME/.rbenv/shims:$PATH

$ ruby -v cho bạn thấy phiên bản Ruby bạn đang sử dụng

Điều này cho thấy tôi hiện đang sử dụng phiên bản hệ thống của Ruby (thường không tốt)

$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

$ rbenv global 1.9.3-p448 chuyển tôi sang phiên bản mới hơn, được cài đặt sẵn (xem tài liệu tham khảo bên dưới).

Điều này cho thấy rằng tôi đang sử dụng phiên bản mới hơn của Ruby (có khả năng sẽ không gây ra Gem :: FilePermissionError)

$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]

Bạn thường không cần phải mở đầu một lệnh gem với sudo. Nếu bạn cảm thấy cần phải làm như vậy, một cái gì đó có thể được cấu hình sai.

Để biết chi tiết về rbenv, xem như sau:


7
Bạn không nên tự loay hoay với pass nếu bạn đang sử dụng rbenv, nếu bạn làm theo hướng dẫn cài đặt Homebrew , tất cả những gì bạn phải làm là thêm eval "$(rbenv init -)"vào cấu hình shell của mình và rbenvnên chăm sóc cài đặt PATHcho bạn.

Cảm ơn. Tôi đã quên 'rbenv toàn cầu' vì vậy tôi vẫn đang sử dụng hệ thống ruby ​​và cài đặt đá quý đã thất bại.
Graham Perks

75

Tại sao bạn không làm:

sudo gem update --system

39
Cài đặt đá quý như root không phải là một ý tưởng tốt. stackoverflow.com/questions/2119064/ Lời
spuder

Có vấn đề với brew upgrade Error: Permission denied.... Điều này đã sửa nó. Cảm ơn!
Ostap Andrusiv

12
Không bao giờ sử dụng SUDO, nếu bạn phải làm điều này, bạn đã làm điều gì đó sai trong thiết lập của bạn. Vui lòng sử dụng rbenv hoặc rvm.
Chris Hough

14
Tại sao mọi người trả lời các vấn đề về quyền để luôn luôn ném sudo trước một lệnh? Làm thế nào là thực hành tốt nhất này?
Steven

hyh: qzc.xcodeproj ylgwhyh $ gem cài đặt cocoapods ERROR: Trong khi thực thi gem ... (Gem :: FilePermissionError) Bạn không có quyền ghi cho thư mục /L Library / Resub / Ginger / 2.0.0.
ylgwhyh

40

Điều này sẽ khắc phục sự cố trên MacOs MojaveMacOs Catalina một cách rõ ràng:

brew install ruby

Sau đó đặt GEM_HOME vào thư mục người dùng của bạn. Trên thiết bị đầu cuối:

Bash:

echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.bashrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

HOẶC nếu trên Zsh:

echo '# Install Ruby Gems to ~/gems' >> ~/.zshrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.zshrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

2
Làm thế nào bạn tìm ra điều này? Đã làm việc!
kuzdu

2
bạn là người đàn ông cao năm, nó thực sự hoạt động như một nét duyên dáng cảm ơn rất nhiều.
mrDinkelman

1
Điều này đã không làm việc cho tôi cho đến khi tôi chạy xcode-select --install. Điều này là cần thiết để biên dịch các phần mở rộng.
Marc Perrin-Pelletier

Tôi đã chạy cái này và tôi muốn có thể thiết lập lại những thay đổi được thực hiện bởi những thứ này, bạn có biết làm thế nào để hoàn nguyên nó không? @Fmessina
KarenAnne

việc này sẽ hoạt động: chỉnh sửa ~/.bashrchoặc ~/.zshrctập tin của bạn , xóa 3 dòng được thêm vào và sau đó chạy lại source ~/.bashrclệnh
Fmessina

34

Đối với tôi vấn đề là do sử dụng rbenv và quên cài đặt phiên bản phù hợp trên toàn cầu.

Vì vậy, tôi đã phải thiết lập nó với rbenv global xxx

Trong trường hợp của tôi, tôi đã cài đặt 2.0.0-p247nên tôi phải ra lệnh:

rbenv global 2.0.0-p247
rbenv rehash

Sau đó tất cả đã hoạt động tốt.


3
Đối với những người bạn đã sử dụng rbenv và bắt đầu nhận được lỗi Quyền khi cài đặt đá quý sau khi nâng cấp OSX lên phiên bản mới hơn: Bạn nên bắt đầu bằng cách đặt phiên bản rbenv rbenv global 2.1.1chẳng hạn, sau đó làm theo rbenv rehash. Bây giờ chạy lại gem installlệnh của bạn .
njappboy

1
^ Điều này + khởi động lại thiết bị đầu cuối.
XåpplI'-I0llwlg'I -

1
nhà thám hiểm tương lai: rbenv Rehash đã bị phản đối github.com/rbenv/rbenv-gem-rehash
TCannadySF

Làm việc cho tôi hoàn hảo! Đó là cái rbenv rehashtôi đã mất tích.
jamesmarkcook

Đáng lưu ý rằng đó là viên ruby ​​hệ thống đã bị thiếu quyền và rbenv sẽ sử dụng ruby ​​hệ thống nếu không có viên ruby ​​toàn cầu nào được thiết lập. Điều này được xác minh với rbenv versions.
Dennis

23

Bạn cần phải sửa đường dẫn của bạn.

Để xác định xem bản sửa lỗi này có hoạt động không, hãy chạy như sau:

which gem

Điều này sẽ xuất ra một thư mục bạn không có quyền:

/usr/bin/gem

Để khắc phục điều này thực hiện các bước sau:

  1. Xác định đường dẫn bạn cần sao chép vào hồ sơ của bạn:

    rbenv init -

    Dòng đầu tiên của đầu ra là dòng bạn cần sao chép vào hồ sơ của bạn:

    export PATH="/Users/justin/.rbenv/shims:${PATH}" #path that needs to be copied
    source "/usr/local/Cellar/rbenv/0.4.0/libexec/../completions/rbenv.zsh"
    rbenv rehash 2>/dev/null
    rbenv() {
      typeset command
      command="$1"
      if [ "$#" -gt 0 ]; then
        shift
      fi
    
      case "$command" in
      rehash|shell)
        eval `rbenv "sh-$command" "$@"`;;
      *)
        command rbenv "$command" "$@";;
      esac
    }
  2. Sao chép đường dẫn đến hồ sơ của bạn và lưu nó.

  3. Tải lại hồ sơ của bạn ( source ~/.zshenvcho tôi).

  4. Chạy đi rbenv rehash.

Bây giờ khi bạn chạy, which gembạn sẽ nhận được một đường dẫn cục bộ mà bạn có quyền:

/Users/justin/.rbenv/shims/gem

Đó là vấn đề trong tình huống của tôi. Bạn sẽ có thể bao gồm eval "$(rbenv init -)"trong của bạn ~/.bash_profileđể thực hiện tất cả các thay đổi cần thiết.
nyi

câu trả lời tốt nhất. hồ sơ của tôi được đặt tên là .bash_profile và bạn có thể mở tệp như thế này: touch ~ / .bash_profile; mở ~ / .bash_profile và thêm dòng bạn đã đề cập tại điểm 1.
CarmenA


17

Điều này làm việc cho tôi. Ngoài ra, nếu bạn đã cài đặt đá quý như root trước đó, nó sẽ khắc phục vấn đề đó bằng cách thay đổi quyền sở hữu trở lại với bạn (bảo mật tốt hơn).

sudo chown -R `whoami` /Library/Ruby/Gems

1
Cực kỳ không! không bao giờ thay đổi quyền trên /Librarythư mục, hệ thống có thể bị hỏng trong các bản cập nhật trong tương lai. (xin lỗi vì trả lời trễ)
Raptor

@Raptor Tôi đang sửa đổi quyền trên thư mục con, không phải "/ Thư viện". Trong trường hợp của tôi, tôi đã cài đặt nhầm đá quý làm root, vì vậy tôi muốn hoàn tác nó. Không có hậu quả tiêu cực mà tôi có thể nghĩ về mặt lý thuyết cũng như không có bất kỳ điều gì tôi đã quan sát. Tôi tò mò - tại sao bạn nghĩ rằng đây là một ý tưởng tồi?
thebigestlebowski

Đường dẫn dành cho hệ thống. Cập nhật thêm về macOS có thể bị hỏng.
Raptor

Đá quý được cài đặt theo mặc định cho vị trí này. Nó không thể sử dụng được vì nó được cài đặt nhầm là root (sudo) thay vì người dùng bình thường của tôi. Kết quả của những gì tôi đã làm giống như khi tôi cài đặt là $ USER ngay từ đầu. Tôi không thấy tác hại. Hầu hết các câu trả lời khác ở đây đề xuất cùng một kết quả / giải pháp, nhưng các cách khác nhau để đạt được nó. Tôi vẫn không thấy vấn đề. Bạn đang nói đá quý không nên được cài đặt dưới / Thư viện?
thebigestlebowski

15

Có hai tuyến đường: Sử dụng rbenv hoặc RVM. Có công thức cho cả hai dưới đây. Trước khi bạn làm, có lẽ bạn muốn tắt cài đặt các tài liệu địa phương cho đá quý.

echo "gem: --no-ri --no-rdoc" >> ~/.gemrc

Sau đó:

install rbenv

install ruby-build

chạy:

rbenv install 2.1.2 (or whatever version you prefer)
rbenv global 2.1.2
gem update --system

Điều này cài đặt một phiên bản cập nhật của hệ thống đá quý trong các thư mục địa phương của bạn. Điều đó có nghĩa là bạn không can thiệp vào cấu hình hệ thống. Nếu bạn đang hỏi câu hỏi này, bạn không nên nhầm lẫn với bảo mật hệ thống và bạn sẽ mất nhiều thời gian hơn để hiểu những vấn đề bạn có thể gặp phải, thay vì chỉ có một cách dễ dàng để tránh sự cố bạn bắt đầu. Tìm hiểu sau này, khi bạn biết thêm về hệ điều hành và lập trình.

Để sử dụng thay thế 'RVM' thay thế: Để cài đặt rvm run:

rvm install 2.1.2
rvm use 2.1.2
gem update --system

Điều này có kết quả tương tự, bạn kết thúc với một hệ thống Ruby và Gem cục bộ không can thiệp vào các phiên bản hệ thống. Không cần Homebrew, hoặc hệ thống lib quá tải, v.v.


13

Tôi tìm thấy cách làm này cho sudoít đá quý hơn :

  1. brew install rbenv ruby-build
  2. sudo gem update --system
  3. thêm xuất khẩu vào .bashrc:

    export RBENV_ROOT="$(brew --prefix rbenv)"
    export GEM_HOME="$(brew --prefix)/opt/gems"
    export GEM_PATH="$(brew --prefix)/opt/gems"
  4. Và cuối cùng thêm điều này vào ~/.gemrc:

    gem: -n/usr/local/bin
  5. gem update --system


Tôi đã sử dụng brew install rebenv ruby-build, sau đó có một systemthư mục của tôi? Bất kỳ ý tưởng những gì gây ra điều này, và làm thế nào để thoát khỏi điều đó system?
7537247

13

Hãy thử câu trả lời của nathanwhy trước khi sử dụng câu trả lời ban đầu của tôi dưới đây. Khuyến nghị của anh ấy --user-installnên hoàn thành cùng một mục đích mà không cần phải làm quen với .bash_profilehoặc xác định phiên bản ruby ​​của bạn.


Nếu bạn không quan tâm đến một phiên bản ruby ​​cụ thể, bạn có thể bỏ qua các tùy chọn quản lý môi trường ruby ​​nâng hạng nặng và chỉ cần thêm các dòng này vào ~/.bash_profile:

export GEM_HOME="$HOME/.gem/ruby/2.0.0"
export GEM_PATH="$HOME/.gem/ruby/2.0.0"

Đường dẫn bị đánh cắp từ đầu ra ban đầu của gem env:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.14
  - RUBY VERSION: 2.0.0
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
  - RUBY EXECUTABLE: /System/Library/.../2.0/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-14
  - GEM PATHS:
     - /Library/Ruby/Gems/2.0.0
     - /Users/mylogin/.gem/ruby/2.0.0 # <-- This guy, right here.
     - /System/Library/.../usr/lib/ruby/gems/2.0.0
  ...

Không sudoyêu cầu ing, và bạn có thể sử dụng ruby ​​đã được cài đặt, lịch sự của Apple.


3
+1: Điều này làm việc rất tốt cho tôi. Không phải ai cũng là quản trị viên hệ thống của máy họ đang sử dụng và do đó không phải ai cũng có quyền truy cập vào 'sudo', 'chown' hoặc các công cụ tương tự. Theo cách tương tự, mọi người nên biết về "gem install --user-install", cài đặt gem vào một thư mục trong thư mục chính của người dùng thay vì cho tất cả người dùng chia sẻ.
Một số Guy

12

Tôi cần phải làm rbenv rehashnhư vậy nó sẽ trỏ đến thư viện Gem địa phương của tôi.

Có vẻ như bạn đã có trình quản lý đá quý của mình trỏ đến Thư viện hệ thống, vì vậy, thay vì làm rối với các quyền, hãy thực hiện tương đương với "thử lại" để người quản lý của bạn lấy mọi thứ chỉ cục bộ.


3
nhà thám hiểm tương lai: rbenv Rehash đã bị phản đối github.com/rbenv/rbenv-gem-rehash
TCannadySF

12

Lớn tuổi và khôn ngoan hơn

Đừng làm những gì tôi nói ở đây, chỉ cần biết cảnh giác bất cứ khi nào bạn sử dụng sudo. Bạn có thể muốn sử dụng một cái gì đó như rbenvđể cô lập bất cứ công việc bạn đang làm.


một cách

tìm hiểu về chown

Tôi không biết nếu bạn thích dòng lệnh, nhưng điều này sẽ làm cho bất kỳ dự án nào với bất kỳ công cụ nào cài đặt các gói vào hệ thống của bạn một cách dễ dàng.

chown theo như tôi có thể nói, là viết tắt của quyền sở hữu thay đổi.

Lý do tôi đến tìm câu trả lời này là vì tôi gem installđã ném lỗi này vào hôm nay:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /var/lib/gems/1.9.1 directory.

Đây là một cơ hội hoàn hảo để sử dụng chown . Bạn thấy Ruby đã cung cấp cho chúng tôi thư mục mà nó cần truy cập và có vẻ như đó là một thư mục mà nó sẽ sử dụng khá thường xuyên.

Trong trường hợp này, chỉ có ba điều người ta cần biết để giải quyết vấn đề, nhưng chownmạnh mẽ hơn nhiều, và cho phép bạn linh hoạt hơn rất nhiều so với những gì tôi sẽ trình bày bây giờ. Vui lòng tham khảo các nguồn ở phía dưới để biết thêm thông tin.

Hai điều

  1. tên tài khoản
  2. Danh mục

Nếu bạn đang ở trong một vỏ tìm kiếm tên người dùng là dễ dàng. Chỉ cần nhìn vào dấu nhắc. Của tôi trông giống như:

breadly@breadly-desktop:~\Desktop

Người dùng hiện tại chỉ là tên trước @. Chúng tôi biết thư mục từ các thông báo lỗi, nhưng bạn có hai lựa chọn. Bạn có thể giới hạn quyền của mình đối với phiên bản hiện tại bằng cách sử dụng ../gems/1.9.1hoặc tự cấp quyền viết cho đá quý của tất cả các phiên bản bằng cách sử dụng../gems .

Lệnh thực sự thay đổi quyền sở hữu sẽ như thế này.

chown -R $(whoami) /absolute/path/to/directory

Các -Rđược biết đến như một lá cờ và -Rlá cờ thường kể một lệnh để làm điều gì đó một cách đệ quy, hay nói cách khác thực hiện các lệnh trên tất cả mọi thứ được chứa trong thư mục, và tất cả những gì chứa trong các thư mục chứa bên trong, và vân vân đến không có gì khác


Ngoài ra, nếu bạn muốn tìm hiểu nhóm người dùng của bạn thuộc nhóm nào, bạn có thể tham khảo điều này. stackoverflow.com/questions/350141/ trên
Giống nhau

3
Tuy nhiên, bạn có thể muốn cẩn thận về việc thay đổi quyền sở hữu nếu phải cài đặt vào thư mục / usr / local / bin.
Nhân giống

16
Thay đổi quyền sở hữu bất cứ thứ gì trong các đường dẫn / usr, / Library hoặc / var, trong số những thứ khác, là một ý tưởng tồi. Hệ thống có thể tạm dừng do các tệp và trình điều khiển không còn truy cập được nữa và các bản cập nhật trong tương lai có thể bị hỏng nếu trình cài đặt cảm thấy rằng các đường dẫn không còn thuộc sở hữu của root: wheel. Khắc phục thiệt hại có thể thực sự khó khăn và thường được thực hiện tốt nhất bằng cách cài đặt lại HĐH. Người dùng ngây thơ / thiếu kinh nghiệm không biết đủ về HĐH để hiểu những tập tin / thư mục nào có thể an toàn và nên được cảnh báo không nên thử điều này ở nhà.
Tin Man

Lol đây là một câu trả lời lúng túng. Tôi đoán là già hơn và khôn ngoan hơn.
Nhân giống

11

Tôi đã định dạng máy Mac của mình và nhiều giải pháp được đề xuất không phù hợp với tôi. Những gì làm việc cho tôi là các lệnh theo đúng thứ tự:

  1. Cài đặt Homebrew:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. Cài đặt Ruby:

    brew install ruby
  3. Cài đặt La bàn:

    sudo gem install compass

Bạn không bao giờ cần phải sử dụng sudođể cài đặt một cái gì đó với đá quý. Sử dụng sudocài đặt nó vào Ruby do hệ thống sở hữu, không phải vào một cái bạn sở hữu. Sử dụng Ruby hộp cát dễ quản lý và sử dụng hơn khi lập trình vì bạn có thể tạo nhiều trường hợp khác nhau và thử những thứ khác nhau sau đó phá hủy chúng khi bạn hoàn thành.
Tin Man


6

Làm việc cho tôi:

sudo gem uninstall cocoapods

sudo gem install cocoapods

Tuyệt vời làm việc cho tôi aswel! Cảm ơn. Đã lưu nỗ lực cài đặt rbenv hoặc RVM
NaXir

5
Downvote bởi vì, như đã được lưu ý trong các ý kiến ​​khác, cài đặt đá quý như root là một thực tế nguy hiểm. Trình cài đặt có thể làm bất cứ điều gì theo nghĩa đen với hệ thống của bạn.
Một số Guy

@SomeGuy: "Trình cài đặt có thể làm bất cứ điều gì theo nghĩa đen" ... nhiều khả năng chính người dùng có thể sử dụng lệnh và xử lý hệ thống. Tôi không thể nghĩ về một lần trình cài đặt làm hỏng hệ thống của tôi, nhưng tôi có thể nhớ rõ những lần tôi đã làm. sudolà một mệnh lệnh mà những người mới yêu thích vì nó có thể làm điều sai một cách dễ dàng và phải mất nhiều năm để học cách hoang tưởng một cách thích hợp khi sử dụng nó.
Tin Man

1
Câu trả lời hay nhất !!!! Sau khi chạy 2 lệnh này, vui lòng khởi động lại Terminal và, thế thôi !!! Cảm ơn rất nhiều!!!
sửa mũi

4

Kiểm tra xem phiên bản Ruby của bạn có đúng không. Nếu không, thay đổi nó.

Điều này làm việc cho tôi:

$ rbenv global 1.9.3-p547
$ gem update --system

Đây là giải pháp tốt hơn: update> chown. Cảm ơn! . Tôi cũng phải chạybrew install ruby
Jose Llausas

4

Cài đặt rbenv bởi brew install rbenv ;

Sau đó đặt eval "$(rbenv init -)" ở cuối ~ / .bash_profile (hoặc ~ / .zshrc của MacOS);

Mở một thiết bị đầu cuối mới và chạy gem install ***sẽ hoạt động!


Không làm việc cho tôi ❯ brew install rbenv -q Warning: rbenv 1.1.1 is already installed and up-to-date To reinstall 1.1.1, run `brew reinstall rbenv` ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ eval "$(rbenv init -)" ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ gem update Updating installed gems Updating CFPropertyList ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
Max Coplan

2

Như được chỉ ra bởi bobbdelsol, việc làm lại cho tôi:

==> which ruby
/usr/bin/ruby

==> rbenv install 1.9.3-p551
Downloading ruby-1.9.3-p551.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.bz2
Installing ruby-1.9.3-p551...
Installed ruby-1.9.3-p551 to /Users/username/.rbenv/versions/1.9.3-p551


==> which ruby
/Users/username/.rbenv/shims/ruby

==> which gem
/Users/username/.rbenv/shims/gem

==> gem install compass
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> rbenv rehash


==> ruby -v
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-darwin15.4.0]


==> gem install compass
Fetching: sass-3.4.22.gem (100%)
Fetching: multi_json-1.11.3.gem (100%)
Fetching: compass-core-1.0.3.gem (100%)
Fetching: compass-import-once-1.0.5.gem (100%)
Fetching: chunky_png-1.3.5.gem (100%)
Fetching: rb-fsevent-0.9.7.gem (100%)
Fetching: ffi-1.9.10.gem (100%)
Building native extensions.  This could take a while...
Fetching: rb-inotify-0.9.7.gem (100%)
Fetching: compass-1.0.3.gem (100%)
    Compass is charityware. If you love it, please donate on our behalf at http://umdf.org/compass Thanks!
Successfully installed sass-3.4.22
Successfully installed multi_json-1.11.3
Successfully installed compass-core-1.0.3
Successfully installed compass-import-once-1.0.5
Successfully installed chunky_png-1.3.5
Successfully installed rb-fsevent-0.9.7
Successfully installed ffi-1.9.10
Successfully installed rb-inotify-0.9.7
Successfully installed compass-1.0.3
9 gems installed
Installing ri documentation for sass-3.4.22...
Installing ri documentation for multi_json-1.11.3...
Installing ri documentation for compass-core-1.0.3...
Installing ri documentation for compass-import-once-1.0.5...
Installing ri documentation for chunky_png-1.3.5...
Installing ri documentation for rb-fsevent-0.9.7...
Installing ri documentation for ffi-1.9.10...
Installing ri documentation for rb-inotify-0.9.7...
Installing ri documentation for compass-1.0.3...
Installing RDoc documentation for sass-3.4.22...
Installing RDoc documentation for multi_json-1.11.3...
Installing RDoc documentation for compass-core-1.0.3...
Installing RDoc documentation for compass-import-once-1.0.5...
Installing RDoc documentation for chunky_png-1.3.5...
Installing RDoc documentation for rb-fsevent-0.9.7...
Installing RDoc documentation for ffi-1.9.10...
Installing RDoc documentation for rb-inotify-0.9.7...
Installing RDoc documentation for compass-1.0.3...

thật gần gũi chưa "LRI: Trong khi thực thi gem ... (Gem :: FilePermissionError) Bạn không có quyền ghi cho thư mục /L Library / Repub / Ginger / 2.0.0."
JGallardo

1

Đã thử nghiệm trên MacOS Mojave VỚI THÀNH CÔNG:

  1. Gỡ cài đặt tất cả các phiên bản ruby ​​cũ của bạn (giả sử bạn có 2.00 và 2.3.0):

    $ rvm uninstall 2.0.0

    $ rvm uninstall 2.3.0

  2. Cài đặt phiên bản ruby ​​hoàn toàn mới:

    $ brew install ruby

  3. Đặt bí danh mặc định cho phiên bản của bạn:

    $ rvm alias create default ruby

  4. Khởi động lại hệ thống của bạn vì đây là cách an toàn nhất mà máy tính của bạn tải phiên bản ruby ​​mới, được cài đặt gần đây.

SAU bạn đã thực hiện thủ tục trên, bạn có thể chạy thành công bất kỳ gemlệnh nào .


-2

cd / Thư viện / Repy / Grace / 2.0.0

mở .

nhấp chuột phải để nhận thông tin

bấm khóa

đặt mật khẩu

làm cho mọi thứ đọc và viết


1
Hãy dành thời gian để định dạng câu trả lời của bạn cho dễ đọc. Những nỗ lực bạn đưa vào nghiên cứu và giải thích đã được đền đáp.
Tin Man

-2

cung cấp cho người dùng $ whoami để tạo somhin trong các thư mục đó

sudo chown -R user /Library/Ruby/Gems/2.0.0

Không. Thư mục đó thuộc sở hữu của hệ thống vì một lý do chính đáng, hệ thống sử dụng nó cho mục đích riêng của mình. Bạn có thể chạy một tập lệnh trỏ đến tập lệnh đó, nhưng hãy tạo và sử dụng Ruby hộp cát nếu bạn muốn làm hỏng nó.
Tin Man


-4

Cài đặt gem hoặc cập nhật RubyGems không thành công với lỗi quyền Sau đó Nhập Lệnh này

sudo gem install cocoapods

1
Điều này đã được bao phủ trong các câu trả lời khác. Vui lòng đọc các câu trả lời khác trước khi tạo một câu trả lời để đảm bảo rằng bạn cung cấp một cái gì đó mới.
Tin Man

-6

Tôi đã sử dụng và làm việc.

$ sudo chown myuser /var/lib/gems


Xem các ý kiến ​​trong các câu trả lời khác về việc sử dụng sudo.
Tin Man

-18

Lý do của lỗi là do bạn chưa đăng nhập với tư cách người dùng root trên thiết bị đầu cuối.

Nếu bạn đã sử dụng root, hãy bật máy Mac của bạn ở loại thiết bị đầu cuối

$ su

Nếu bạn không có người dùng root, bạn cần kích hoạt nó bằng các bước sau

  1. Từ menu Apple, chọn System Preferences '.
  2. Từ menu Xem, chọn Người dùng & Nhóm.
  3. Nhấp vào khóa và xác thực là tài khoản quản trị viên.
  4. Nhấp vào Tùy chọn đăng nhập.
  5. Nhấp vào nút Chỉnh sửa và sắp xếp lại ở góc trên bên phải.
  6. Nhấp vào nút Mở thư mục Tiện ích mở rộng.
  7. Bấm vào khóa trong cửa sổ Utility Utility.
  8. Nhập tên tài khoản quản trị viên và mật khẩu, sau đó bấm OK.
  9. Chọn Bật người dùng gốc từ menu Chỉnh sửa.
  10. Nhập mật khẩu gốc bạn muốn sử dụng trong cả hai trường Mật khẩu và Xác minh, sau đó bấm OK.

Nhiều hơn cùng một lúc trên http://support.apple.com/kb/ht1528

Atleast nó làm việc cho tôi sau khi bị mắc kẹt trong vài giờ.


Tại sao lại bỏ phiếu? Các bạn có thể xin vui lòng viết lý do để làm như vậy?
Mohammad Arif

8
Cài đặt đá quý như root là một ý tưởng tồi. stackoverflow.com/questions/2119064/ Lời
spuder
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.