/Library/Ruby/Gems/2.3.0 디렉토리에 대한 쓰기 권한이 없습니다. (mac 사용자)


159

아래는 내가해야 할 일입니다.

사양을 실행하려면 RSpec을 설치해야합니다. 먼저 gem install bundler프로젝트의 루트 디렉터리에서 실행 합니다. 그런 다음 bundle install. 단일 스펙 파일을 실행하려면 다음과 같은 명령을 실행하십시오 bundle exec rspec spec/00_hello_spec.rb.. 모든 사양을 한 번에 실행하려면 bundle exec rspec.

그래서 gem install bundler터미널에 입력 하고 오류가 발생했습니다.

/Library/Ruby/Gems/2.3.0 디렉토리에 대한 쓰기 권한이 없습니다.

그리고 이것은 atom의 프로젝트 파일에있었습니다.

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

내 질문은 :

루비에서 아무것도 바꾸면 안 돼서 bundle install아톰 내부에 들어가야 해서 터미널이 응답을주는 것 같네요 . 누구든지 원자를 사용하는 방법을 알려주거나 원자에서 무엇이든 실행할 수 있습니까?

답변:


280

업데이트 : 이후 Mac에 Ruby gem을 설치할 수있는 다양한 방법에 대한 자세한 설명을 작성했습니다. 스크립트 사용에 대한 나의 원래 권장 사항은 여전히 유효하지만 내 기사는 https://www.moncefbelyamani.com/the-definitive-guide-to-installing-ruby-gems-on-a-mac/에서 더 자세히 설명합니다.

macOS가 Mac과 함께 제공되는 Ruby 버전으로 아무것도 변경할 수 없다는 것이 맞습니다. 그러나 bundlerApple에서 제공하는 것을 방해하지 않는 별도의 Ruby 버전을 사용하는 것처럼 gem을 설치할 수 있습니다 .

사용 sudo보석을 설치하거나 시스템 파일 및 디렉토리의 권한을 변경하면 강력하게 당신이 무엇을하는지 아는 경우에도 좋습니다. 이 나쁜 조언을 그만 두어도 될까요? 다음 sudo gem install은 컴퓨터를 지우는 방법 을 보여주는 자세한 기사입니다 . https://www.moncefbelyamani.com/why-you-should-never-use-sudo-to-install-ruby-gems/

솔루션에는 두 가지 주요 단계가 포함됩니다.

  1. Mac과 함께 제공된 버전을 방해하지 않는 별도의 Ruby 버전을 설치하십시오.
  2. 당신이 업데이트 PATH새로운 루비 버전의 위치가 먼저되도록 PATH. 일부 도구는이를 자동으로 수행합니다. 에 익숙하지 않고 PATH작동 방식을 모르는 경우 내 가이드를 읽어 보세요.

Mac에 Ruby를 설치하는 방법에는 여러 가지가 있습니다. 제가 추천하고 제가 바라는 가장 좋은 방법은 다양한 설치 지침에서 더 널리 사용되기를 바라는 것은 적절한 Ruby 환경을 설정 하는 자동화 된 스크립트 를 사용하는 것입니다. 이렇게하면 사용자가 여러 작업을 수동으로 수행하고 필요한 모든 단계를 파악할 수 있도록하는 부적절한 지침으로 인해 오류가 발생할 가능성이 크게 줄어 듭니다.

당신이 취할 수있는 다른 방법은 모든 것을 수동으로하고 최선을 바라는 데 여분의 시간을 보내는 것입니다. 먼저, 필수 명령 줄 도구를 설치하고 필요한 다른 도구를 쉽게 설치할 수 있도록하는 Homebrew 를 설치해야합니다.

그런 다음, 별도의 Ruby 버전을 설치하는 가장 쉬운 두 가지 방법은 다음과 같습니다.

많은 Ruby 버전간에 쉽게 전환 할 수있는 유연성을 원하는 경우 [권장]

다음 네 가지 옵션 중 하나를 선택하십시오.

  • chrubyruby- install- 내 개인 권장 사항 및 내 스크립트에 의해 자동으로 설치되는 권장 사항. Homebrew와 함께 설치할 수 있습니다.
brew install chruby ruby-install
  • rbenv -Homebrew와 함께 설치할 수 있습니다.

  • RVM

  • asdf

chruby및 을 선택한 경우 ruby-install다음과 같이 최신 Ruby를 설치할 수 있습니다.

ruby-install ruby

당신이 모든 것을 설치하고 구성하면 .zshrc또는 .bash_profile위의 도구의 지시에 따라, 당신이 원하는 루비의 버전으로 전환, 종료 및 터미널을 다시 시작합니다. 의 경우 chruby다음과 같습니다.

chruby 2.7.2

구성해야하는지 .zshrc또는 .bash_profile사용중인 셸에 따라 다릅니다. 확실하지 않은 경우이 가이드를 읽으십시오 : https://www.moncefbelyamani.com/which-shell-am-i-using-how-can-i-switch/

한 번에 두 개 이상의 Ruby 버전이 필요하지 않다는 것을 알고 있다면 (macOS와 함께 제공되는 버전 제외)

  • Homebrew를 사용하여 Ruby를 설치합니다.
brew install ruby

그런 다음 다음 PATH을 실행 하여 업데이트하십시오 ( 2.7.0새로 설치된 버전으로 교체 ).

echo 'export PATH="/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/2.7.0/bin:$PATH"' >> ~/.zshrc

그런 다음 이러한 변경 사항이 적용되도록 셸을 "새로 고침"합니다.

source ~/.zshrc

또는 새 터미널 탭을 열거 나 터미널을 종료하고 다시 시작할 수 있습니다.

Bash를 사용 .zshrc하는 .bash_profile경우로 교체하십시오 . 사용중인 셸이 확실하지 않은 경우 다음 가이드를 참조하십시오 . https://www.moncefbelyamani.com/which-shell-am-i-using-how-can-i-switch/

현재 비 시스템 버전의 Ruby를 사용하고 있는지 확인하려면 다음 명령을 실행할 수 있습니다.

which ruby

다른 것이어야합니다. /usr/bin/ruby

ruby -v

macOS Catalina를 사용하는 경우 2.6.3이 아닌 다른 버전이어야합니다. 오늘 현재 2.7.2가 최신 Ruby 버전입니다.

이 새 버전의 Ruby를 설치했으면 이제 번 들러 (또는 다른 gem)를 설치할 수 있습니다.

gem install bundler

4
당신이 저와 같고 zsh (또는 bash가 아닌 다른 쉘)를 사용한다면 추가 단계가 있습니다! 설치 한 후에 rbenv당신은해야 echo 'eval "$(rbenv init -)"' >> ~/.bash_profile. 출처
Marlo

2
/ usr / local 디렉토리에서 권한 오류가 발생하면 sudo chown -R $(whoami) $(brew --prefix)/*. 자세한 정보는 이 스레드 를 참조하십시오
Anas Tiour

6
이것은 매우 도움이됩니다. 정답으로 설정되어야합니다.
Spencer Müller Diniz

5
MacOS는 사람들이 zsh로 전환하도록 장려하므로 ~ / .bash_profile에 대한 변경 사항도 ~ / .zshrc에 적용해야합니다.
Adam_G

1
@stevec 아마도 rbenv 설치 지침에서 몇 단계를 놓쳤습니까? 아니면 터미널을 종료하고 다시 시작하지 않았습니까? 여기에있는 rbenv 지침을 따를 것입니다 : github.com/rbenv/rbenv#installation . chruby대신 사용할 수 있다면 다음 과 같이 모든 것을 설정하는 스크립트를 사용하는 것이 좋습니다. github.com/monfresh/install-ruby-on-macos . 해당 스크립트를 실행하기 전에 먼저 rbenv를 제거해야합니다. github.com/rbenv/rbenv#uninstalling-rbenv
monfresh

83

실행하지 않으려면 sudohomebrew를 사용하여 Ruby를 설치하십시오.

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

당신은 추가 할 수 있습니다 export GEM_HOME="$HOME/.gem"당신에 ~/.bash_profile또는 .zshrc당신이 사용하는 경우 zsh을

참고 : RubyGems는 이전 버전의 gem을 유지하므로 업데이트 후 몇 가지 정리를 수행하십시오.

gem cleanup

4
😐 카탈 OS에 didnt 한 도움
Efrat 레비

내 답변 업데이트
STIKO 2010 년

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 레비

rails명령을 실행하려는 것 같습니다 . 내가 가진 마지막 두 명령은 rails명령을 실행하지 않습니다 . 프로젝트 외부에서 새 터미널을 열고 내 대답의 마지막 두 줄을 하나씩 복사하십시오.
STIKO

잊지 마세요에 source ~/. zshrc(또는 ~/.bash_profile)
gordinmitya

73

--user-install다음 명령을 실행 하는 매개 변수를 사용하여 나를 위해 일했습니다 .

gem install name_of_gem --user-install

그런 다음 그는 그것을 가져와 설치하기 시작했습니다.

편집하다

아직 설치할 수없는 보석이 하나있었습니다 (Ruby 개발 키트의 Ruby.h 헤더가 필요함), 다른 버전 관리자를 사용해 보았지만 어떻게 든 문서에 언급 된대로 작동하지 않았습니다. 설치하고 전환하기 만하면됩니다 (버전을 전환하지 않았습니다). 그런 다음 설치된 모든 버전 관리자를 제거하고 나중에 brew install ruby최신 버전으로 설치하고 PATH 변수도 설정했습니다. (브루에서 루비를 설치 한 후에 언급 될 것입니다).


2
이것은 정답이되어야합니다. Brew는 아직 M1 칩에서 지원되지 않으며 이것은 매력처럼 작동합니다.
Tom Roggero

1
이 답변이 목록에서 멀리 떨어진 이유는 무엇입니까? 정답입니다.
peterretief

7

일반적으로 같은 버전 관리자를 사용하는 것이 좋습니다 rbenv또는 rvm. 그렇지 않으면 설치된 Gems root를 다른 사용자 가 사용할 수 있습니다 .

수행중인 작업을 알고 있다면 sudo gem install.


5

macOS Catalina를 설치 한 후에도 동일한 문제가 발생했습니다. 나는 아래 명령과 그 작동을 시도했습니다.

sudo gem update

4

이것을 실행

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

eval "$(rbenv init -)"

지침을 따르십시오 (제 경우 ~ / .zshrc에 추가하십시오 );)


또한 중요 : 변경 사항은 본체를 재부팅하는 경우에만 적용됩니다. 두 가지 옵션

  • 시작하다 source <modified file>
  • 닫고 다시 엽니 다

나는 (zsh을에 떠들썩한 파티에서 전환) 카탈로 업그레이드하고 나는 모든 것을 복사하는 것을 잊었다 .bash_profile이상에.zshrc
wetjosh

작동합니다! 사용하지 마십시오 sudo! ZSH를 사용하지 않는 경우 .profile또는에 추가 할 수 있습니다 .bash_profile. 이것이 작동하는지 확인하는 가장 좋은 방법은 사용 하는 것 입니다. 사용 하지 않는 which ruby경로를 가리켜 야 rbenv합니다 /usr/local/ruby.
Swaathi Kakarla

2

루비를 별도로 설치하고 rbenv / rvm을 사용하여 루비를 설치했다면 budler는 다른 버전을 가리킬 수 있습니다.

시험

gem env home

ruby -v

둘 다 동일한 버전을 가리켜 야합니다. rbenv / rvm을 사용하여 루비를 설치했는지 확인하십시오. 그렇다면 별도로 설치 한 루비 버전을 삭제하십시오.

gem이 작동하려면 rbenv를 호출해야합니다.

rbenv shell <ruby version> 

rbenv global <ruby version>

RVM이 어떻게 작동하는지 잘 모르겠습니다. 이것이 작동하는지 알려주십시오.


쉘 및 글로벌 설정이 누락되었습니다. rbenv 지침에없는 이유 🤔
feitla

왜 이것이 놓쳤는 지 확실하지 않아서 시도한 후 알 수있었습니다.
Bharathan Kumaran

0

Mac 용 솔루션

  1. 마지막 루비 버전으로 RVM 설치 / 업데이트

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

  2. 들러 설치

    gem install bundler


이 두 명령이 (sudo) gem install ....작동하기 시작한 후


또한 지정해야 할 수도 있습니다rvm use <version>
ObjectNameDisplay에게

0

다른 루비 설치를 사용해야합니다. 나는 그 목적으로 rbenv 를 사용 합니다.

# install your version of ruby
$ rbenv install 2.0.0-p247

# modify .ruby_version on current directory
$ rbenv local 2.0.0-p247

# proceed installing gems
$ gem install bundler

Disclamer : 나는 루비 사람이 아닙니다. 이것은 나를 위해 일했으며 당신이 루비 전문가 이고이 답변에서 변경해야 할 사항을 본다면 계속 진행하거나 의견을 말하십시오!


-1

이것은 Mac에서 나를 위해 일했습니다.

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


-1

Mojave를와 함께 사용하고 있습니다 rbenv.이 솔루션은 저에게 효과적입니다.

$ vi ~/.bash_profile

다음 행을 파일에 추가하십시오.

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

-2

내가 가진 문제 :-/Library/Ruby/Gems/2.6.0 디렉토리에 대한 쓰기 권한이 없습니다.

나를 위해 일한 솔루션 : sudo gem install rails -v 6.0.0


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.